본문 바로가기

Object Tracking 연구

(7)
DARTH 코드 분석하기 (3) Test 코드 분석 및 DARTH 성능 reproduce DARTH 깃헙 홈페이지 https://github.com/mattiasegu/darth 에서 (1) TTA가 완료된 모델과 (2) 이를 test 하기 위해 필요한 config 파일을 다운받을 수 있다. 이번 포스팅에서는 MOT에서 학습된 모델을 DanceTrack으로 adapt 시켰을때의 성능을 확인하려한다.. ◾ 이와 별개로, MOT에서 학습된 Source model을 TTA없이 그냥 DanceTrack에 inference 했을때의 성능도 측정해보자..! TTA가 완료된 모델의 성능 측정은 tools/run/test.py 로 가능하고,, 깃헙에서 다운받은 모델, config를 전달하면 된다. 😬 DanceTrack의 경우 tset를 진행하는데에 22분정도가 걸린다. (25508 batches, 각 1..
DARTH 코드 분석하기 (2) DARTHQDTrack 모델, EpochBasedRunner 분석 우선 상속관계는 다음과 같다. (보라색이 custom model), 순서대로 분석해보자. DARTHQDTrack > KDQDTrack > TeacherQDTrack > QDTrack > BaseMultiObjectTracker > BaseMultiObjectTracker > BaseModule > nn.Module... 이중 DARTHQDTrack, KDQTrack은 darth/models/adapters/base 폴더 안에 들어있다. 0. DARTH 복습하기 DARTH는 여러 view 사이에 contrastive learning을 수행한다. 👉 좀더 자세한 설명은 이전 포스팅 참고 (링크) 구조적으로는 Faster-RCNN 기반의 QDTrack을 base model로 사용하고 3개의 view (teac..
DARTH 코드 분석하기 (1) Train/test.py, config 분석 생각해보니 내가 train.py 를 깊게 이해할 필요는 없다. TTA를 하는 이상 어짜피 source model에서 pretrain된 모델을 쓸텐데,, 굳이 train.py로 내가 뭘 학습할 필요가 있나? (checkpoints도 다 공유되어 있는데? ㅎㅎ) test.py만 보면 될듯하다. QDTrack의 test.py는 진짜 test만 하는 파일이고,,, DARTH의 test.py는 TTA 까지하는 파일이다. 먼저 QDTrack의 test.py를 분석한 이후 github에 있는 checkpoint의 성능을 확인하고,,, DARTH의 TTA로 넘어가면 될 것 같다. 1 Train/test.py 코드 분석하기 DARTH 깃헙 페이지에 올라와있는 MOT 17 checkpoint 파일을 다운받고, 단순히 te..
[디버깅] DARTH : CostumOptimizerHook is not in the hook registry 다시 DARTH 코드를 좀 돌려보려 했더니,, 무슨 이름도 이상한 "CostomOptimizerHook"이 없다는 에러가 나왔다. 그나마 다행이라면,, DARTH가 QDTrack을 기반으로 해서,, 대부분은 QDTrack을 보면 해결이 된다는 것...? 흠.. 찜찜하지만,, QDTrack 을 참고해서 FP16으로 빠지도록 조취해아할 것 같다.. 이걸 FP32로 돌리면 너무 무거울 것 같고,, 정황상 DARTH도 FP16으로 돌린듯 하다.. (흠 근데,, QDTrack 코드은 또 FP32로 돌린것 같고,,, 나중에 해야지!) 그냥 FP16 관련 내용 전부 comment out 해버림.. 흠.. 나도 FP16 하고 싶은데.. 호오.. 마지막으로 hook 까지 수정하니까 어찌어찌 코드가 돌아가기는 하는데,,,..
MMCV에서 MODEL, DATASET을 어떻게 build 하는가? 이전 링크 에서 MMCV 에서 Registry를 만드는 법을 공부했다. 이렇게 만들어진 Registry는 build_model, build_dataset 등의 함수를 통해 instance가 만들어지는데 사용된다. 예를 들어서 QDTrack 의 train.py 에서 QDTrack 모델을 생성하는 과정을 살펴보자... train.py를 보면 build_model 함수가 호출되는 것을 볼 수 있는데,, Pycharm 에서 디버깅을 위해 Ctrl + 클릭 을 하면 mmcv 패키지 안에 있는 코드로 이동한다. 근데 여기서 문제는.. 실제 동작되는 코드는 mmcv 패키지 안에 있는 build_model이 아니라는 점이다!! train.py 코드 위쪽을 보면 build_model을 import 하는 라인이 있는데,,..
MMCV에서 Registry를 어떻게 만드는가? 최근 Tracking 연구를 하게 되어 MMCV를 공부하고 있는데,, 여간 복잡한 것이 아니다.. 하나하나씩 개념을 정리하며 이해할 필요가 있을 것 같은데,, 오늘은 Registry를 다뤄보려한다. MMCV에서 registry는 라이브러리 내의 다양한 유형의 구성 요소를 관리하고 조직하는 중앙 시스템이다. 코드 조직, 유연성 및 유지 관리에 여러 가지 이점을 제공하는 강력한 메커니즘이라 한다. Registry 안에는 Dataset, Backbone, Neck, Head, Hook 등 별별 클래스 (모듈) 들이 들어갈 수 있는데, vision 모델 구축을 위해 필요한 (1) 모든 개념들을 각각의 Registry (DATASETS, MODELS, NECKS 등..) 에 집어넣고,, (2) 필요할때마다 bui..
[디버깅] DARTH : MOTTrackingDataset is not in the dataset registry 에러 Object Tracking + TTA 연구를 위해서 DARTH 논문의 코드를 받아서 실험을 돌려보려한다. (https://github.com/mattiasegu/darth) 근데 이게 아직 제대로된 코드가 아니라서 수정할 내용이 많다... 하지만 달리 MOT + TTA 코드도 없기 때문에 내가 잘 고쳐가면서 써야할 것 같다.. 1. train.py 에서 발생한 build_dataset 메소드 에러 그런데 제대로 돌려보기도 전에 "MOTTrackingDataset is not in the dataset registry" 에러가 발생했다.. 🤦‍♂️🤦‍♂️ 흠.. MOTTrackingDataset에 대한 언급은 configs/_base_/dataset/mot_challenge 안에 있는걸 확인했는데,,, ..