본문 바로가기
AI/AI 부트캠프

[AI 부트캠프] DAY 107 - CV 프로젝트 8

by HOHHOH 2023. 12. 21.

[오늘의 일지]

프로젝트 - 모델 완성, 학습 결과

[상세 내용]

모델 완성

- 어제까지 1차 모델에서 머물러 있었던 모델이 어느 정도 막혔던 부분이 해결이 되면서 전체적으로 모델 학습을 거친 후에 결과를 지켜보게 되었습니다.

 

1차 모델 성능 저하 해결

- 1차 모델이 사고와 비사고를 분류하지 못했던 가장 큰 이유를 찾게 되었습니다. 이유는 비사고 데이터 없이 사고 데이터로만 학습을 해서 비사고와 사고 데이터가 섞여있는 test 데이터에서는 효과가 없었던 것으로 확인이 되었습니다.

 

기본 코드 형태

- 저희 조 모델의 큰 틀은 Efficientnet이었습니다. pre-trained 된 모델을 불러왔고 학습도 생각보다 잘 되는 것으로 보였습니다. 

# efficientnet architecture detail handling
class Efficientnet(nn.Module):
    def __init__(self):
        super().__init__()
        self._conv_stem = efficientnet_b0_pretrained._conv_stem
        self._bn0 = efficientnet_b0_pretrained._bn0
        self._blocks = efficientnet_b0_pretrained._blocks
        self._conv_head = efficientnet_b0_pretrained._conv_head
        self._bn1 = efficientnet_b0_pretrained._bn1
        self._avg_pooling = efficientnet_b0_pretrained._avg_pooling
        self._dropout = efficientnet_b0_pretrained._dropout

    def forward(self, x):
        x = self._conv_stem(x)
        x = self._bn0(x)
        for block in self._blocks:
            x = block(x)
        x = self._conv_head(x)
        x = self._bn1(x)
        x = self._avg_pooling(x)
        x = self._dropout(x)
        x = x.flatten(start_dim=1)
        return x
    
class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.efficientnet = Efficientnet()
        self.flatten = nn.Flatten()
        self.fc1 = nn.Linear(1280, 1)
        self.sig = nn.Sigmoid()

    def forward(self, x):
        x = self.efficientnet(x)
        x = self.fc1(x)
        x = self.sig(x)

        return x

 

학습 결과

- 어제 리뷰했던 베이스라인 코드보다도 더 좋은 0.38이라는 결과를 얻었는데 저희 조가 처음 설정했던 0.55라는 점수에 근접하기 위해서 마지막 남은 하루를 어떻게든 잘 활용하면 좋을 거 같습니다.

 

[마무리]

 드디어 학습을 마치고 어느 정도 성과가 있을만한 결과가 나왔습니다. 시간이 부족한 상황에서 마지막이니까 모든 조원들이 학습에만 모여서 다 같이 작업을 했기 때문에 진전이 있었던 거 같습니다. 프로젝트를 여러 번 거치면서 느끼는 거지만 혼자서는 절대 정해진 시간에 할 수 없는 것들도 많다는 것을 다시 한번 깨닫게 되는 것 같습니다.

반응형

댓글