[대회 링크]
https://maic.or.kr/competitions/8/infomation
2021년 하반기의 큰 이벤트 중 하나!였던 MAIC 병리영상 챌린지.
중간고사가 끝난 날부터 한 달 가까이 진행했다.
KUBIG 에서 나 포함 6분이 모여서 함께했다.
할말하않
[task]
소아 장 병리 이미지에서 ganglion을 segment 해서 그 면적을 측정하는 task ("장 신경절 영역 정량화")
이 ganglion의 면적이 작을수록 장이 수축을 잘 못해서 대변 활동의 장애로 이어진다고 한다. 1
[DNN 관련 깨달은 점 ]
1. WSI 이미지 포멧
병리 영상에서는 매우매우 화질이 좋은 이미지를 사용한다. 이를 한 번에 load 하고 보내기에는 무리가 있기 때문에 (1) 이미지를 tile 형태로 저장하고 (2) 여러가지 scale 별로 이미지를 쌓아서 피라미드 형태로 저장한다. 그래서 WSI 이미지에서는 해상도를 구하는 게 까다롭다. 이걸 이해해야 주최측에서 제공한 inference 코드를 이해할 수 있었는데, 이 과정도 꽤 어려웠다.
이미지 해상도가 너무 컸기 때문에 패치를 나눠서 학습, inference를 했다. 개인적으로 그렇게 되면 너무 patch들이 독립적으로 학습될 것 같아서, overlapping하게 패치를 나눠서 학습을 해보면 어떨까, 하는 의견을 냈고 다들 좋다고 해주셨다. 이건 AlexNet 에서 overpooling을 보고 제안한 것이다. 물론 지금은 overpooling 을 쓰는 모델은 본 적이 없지만 거기서 언급했던 효과가 떠올라서! 하지만 inference 에서 overlapping 하게 나누어진 batch를 어떻게 sum 할 것인가에 대한 고민을 해보지 않아서 이 의견은 실현되지 못했다. 추후에 대회가 끝나고 Hann windows 에 대한 글을 팀원분이 발표해주셨는데, 이렇게 overlapping 을 해도 inference를 잘 실현할 수 있었겠구나 싶었다.
2. loss
위의 이미지를 보면 알겠지만 우리가 segment 해야 하는 영역의 크기는 매우매우 작다. 그래서 대부분의 픽셀이 0인 상황에서 극소량의 ganglion만 segment 하는 게 어려운 일이었다. 어떻게 이 작은 영역을 잡을 수 있을 것인가? 를 해결할 수 있어야 했다.
=> 그래서 팀원분이 loss를 가공해보면 어떻겠냐고 제안을 하셨다. ganglion 영역이 매우 작으니까, 그 영역의 크기에 대한 제한 term? 을 넣어보자는 의견이었다. 관련해서 내가 relu에서 threshold를 바꿔서 적용해보면 어떨까, 제안을 드렸고 그 분이 만드셔서 성능을 개선시켰다. 갑자기 성능이 엄청 뛰어올라서 예산 4등으로 본선에 올라갔다. 이때 내가 의견 내면 내가 구현하는 게 제일 깔끔하다는 걸 깨달았다.
결선에서는 SOTA의 loss를 접목해보기로 했다. SOTA 논문을 읽으면서 BCE loss 만 쓰는 모델은 거의 없다고 느꼈다. 대부분 다른 loss를 하나씩 더 쓰고 있었다. 이걸 접목해보면 어떨까 싶었고, 정확도를 또 한번 크게 올릴 수 있었다.
이런 기본적인 것에서부터 질문을 해야 한다고 느꼈다. 왜 이 loss를 써야 하지? 다른 loss를 쓸 방법은 없을까? 이런 것들
3. 잘못 label된 이미지
난 당근 이런 오류는 없을 줄 알았는데 생각보다 많았다. 이상하리 만치 정확도가 낮은 친구들을 보면 거의 labeling/masking이 잘못 되어 있었다.
4. model
사전 학습된 모델을 가져올 때는, 사전 학습된 이미지의 크기에 맞게 input을 바꿔주는 게 학습에 더 용이하고 제대로 된 inference 결과를 가져올 수 있다고 한다.
[결과]
예선 4등, 그리고 본선 7등으로 우리 팀은 수상하지 못했다. 1등과의 평가 지표 차이가 대략 0.2 정도? 났던 것 같다. 꽤 크다.
[기타 깨달은 점]
역시 팀장과 팀원이 중요한 것 같다.
어떻게 해야 잘 leading을 할 수 있을 것인가.
어떤 follwer 가 있을 때 team이 무너지는가.
그리고 능동적으로 움직이는 자세가 무엇인지 배운 것 같았다.
또 동시에 난 평생 능동적인 사람이 되지 못할지도를 느꼈다...
- 허슈스프렁병 [본문으로]
'딥러닝 > 프로젝트' 카테고리의 다른 글
[외부프로젝트] COMPAS 김해시 CCTV 위치 선정 (0) | 2022.09.29 |
---|---|
[외부프로젝트] 2021 데이터 크리에이터 캠프 후기 (0) | 2021.10.19 |
[Kaggle] CT Medical Image - (6) 결과 정리 및 시각화 (0) | 2021.10.03 |
[Kaggle] CT Medical Image - (5) Augmentation (0) | 2021.10.01 |
[Kaggle] CT Medical Image - (4) 성능지표 계산하기 (0) | 2021.09.30 |
댓글