onlywonhand/SDD-Seg_Structural_Damage_Dataset_for_Segmentation
Struct-Damage-Seg-V1 (Structural Damage Segmentation Dataset) ๐ ์๊ฐ (Introduction) ์ด ๋ฐ์ดํฐ์ ์ ํ ๋ชฉ ๊ตฌ์กฐ๋ฌผ(๊ต๋, ํฐ๋, ์น๋ฒฝ ๋ฑ)์ ์์ ํ์ง(Damage Detection)์ ๊ตฌ์กฐ๋ฌผ ๋ถ์ฌ ๋ถ๋ฅ(Structural Component Classification)๋ฅผ ๋์์ ์ํํ๊ธฐ ์ํด ๊ตฌ์ถ๋ ๋ฉํฐํ์คํฌ ๋ฐ์ดํฐ์ ์ ๋๋ค. AI Hub์ '์์ค๋ฌผ ๊ท ์ด ํ์ง ๋ฐ์ดํฐ' ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ฐ๊ณต๋์์ผ๋ฉฐ, ConvNeXt V2 ๋ฑ์ ์ต์ ๋ชจ๋ธ ํ์ต์ ์ต์ ํ๋ 14์ฑ๋ ์ธ๊ทธ๋ฉํ ์ด์ ๋ง์คํฌ๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค. ๐ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ (Structure) ๋ฐ์ดํฐ์ ์ ์๋ณธ ์ด๋ฏธ์ง, ์ ์ฒ๋ฆฌ๋ ๋ง์คํฌ, ๊ทธ๋ฆฌ๊ณ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด CSV ํ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. images/: ์๋ณธ ์ดฌ์ ์ด๋ฏธ์ง (JPG) masks/: ์ ์ฒ๋ฆฌ๋ ๋ง์คํฌ ์ด๋ฏธ์ง (PNG, Indexedโฆ See the full description on the dataset page: https://huggingface.co/datasets/onlywonhand/SDD-Seg_Structural_Damage_Dataset_for_Segmentation.
Struct-Damage-Seg-V1 (Structural Damage Segmentation Dataset)
๐ ์๊ฐ (Introduction)
์ด ๋ฐ์ดํฐ์ ์ ํ ๋ชฉ ๊ตฌ์กฐ๋ฌผ(๊ต๋, ํฐ๋, ์น๋ฒฝ ๋ฑ)์ ์์ ํ์ง(Damage Detection)์ ๊ตฌ์กฐ๋ฌผ ๋ถ์ฌ ๋ถ๋ฅ(Structural Component Classification)๋ฅผ ๋์์ ์ํํ๊ธฐ ์ํด ๊ตฌ์ถ๋ ๋ฉํฐํ์คํฌ ๋ฐ์ดํฐ์ ์ ๋๋ค.
AI Hub์ '์์ค๋ฌผ ๊ท ์ด ํ์ง ๋ฐ์ดํฐ' ๋ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ฐ๊ณต๋์์ผ๋ฉฐ, ConvNeXt V2 ๋ฑ์ ์ต์ ๋ชจ๋ธ ํ์ต์ ์ต์ ํ๋ 14์ฑ๋ ์ธ๊ทธ๋ฉํ ์ด์ ๋ง์คํฌ๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
๐ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ (Structure)
๋ฐ์ดํฐ์ ์ ์๋ณธ ์ด๋ฏธ์ง, ์ ์ฒ๋ฆฌ๋ ๋ง์คํฌ, ๊ทธ๋ฆฌ๊ณ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด CSV ํ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- images/: ์๋ณธ ์ดฌ์ ์ด๋ฏธ์ง (JPG)
- masks/: ์ ์ฒ๋ฆฌ๋ ๋ง์คํฌ ์ด๋ฏธ์ง (PNG, Indexed Color)
- train_labels.csv: ํ์ต์ฉ ๋ฐ์ดํฐ ์ธ๋ฑ์ค ๋ฐ ๋ฉํ๋ฐ์ดํฐ
- val_labels.csv: ๊ฒ์ฆ์ฉ ๋ฐ์ดํฐ ์ธ๋ฑ์ค ๋ฐ ๋ฉํ๋ฐ์ดํฐ
CSV ์ปฌ๋ผ ์ค๋ช
๐ท๏ธ ํด๋์ค ์ ์ (Class Definitions)
์ด ๋ฐ์ดํฐ์ ์ ์ด 14๊ฐ ์ฑ๋์ ์ถ๋ ฅ์ ๊ฐ์ ํ๊ณ ์ค๊ณ๋์์ต๋๋ค. ๋ชจ๋ธ ํ์ต ์ ์๋ ๋งคํ ํ ์ด๋ธ์ ์ฐธ๊ณ ํ์ญ์์ค.
1. ์์ ํด๋์ค (Damage Segmentation) - Channels 0~7
๋ง์คํฌ ์ด๋ฏธ์ง(PNG)์ ํฝ์ ๊ฐ์ ํด๋นํฉ๋๋ค.
2. ๊ตฌ์กฐ๋ฌผ ํด๋์ค (Structure Classification) - Channels 8~13
์ด๋ฏธ์ง ์ ์ฒด์ ๋ํ ๋ถ๋ฅ(Weakly Supervised) ๋ผ๋ฒจ์ ๋๋ค.
๐ ๏ธ ์ฌ์ฉ ๋ฐฉ๋ฒ (Usage Example)
์ด ๋ฐ์ดํฐ์
์ Dataset ํด๋์ค๋ก ๋ก๋ํ์ฌ 14์ฑ๋ ํ
์๋ก ๋ณํํ๋ Python ์์ ์
๋๋ค.
import cv2
import torch
import pandas as pd
from torch.utils.data import Dataset
import numpy as np
class StructureDamageDataset(Dataset):
def __init__(self, csv_path):
self.df = pd.read_csv(csv_path)
def __len__(self):
return len(self.df)
def __getitem__(self, idx):
row = self.df.iloc[idx]
# ์ด๋ฏธ์ง ๋ก๋
image = cv2.imread(row['image_path'])
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# ๋ง์คํฌ ๋ก๋ (PNG ํ์ผ์ 0~7์ ์์ ๊ฐ์ ๊ฐ์ง)
mask_png = cv2.imread(row['mask_path'], cv2.IMREAD_UNCHANGED)
# 14์ฑ๋ ํตํฉ ๋ง์คํฌ ์์ฑ (H, W, 14)
H, W = image.shape[:2]
target = np.zeros((H, W, 14), dtype=np.float32)
# [Ch 0~7] ์์ ์ ๋ณด One-hot Encoding
for cls_id in range(1, 8):
target[:, :, cls_id] = (mask_png == cls_id).astype(np.float32)
# [Ch 8~13] ๊ตฌ์กฐ๋ฌผ ์ ๋ณด (Weakly Supervised - ์ ์ฒด ์ฑ์ฐ๊ธฐ)
struct_id = int(row['structure_class_id']) # 0~5
target[:, :, 8 + struct_id] = 1.0
return image, target