시멘틱 세그멘테이션 요령
2021년 봄
Yuanhao Wu
수석 알고리즘 엔지니어
2023년부터 마켓에 출시되는 제품의 경우, 로고와 로고 위치 변경이 예정되어 있습니다. 이에 실제 제품은 사진 및 영상 속 이미지와 다를 수 있습니다.
Z by HP 데이터 사이언스 글로벌 앰배서더인 Yuanhao Wu의 콘텐츠는 HP 제품 지원을 통해 제작되었습니다.
지난달 저는 Kaggle의 'HuBMAP - Hacking the Kidney' 대회에 출전하면서 시간을 보냈습니다. 이 대회의 목표는 성공적이고 강력한 사구체 FTU 검출기를 구현하는 데 있었는데, 이는 전형적인 바이너리 시멘틱 세그멘테이션 과제입니다. 이번이 제 두 번째 시멘틱 세그멘테이션 대회인데, 저희 팀은 43위를 차지하여 은메달을 목에 걸었습니다.
레이블이 잘못 붙여진 샘플 때문에 공용 리더보드가 완전히 망가지고 여러 경쟁자가 혼란에 빠졌지만, 그래도 여전히 시멘틱 세그멘테이션 요령을 선보일 수 있는 좋은 대회였습니다.
Lovasz-Hinge 손실 함수로 운을 떼고 싶은데 이 함수는 'Lovász Hinge: 서브모듈 손실에 대한 새로운 콘벡스 대용물' 논문에서 인용한 것으로, 많은 대회에서 유용성이 입증되었습니다. 유명 segmentation_models.pytorch 라이브러리에서 훌륭한 구현 사례를 찾아보실 수 있어요. 손실 함수가 아무리 강력해도 훈련에 애를 먹는 경우가 있습니다. 이럴 때는 Lovasz-Hinge 손실 함수를 주사위 손실 또는 교차 엔트로피 손실 등 다른 손실 함수와 결합하면 문제가 해결됩니다. 주사위 손실 함수로 모델을 훈련하다 Lovasz-Hinge 손실 함수로 전환하는 2단계 전략을 활용하는 참가자도 있습니다.
모델 부분에서는 거의 모든 참가자가 Unet과 그 변수를 활용합니다. 대회 우승자는 솔루션 게시물에서 고전 Unet과 하이퍼컬럼, 어텐션 메커니즘을 함께 활용했다고 밝혔습니다. 저 또한 두 요령을 활용했는데, 아쉽게도 결과가 눈에 띄게 좋아지지는 않았습니다. 아래에 나와 있는 하이퍼컬럼은 매우 직관적인데, 다른 레이어에서 크기가 조정된 기능 맵을 연결하여 모델 용량을 향상합니다.
Attention Unet은 'Attention U-Net: 췌장을 찾는 위치 학습' 논문에서 나온 개념인데, 아래와 같이 저자는 Unet의 디코더 부분에 AG(Attention Gate)를 추가했습니다. Kaggle 대회에서 주로 사용되는 어텐션 메커니즘은 논문에 나와 있는 내용과는 살짝 다릅니다. 우승자의 게시물이나 segmentation_models.pytorch 레포지토리를 참고해 보세요.
아무튼 SCSE, CBAM과 같은 일반적인 어텐션 구조가 여러 개 있는데, 대회에 참가한 유명 Bestfitting 팀은 CBAM을 선호한다고 밝힌 바 있습니다. 여기와 여기에서 자세한 지침을 살펴보실 수 있습니다.
저 역시 대회에서 딥 슈퍼비전을 시도했었는데요. 기본적으로 딥 슈퍼비전은 다양한 규모의 손실을 계산합니다. 구현하기는 쉽지만, 유의미한 성능 향상은 없었습니다.
이 대회에서는 원본 입력 이미지가 상당히 커서 참가자들은 먼저 원본 이미지를 작은 패치로 분할한 후 모델을 훈련하고 추론해야 합니다. 이때 정보가 손실되지 않도록 슬라이딩 단계가 패치 크기보다 작아져 일부 겹치는 영역이 생기게 됩니다. 이런 과정에서 모델이 경계 영역에서 여전히 저조한 성능을 보이는 점을 발견했고, 따라서 출력을 재구성하려 가중치 접근 방식을 활용했습니다. 아래와 같이 픽셀이 여러 번 예측된 경우(녹색 영역) 예측에 낮은 가중치를 부여했고, 픽셀이 경계 영역에 있으면(패치2) 내부 영역에 있는 픽셀(패치1)에 더 높은 가중치를 부여했습니다. 이렇게 하니 효과가 엄청났습니다.
시맨틱 세그멘테이션을 훈련하려면 많은 연산이 이루어져야 합니다. 저는 주로 인코더로 EfficientNet과 함께 U-Net을 활용했는데, 현재 사용 중인 HP Z4 워크스테이션의 24GB RTX 6,000 GPU 덕분에 640 x 640 이미지와 배치 크기 16으로 모델을 훈련할 수 있었습니다. 제 훈련 세트는 18,000개의 이미지로 구성되어 있는데, 에포크에 17~18분밖에 걸리지 않습니다. 컴퓨팅 성능이 떨어지면 샘플링 팁을 활용해 보면 좋습니다. 음수 샘플은 양수 샘플보다 훨씬 많으니 음수 샘플을 전부 사용하기보다는 일부를 무작위로 샘플링하면 됩니다. 이렇게 하면 융합에 걸리는 시간이 줄어드는 데다 훈련 시간도 절약할 수 있습니다.
마지막으로 항상 로컬 교차 검증을 신뢰하시기 바랄게요. 일부 참가자는 레이블이 잘못 지정된 공용 테스트 샘플을 오버피팅하려고 했으나, 결과적으로 좋지 못한 결과를 보였습니다. 저희는 CV 점수를 높이려고만 노력했고, 결국 100단계 이상 오르는 성과를 거두었죠. 안타깝게도 비공개 점수가 가장 높았던 건 제출하지 못했습니다. 제대로 제출만 했다면 금메달을 땄을 텐데요!
고지 사항
국가/지역 및 언어를 선택하십시오.
Close Country/Region Selector Dialog- Africa
- Afrique
- België
- Belgique
- Česká republika
- Danmark
- Deutschland
- Eesti
- España
- France
- Hrvatska
- Ireland
- Italia
- Latvija
- Lietuva
- Magyarország
- Middle East
- Nederland
- Nigeria
- Norge
- Österreich
- Polska
- Portugal
- România
- Saudi Arabia
- Slovenija
- Slovensko
- South Africa
- Suisse
- Suomi
- Sverige
- Switzerland
- Türkiye
- United Kingdom
- Ελλάδα
- България
- Казахстан
- Србија
- Україна
- ישראל
- الشرق الأوسط
- المملكة العربية السعودية
HP Worldwide
국가/지역 및 언어를 선택하십시오.
- Africa
- Afrique
- América Central
- Argentina
- Asia Pacific
- Australia
- Bangladesh
- België
- Belgique
- Bolivia
- Brasil
- Canada
- Canada - Français
- Caribbean
- Česká republika
- Chile
- Colombia
- Danmark
- Deutschland
- Ecuador
- Eesti
- España
- France
- Hong Kong SAR
- Hrvatska
- India
- Indonesia
- Ireland
- Italia
- Latvija
- Lietuva
- Magyarország
- Malaysia
- México
- Middle East
- Nederland
- New Zealand
- Nigeria
- Norge
- Österreich
- Pakistan
- Paraguay
- Perú
- Philippines
- Polska
- Portugal
- Puerto Rico
- România
- Saudi Arabia
- Singapore
- Slovenija
- Slovensko
- South Africa
- Sri Lanka
- Suisse
- Suomi
- Sverige
- Switzerland
- Türkiye
- United Kingdom
- United States
- Uruguay
- Venezuela
- Việt Nam
- Ελλάδα
- България
- Казахстан
- Србија
- Україна
- ישראל
- الشرق الأوسط
- المملكة العربية السعودية
- ไทย
- 中华人民共和国
- 臺灣 地區
- 日本
- 香港特別行政區
- 한국
©2024 HP Development Company, L.P. 이곳에 포함된 정보는 예고 없이 변경될 수 있습니다.