Recycle Trash 대회에 대한 Overview
1. COCO Dataset
1.1 COCO Format
- 모든 이미지를 뭉쳐서 3개의 batch로 나눴고, train valid test에 대한 구분은 json file로 구분되어져있다.
- 해당 영역이 어떤 class를 나타내는지 알려주기 때문에 channel이 필요가없다
1.2 DataLoader
1) data_dir: 데이터 셋 경로
2) mode
- train에 사용될지 test에 사용될지 구분 (mode="train", mode="test")
- train일 경우 image_infos도 같이 return
3) ㅇtransform
- image size 조절 및 data format 변환 등의 전처리 작업
Train 모드 코드 설명
image_id = self.coco.getImgIds(imgIds=index)
image_infos = self.coco.loadImgs(image_id)[0]
>>>
image_id
=> 0
image_infos
=>
{'license':0,
'url': None,
'file_name': 'batch_01_vt/0003.jpg',
'height': 512,
'width': 512,
'date_captured':None,
'id':0}
cv2를 이용하여 image 불러오기
- 255로 나누어 정규화를 해주면 이미지가 제대로 보인다
images = cv2.imread(os.path.join(dataset_path, image_infos['file_name']))
images = cv2.cvtColor(images, cv2.COLOR_BGR2RGB).astype(np.float32)
images /= 255.0
시각화 할때에는
len(idx['segmentation'])[0]으로 sort를 하여 큰 순서대로 표시한다
background -> plastic bag -> generaltrash -> ... -> plastic bag
Transform
- Albumantations lib을 사용하면
ToTensorV2()를 사용하여 numpy (8 ,512, 512, 3)를 tensor (8, 3, 512, 512)로 변환해줘야한다
2. EDA
2.1 Image 분석
- 시각화 하여 확인해보자
2.2 class 분석
2.3 가설 검정
1) ‘Plastic’과 ‘Plastic bag’은 따로 라벨링 되었을까?
2) Plastic bag 내부의 재활용들도 라벨링이 되어있을까??
하지만 Plastic bag에 덮혀져있지 않은 부분들은 다른 클래스로 잘 분류되어있다
이미지에 돌멩이가 같이 labeling되어있는 것들은 이미지를 제거하거나 돌멩이를 background로 다시 labeling 하면 더 나은 성능을 기대해 볼 수 있다
3. 평가 Metric
3.1 mIoU
Mean IoU: 모두 구해진 IoU를(배경클래스를 포함) 평균낸다
4. Baseline Code
4.1 torchvision.models.segmentation.fcn_resnet50
- 마지막 부분 분류를 해당 클래스의 수에 맞게 변경해야한다.
4.2 loss / optimizer 설정
- Softmax + Cross-Entropy loss
'부스트캠프 AI Tech 2기 > 2기 CV P-Stage-Semantic Segmentation' 카테고리의 다른 글
Semantic Segmentation 대회에서 사용하는 방법들 1 (0) | 2021.10.20 |
---|---|
High Performance를 자랑하는 Unet 계열의 모델들 (0) | 2021.10.20 |
FCN의 한계를 극복한 model 2 성능적인 측면에서의 극복 (0) | 2021.10.20 |
Semantic Segmentation의 기초와 이해 (0) | 2021.10.19 |
Semantic Segmentation - Intro (0) | 2021.10.18 |