b__ono__ng

D-Fine 모델 학습 중 본문

IT/AI

D-Fine 모델 학습 중

b__ono__ng 2025. 2. 20. 20:31

여러 이유로,, Detection 모델로 D-Fine 모델을 학습하고 있다.
D-Fine 모델은 이 사람이 추천해주셔서 쓰고 있다. 성능은 좋아보인다.  이 사람 -> https://developer0hye.tistory.com/817

D-FINE 모델의 Backbone Network은 무엇일까?

https://github.com/Peterande/D-FINE GitHub - Peterande/D-FINE: D-FINE: Redefine Regression Task of DETRs as Fine-grained Distribution Refinement 💥💥💥D-FINE: Redefine Regression Task of DETRs as Fine-grained Distribution Refinement 💥💥💥 - P

developer0hye.tistory.com

D-Fine n size official 모델과 YOLO11 m size official 모델로 얼추 비교해봤을 때, 파라미터는 비슷한 수준에 사람이나 차량같은 common target은 약간 더 잘 잡는다. 더 많이 테스트해봐야 알겠지만.
그런데 이 D-Fine 학습하다가 별거 아닌 이유로 고생했다. 다른 우물을 파고 있었음
 
처음에 train==val set 동일하게 세팅해놓고 학습했는데, Loss가 50도 찍히고 100도 찍히고 엄청 높게 찍히더라,, 그래서 뭔가 잘못됐다 싶었다. 근데 official model 학습 로그를 github에서 찾아볼 수 있는데, 여기에서도 loss가 2~50정도 찍히더라. AP만 잘 나오면 되는거였음.

하지만 계속 학습한 모델을 inference하면 아무 박스도 안 나오더라.. 의심했던건 Localization이었고, 알고 보니 역시 Localization이었다.
COCO Format으로 넣어야 하고, 그건 [Denormalized] X1Y1WH 포맷이다. 예를들면
0 360.43 153.54 56.64 98.777
이런 식이다. (맨 앞은 클래스 번호)
나는 Normalized CXCYWH 포맷으로 시작했는데, 뭔가 여러가지 조합을 계속 시도해보다가 나중에 알았다. COCO 포맷이 XYWH 라고 하길래 당연히 CXCYWH인줄,, 비전 AI 하면서 raw COCO 안 써본 티가 여기서 난다. 모델 갖다 써보기나 해봤지,,,
아래 위치에 자동 converting 기능도 있고(제대로 동작하는지는 모르겠음), normalize 기능도 있으니 참고하면 됨
https://github.com/Peterande/D-FINE/blob/master/configs/dfine/include/dataloader.yml#L14

D-FINE/configs/dfine/include/dataloader.yml at master · Peterande/D-FINE

D-FINE: Redefine Regression Task of DETRs as Fine-grained Distribution Refinement [ICLR 2025 Spotlight] - Peterande/D-FINE

github.com

 
가끔 Box가 실수형이 아닌 정수형이라거나, 클래스 번호를 잘못 적어서 오류가 자주 뜨기도 한다.
클래스 번호는 여기에서 바꿔주면 된다.
https://github.com/Peterande/D-FINE/blob/master/configs/dataset/custom_detection.yml#L7

D-FINE/configs/dataset/custom_detection.yml at master · Peterande/D-FINE

D-FINE: Redefine Regression Task of DETRs as Fine-grained Distribution Refinement [ICLR 2025 Spotlight] - Peterande/D-FINE

github.com

 
학습좀 해보고,, resize -> letterbox나 augmentations좀 보면 좋을 것 같다.