분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
딥페이크 변조 영상 탐지 AI 경진대회
90 이상은 어떤식으로 학습하셨나요 ㅠㅠ
어떤 식으로 진행했는지 궁금합니다.
<얼굴 crop>
저는 MTCNN 으로 얼굴 부분만 추출하여 학습을 했습니다.
<데이터 분리>
이름별로 데이터를 나누었는데 real과 fake에 겹치는 이름은 모두 훈련데이터로 사용했습니다.
<전처리>
이미지 전처리로는 랜덤하게 밝기값만 변화시켜주고 비율을 최대한 망가뜨리지 않고 가져가기 위해 제공된 이미지의 width, height 평균으로 패딩을 넣은뒤(평균값 넘어가면 그대로 사용) resize를 하였습니다.
<모델>
EfficientNetB0 모델을 사용했습니다. pretrained가중치는imagenet을 사용하였습니다.
optimizer : Adam 과 SGD 사용해보았고
scheduler : cosR, poly
epoch : 50
batch size : 256
대략 이런식으로 훈련하였고 train 데이터에 너무 오버핏 되는 경향이 있었고 validation 은 88~96 주변을 맴돌았습니다.
최종 publicLB 는 79 정도 나왔습니다.
넘 바빠서 많은 실험을 해보지 못해 아쉽네요...
다른 분들은 어떤식으로 진행하셨는지 궁금합니다.
와 빠른 답변 감사합니다.
EfficientNEtB7 을 사용하셨군요!
혹시 입력 이미지크기는 어떻게 되시나요 ?
real/fake 모두 등장하는 사람이 그렇게 많았군요 ㅠㅠ 하나씩 다 확인 하기엔 시간이 부족해서 확인 못 했는데 아쉽네요 ㅎㅎ
아, 그리고 그냥 5fold로 나눌땐 혹시 LB 점수가 어땠나요 ?
저는 efficientnet b3~b7다 사용해봤는데 mtcnn한 결과가 우선 더 안좋게 나왔습니다.. 정리해서 코드 공유에 조금 intuition을 제공할 수 있으면 할 것인디유..
efficientnet을 이용할 경우 input size 고려를 해줄 필요가 있는데 이미지를 mtcnn을 통과시키면 기본 사이즈가 200x200정도로 작아집니다. 이를 Resize해서 model을 돌릴 경우 성능이 안좋아지더라구요. 그리고 fgsm은 일반 노이즈랑 달라서 저 생각에는 model이 자체적으로 denoising을 하려면 이미지 내에 더 invariant한 information이 더 필요하다 생각하였고 일부로 배경을 꼭 넣어서 training하는 게 중요하다고 생각했습니다...
마지막으로 dataset을 살펴보신거 같은데 중복에 가까운 data가 너무 많아서 조금 돌려도 overfitting되는 것으로 판단했습니다.
ensemble method 중에 bagging이라는 방법이 있는데 이에 착안을 해서 매 epoch마다 2000~4000개 정도의 data를 random sampling을 했습니다..
자세한 것을 코드 공유에 올릴텐데 개선할 부분이 보이거나 궁금한 부분이 더 있으시다면 질문 남겨주시면 감사하겠습니다..
답변 감사합니다.
https://dacon.io/competitions/official/235655/talkboard/401592?page=3&dtype=recent&ptype=pub
저는 해당 글을 보고 crop한 데이터만을 사용했네요. 저는 데이터를 좀 더 깊게 살펴보지 못한게 아쉽네요.
코드 공유가 되면 많이 배우겠습니다. 고생하셨습니다. 감사합니다!
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
90 턱걸이 점수인데 저는 얼굴 crop까진 동일한거 같구요
EfficientNetB7 / AdamW / cosineannealing / batch 16
landmark 이용해서 augmentation 좀 많이 했고
cv전략은 처음엔 5fold로 나눠서 하다가 나중엔 그냥 real fake에 모두 등장하는 사람만 train, 한쪽만 등장하면 valid로 나누니 85:15 정도로 나눠지더라구요. 그걸로 valid score 좋은거 찾아서 사용했어요
적은 epoch에서 이미 오버핏 되는거 같더라구요..