(Event/Seminar후기) 건양대학교 Health Datathon 2019 유방암 검진대회에 참가했습니다!

(Event/Seminar후기) 건양대학교 Health Datathon 2019 유방암 검진대회에 참가했습니다!

지난 11월 29일 개최된 Konyang Health Datathon 2019에 다녀왔습니다! 저희 팀 Paten은 유방암 검진 종목에 참가해 13등을 기록했습니다.

png

지난 11월 29일 개최된 Konyang Health Datathon 2019에 다녀왔습니다! 저희 팀 Paten은 유방암 검진 종목에 참가해 13등을 기록했습니다. F1 Score 0.473을 기록해 다소 처참하지만 중간에 발생했던 다양한 이슈들을 유연하게 대처하는 방법을 알아 온 것에 만족하려고 합니다. 대회 시작 전 2주일여 간 빡세게 도메인 지식을 습득하고 저희 팀만의 베이스라인 코드를 짜며 여러모로 준비를 많이 해 갔는데, 준비한 것의 절반도 채 못 보여주고 나와 너무 아쉬운 대회였습니다.

png

1등 팀의 솔루션이 충격적일 정도로 단순해서 대회가 끝나고 후유증이 상당히 심했었네요. 순위권에 대한 욕심이 너무 과해도 일을 망친다는 사실을 새삼 깨달은 소중한 경험이었습니다 ㅠㅠ
Pre-trained model을 사용할 수 없는 여파가 커서인지 1등 팀도 정확도가 0.7을 넘지 못했습니다.

png png

대회는 무박 2일간 건양대학교 대전캠퍼스 의과대학 명곡홀에서 진행되었습니다. 병원 건물 증축 공사가 진행 중인지 대학 건물 곳곳이 공사판이라 대회 진행 장소를 찾기가 좀 어려웠네요. 현수막과 안내 팻말도 명곡홀 근처로 가야 드문드문 보여서 네이버 지도의 힘을 많이 빌려 도착했습니다.

png png png

대회 시작에 앞서, 각 종목별로 의사 선생님들께서 간단히 안저와 유방 X-RAY 영상에 대한 소개를 해 주셨습니다. 이후 ETRI 김명준 원장님의 기조 강연이 이어졌는데, 개발자 분들이 듣기엔 다소 지루한 내용들이라 다들 큰 호응은 없으시더라구요.
뭔가 형식적인 대회라는 느낌을 지울 수 없었던 것이 개막식에 국민의례를 했다는 점입니다. 개발 대회에서 국민의례에 애국가 제창까지 한 경험이 많지 않아 신기했습니다.

png

png

기조 강연까지 모두 듣고 난 후 NSML 서버가 열리고 대회가 정식으로 시작되었습니다. 대회의 종목이 안저 영상 분류와 유방 영상 분류 두 종류로 구분되었기 때문에, 자리 배치를 종목 단위로 섞어서 해 주셨습니다. 팀 단위로 책상을 모아 자리를 구성해 주는 다른 대회와는 다른 방식이라 조금 낯설었네요.

이번 대회는 스탭 분들이 대단히 친절했으나…대회는 불친절한 부분이 없잖아 있었습니다. 대회 공식 페이지에 pre-trained model 사용 가능 여부가 공지되지 않아 대회 시작 사흘 전쯤에 저희 팀은 따로 메일을 보내 세세히 체크했습니다. 주중이라도 공지가 되었으면 좋았겠지만, 대회 당일 개막식에 pre-trained model은 사용할 수 없다고 공지해 주시더라구요.

또한 원활히 돌아가는 베이스라인이 Keras로만 제공되어 상당히 고생했던 기억이 납니다. Pytorch 코드의 경우 F1-score가 0으로 계산되는 문제와 함께 Inference 시 계속 OOM 에러가 발생해서 해당 부분을 수정하는 데 많은 시간을 할애했습니다. 두 베이스라인의 기능이 동일하지 않았다는 점도 돌이켜 보니 속상한 부분이네요.

개발 이슈 뿐 아니라 데이터셋과 관련한 이야기도 사전에 돌았었습니다. 대회 주최측에서 미리 공개한 안저 샘플 이미지는 심지어 전문의가 봐도 의문을 제기하실 정도로 적절한 샘플인지 이야기가 좀 있었습니다. 캐글과는 달리 비공개 데이터로 진행되는 대회이다 보니 데이터를 보지 못한 채 눈을 가리고 학습을 진행해야 한다는 점도 특이했고요.

