10.18
1. 강의 듣기 & 정리
- Introduction
- Competition Overview(EDA&Metric) (📝강의정리)
2. baseline 코드 돌려보기
- ERROR
- error message : "Error loading preloads : Could not find renderer"
- 해결 : 관련 라이브러리 설치
apt-get update
apt-get install -y libsm6 libxext6 libxrender-dev
- CUDA OOM
- restart를 하고 batch size를 6으로 줄임
- gpu 어떻게 쓰고 있는지 보고 싶음
- Unet++ baseline 코드 결과 : miou 0.219 (굉장히 낮음)
10.19
1. 강의 듣기 & 정리
- Semantic Segmentation의 기초와 이해(📝강의정리)
2. Special Mission
- FCN8 / FCN16 / FCN32 구현
-
더보기FCN8
# 모델 참고 코드 # https://github.com/wkentaro/pytorch-fcn/ import torch import torch.nn as nn class FCN8s(nn.Module): def __init__(self, num_classes=11): super(FCN8s, self).__init__() def CBR(in_channels, out_channels, kernel_size=3, stride=1, padding=1): return nn.Sequential(nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, stride=stride, padding=padding), nn.ReLU(inplace=True) ) # conv1 self.conv1_1 = CBR(3, 64, 3, 1, 1) self.conv1_2 = CBR(64, 64, 3, 1, 1) self.pool1 = nn.MaxPool2d(2, stride=2, ceil_mode=True) # conv2 self.conv2_1 = CBR(64, 128, 3, 1, 1) self.conv2_2 = CBR(128, 128, 3, 1, 1) self.pool2 = nn.MaxPool2d(2, stride=2, ceil_mode=True) # conv3 self.conv3_1 = CBR(128, 256, 3, 1, 1) self.conv3_2 = CBR(256, 256, 3, 1, 1) self.conv3_3 = CBR(256, 256, 3, 1, 1) self.pool3 = nn.MaxPool2d(2, stride=2, ceil_mode=True) # Score pool3 -> 1x1 Conv로 채널 num_classes로 맞춰주는 과정 self.score_pool3_fr = nn.Conv2d(256, num_classes, kernel_size=1, stride=1, padding=0) # conv4 self.conv4_1 = CBR(256, 512, 3, 1, 1) self.conv4_2 = CBR(512, 512, 3, 1, 1) self.conv4_3 = CBR(512, 512, 3, 1, 1) self.pool4 = nn.MaxPool2d(2, stride=2, ceil_mode=True) # Score pool4 self.score_pool4_fr = nn.Conv2d(512, num_classes, kernel_size=1, stride=1, padding=0) # conv5 self.conv5_1 = CBR(512, 512, 3, 1, 1) self.conv5_2 = CBR(512, 512, 3, 1, 1) self.conv5_3 = CBR(512, 512, 3, 1, 1) self.pool5 = nn.MaxPool2d(2, stride=2, ceil_mode=True) # fc6 self.fc6 = nn.Conv2d(512, 4096, 1) self.relu6 = nn.ReLU(inplace=True) self.drop6 = nn.Dropout2d() # fc7 self.fc7 = nn.Conv2d(4096, 4096, 1) self.relu7 = nn.ReLU(inplace=True) self.drop7 = nn.Dropout2d() # Score self.score_fr = nn.Conv2d(4096, num_classes, kernel_size=1) # Upscore2 using deconv self.upscore2 = nn.ConvTranspose2d(num_classes, num_classes, kernel_size=4, stride=2, padding=1) # UpScore2_pool4 using deconv self.upscore2_pool4 = nn.ConvTranspose2d(num_classes, num_classes, kernel_size=4, stride=2, padding=1) # UpScore8 using deconv self.upscore8 = nn.ConvTranspose2d(num_classes, num_classes, kernel_size=16, stride=8, padding=4) def forward(self, x): h = self.conv1_1(x) h = self.conv1_2(h) h = self.pool1(h) h = self.conv2_1(h) h = self.conv2_2(h) h = self.pool2(h) h = self.conv3_1(h) h = self.conv3_2(h) h = self.conv3_3(h) pool3 = h = self.pool3(h) # Score score_pool3c = self.score_pool3_fr(pool3) h = self.conv4_1(h) h = self.conv4_2(h) h = self.conv4_3(h) pool4 = h = self.pool4(h) # Score score_pool4c = self.score_pool4_fr(pool4) h = self.conv5_1(h) h = self.conv5_2(h) h = self.conv5_3(h) h = self.pool5(h) h = self.fc6(h) h = self.drop6(h) h = self.fc7(h) h = self.drop7(h) h = self.score_fr(h) # Up Score I upscore2 = self.upscore2(h) # Sum I h = upscore2 + score_pool4c # Up Score II upscore2_pool4c = self.upscore2_pool4(h) # Sum II h = upscore2_pool4c + score_pool3c # Up Score III upscore8 = self.upscore8(h) return upscore8
10.20
1. 강의 듣기 & 정리
- FCN의 한계를 극복한 모델들 Ⅰ
- FCN의 한계를 극복한 모델들 Ⅱ
2. Special Mission
- DeconvNet / DilatedNet / SegNet / DeepLabV1 구현
3. Models에 fcn 모델 추가
- backbone(base_models 폴더)에 vgg 추가
- vgg를 backbone으로하고, pretrained weights를 사용하는 fcn 모델 추가
- error 안 뜨는지 확인 완료
- 참고 자료 : https://github.com/Tramac/awesome-semantic-segmentation-pytorch/tree/5843f75215dadc5d734155a238b425a753a665d9
GitHub - Tramac/awesome-semantic-segmentation-pytorch: Semantic Segmentation on PyTorch (include FCN, PSPNet, Deeplabv3, Deeplab
Semantic Segmentation on PyTorch (include FCN, PSPNet, Deeplabv3, Deeplabv3+, DANet, DenseASPP, BiSeNet, EncNet, DUNet, ICNet, ENet, OCNet, CCNet, PSANet, CGNet, ESPNet, LEDNet, DFANet) - GitHub - ...
github.com
10.21
1. 강의 듣기 & 정리
- High Performance를 자랑하는 U-Net 계열의 모델들
- Semantic Segmentation 대회에서 사용하는 방법들 1
2. Special Mission
- DeepLabV2 / DeepLabV3 / DeepLabV3+ 구현
3. K-fold 구현
- straitified k fold(class 개수 균등하게 split) 구현
- k개의 train, valid용 annotation file 생성 코드 작성
- object detection 때 사용했던 코드를 segmentation 용으로 바꾸고, parser 추가(K, seed)
4. Inference
- vgg-FCN 훈련 모델 inference 해보려고 했으나, parser_config 형식과 맞춰야해서 못 함
10.22
1. 강의 듣기 & 정리
- Semantic Segmentation 대회에서 사용하는 방법들 2
2. Special Mission
- Unet / Unet++ 구현
3. K-fold용 train, validation set 분할된 json 파일 사용시 Key error 발생
- k를 5로 하여 train, valid set을 5 set을 만들었을 때 각각 없는 image index에 대한 key error 발생
- image index를 0부터 맞춰주고 해당 이미지에 대한 annotation 의 image_id도 바뀐 index에 맞게 바꿔 주는 함수 구현하여 json 파일 저장 전에 실행
'TIL > Boostcamp AI tech' 카테고리의 다른 글
[Segmentation] FCN, Semantic Segmentation의 기초와 이해 :: seoftware (0) | 2021.10.20 |
---|---|
[Segmentation] COCO Dataset format & EDA & Metric (0) | 2021.10.19 |
[Boostcamp]Week9-Day39. Object Detection Library :: seoftware (0) | 2021.09.30 |
[Boostcamp Lv2][P stage] Week9-Day38. 2 stage detector :: seoftwa (0) | 2021.09.30 |
[Boostcamp Lv2][P stage] Week9-Day37. Object Detection :: seoftware (0) | 2021.09.27 |
댓글