월간 데이콘 제 2회 컴퓨터 비전 학습 경진대회

알고리즘 | CV | 분류 | 제어 | Accuracy

  • moneyIcon Prize : 100만원
  • 1,201명 마감

 

Pytorch - EfficientNet-B0(pretrained) (LB:0.7869)

2021.02.15 17:34 15,973 Views language

저는 TF Keras 로 계속 코드를 작성해오다가 최근 torch를 통해 모델 구성을 하고 있습니다.

그래서 일부 적절하지 않은 코드가 있을 수 있습니다. 이런 부분은 피드백 부탁드립니다. 아직 torch 가 어색하네요 ㅠㅠ



=====================================================================================
-코드 설명-

데이터 로더를 통해 image를 3 channel로 메로리에 로드한 후 사용합니다.

transforms를 통해 random flip을 사용하였습니다.

모델은 EfficientNet-B0 pretrained imagenet을 사용하였고 output만 해당 대회에 맞게 수정하였습니다.

해당 코드에서는 데이터들을 5개의 fold로 나누지만 1fold만 실행을 합니다.

5fold를 실행하기 위해서는 for문에서 5번 반복하도록 수정하시면 됩니다.

2070SUPER에서 30epoch, 47 batch size 로 훈련 시키면 1fold당 약 3시간 소요 됩니다.

validation 성능이 개선될 때마다 가중치 저장을 해주었습니다.

훈련된 모델을 로드한 후 test 데이터를 추론하고 제출했을 때  accuracy 0.7869 점을 달성했습니다.
=====================================================================================

5fold, epoch 늘리기, TTA를 적용하면 성능이 80.xxx~81.xxx 정도 나옵니다.

Code
로그인이 필요합니다
0 / 1000
DMD
2021.02.15 17:48

코드 공유 감사합니다!

당쇠
2021.02.16 16:45

수고하셨어요~ 

닉네임
2021.02.17 16:51

삭제된 댓글입니다

최정명
2021.02.17 16:51

32 GB 입니다.

만약 램이 부족하시면 하드에서 배치단위로 불러오는 방법으로 하시면 됩니다. 해당 함수도 코드에 정의되어 있습니다.

JayMaro
2021.02.21 11:49

감사합니다~

이현규
2021.02.25 10:20

안녕하세요. 공유해주신 코드가 많이 도움 되었습니다. 감사합니다.
혹시 cv2.imread로 image들 load할 때, 시간이 어느정도 소요되나요?
저는 colab환경에서 구글 드라이브의 데이터를 로드하는데 예상 외로 시간이 엄청 오래걸려서요.
다른 환경이나 다른 분들은 어떠신지 궁금합니다.

최정명
2021.02.25 14:31

구글 드라이브를 통해 Input/Output을 하면 local에 있는 드라이브에서 하는것 보다 시간이 꽤 많이 차이 납니다.
다른 분들도 colab에서 똑같이 오래 걸릴거예요.

저는 로컬 환경에서 실행을 해서 약 73초가 걸린 것 같네요.

이현규
2021.02.25 16:27

답변 감사합니다 ^^
더 좋은 결과 있으시길 바래요!

최정명
2021.02.26 15:15

DataLoader의 num_workers를 적절한 값으로 튜닝 해주면 더 빠른 속도로 학습을 하실 수 있습니다.
특히 loader에서 많은 전처리 작업이 있을 경우 체감이 많이 됩니다.

정리를 잘 해 둔 곳이 있어 공유합니다. https://jybaek.tistory.com/799