결론적으로 다음 날 대회 종료 후 뚜껑을 열어 보았을때 힘이 탁 빠질 수밖에 없었습니다. 1등팀 솔루션이 EfficientNet-b0 1000epoch 이었거든요. 패자의 변명이지만, 다양한 feature extraction 기법들을 테스트할 수 있는 시간이 주어지지 않아 사실 누가누가 빠르게 모델을 셋업하나 겨루는 대회 같았습니다.

우승팀 후기 정리

  • 유방암 분류대회 1등팀(‘Pyknic’, 0.6505) 전략
    • 모델: Keras EfficientNet-b0 1000epoch, No ensemble
    • 이미지 사이즈: 256 X 256 (원본 데이터는 440 X 360)
    • Augmentation strategies: center crop(254*254), vertical/horizontal flip, normalization(0~1)
    • Optimization strategies: ADAM Optimizer, Lr 0.0001
  • 유방암 분류대회 2등팀(‘TackBely’, 0.6307) 전략
    • 모델: VggNet (60 epoch, batch_size 16, No Ensemble)
    • Augmentation strategies: Standardization, flip
    • 데이터셋 샘플링 : Random shuffle
  • 안저 분류대회 1등팀(‘행복코딩’, 94.559, Naver Speech대회 참가경력 있음)
    • 모델: Keras VGGNet 100 epoch
    • 이미지 사이즈: 350 X 450으로 키워 진행
    • 기타 특징
      • 가우시안 필터 사용 안함: 이전 캐글 대회 우수팀 전략에 가우시안 필터를 사용하는 예시가 있었으나 오히려 성능이 좋지 않아 제거(이것이 성능하락 요인인지는 ablation study 필요)
      • 이전 speech 대회에서 label smoothing을 적용해 본 결과 성능이 좋았던 경험이 있어 이번에도 적용해 봄. (ablation study 필요)
  • 안저 분류대회 2등팀(‘요를레이 요를레이히’, 93.849)
    • 모델: ResNet18, 34를 비롯 다양한 12개 모델의 결과물을 Average Ensemble(Soft voting)
    • 이미지 사이즈: 모델에 따라 다양한 인풋 사이즈 적용
    • Augmentation strategies: 이미지 crop은 적용하지 않았고, 가우시안 필터로 이미지 전처리

EfficientNet 1000에폭은 볼수록 충격적이네요. 저희는 준비해 간 코드를 거의 써보지 못하고 현장 이슈 때문에 부랴부랴 아침이 되어서야 XceptionNet을 이용해 중위권에 들 수 있었습니다. 이번 대회 저희 팀의 패인은 너무 욕심이 과했다는 점입니다. 대회가 끝나는 날 아침 우승팀 후기까지 모두 듣고 난 후 한동안 화가 머리 끝까지 나 그냥 멍때리며 앉아 있었습니다.

png png

그래도 대회 중 경품으로 아이패드 에어에 당첨되서 나름의 수확(?)은 건져 왔네요. 이대로 끝내기는 많이 아쉽기 때문에, 저희 팀은 앞으로 대회 중 미처 사용하지 못한 코드들을 발전시켜 논문을 써 보려고 합니다.
올해는 너무 성급해서 잘 될 일도 오히려 그르친 케이스가 다소 많았던 것 같습니다. 내년에는 올해의 소중한 경험들을 바탕으로 보다 진지하고 차분히 대회에 임할 수 있을 것 같습니다.

이번 대회에서 느낀 점.

1. 대회 준비는 대회의 기간과 수준에 맞게 준비를 해야겠습니다. 너무 과한 준비는 오히려 안하느니만 못함을 다시 한번 깨달았습니다.
2. 데이터셋의 크기가 작을 땐 너무 깊은 모델을 사용하지 않아야 합니다. DenseNet, XceptionNet과 같이 무거운 네트워크들은 소규모 데이터셋에 대해 오버피팅의 가능성이 존재합니다.
3. 마찬가지 이유로, 과도한 앙상블 전략은 독이 될 수 있습니다.