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 안에 있는걸 확인했는데,,, 뭐가 문제일까
* 원래 QDTrack 에서는 어떻게 dataset을 build 하는지 비교할 것..
🤔 원래 build_from_cfg를 통해 dataset을 만들때 Registry안에 여러 dataset에 대한 정보가 items 이라는 속성으로 들어있어야한다. (QDTrack의 경우 Registry안에 있는 MOT17Dataset을 사용하여 dataset을 build한다.)
❗❗ mmcv 에서 Registry가 어떻게 생성되는지에 대해서는 다음 링크를 참조할 것!!
QDTrack은 models/__init__ 에서 MODELS 레지스트리를 다 불러옴. 그리고 __all__에 레지스트리를 추가하여 이후 models 모듈을 임포트한 임의의 파일에서 레지스트리에 접근할 수 있게함.
그런데 DARTH는 datasets/__init__.py를 보면 .builder.py에서 DATASETS을 import하지 않은 상태에서 __all__에 DATASETS 레지스트리 변수를 등록하고 있다. 👉 결과적으로 main.py 에서 build_from_cfg로 dataset을 만드려고 할때 DATASETS 레지스트리에 아무 정보도 없어서 (none만 있음) 에러가 발생하는 것이다.
위와 같이 .builder 에서 DATASETS 변수를 불러오고, __all__에 추가해줬더니 더이상 에러가 발생하지 않았다.
2. train.py 의 train_model에서 발생한 build_dataset 메소드 에러
이번에는 train.py 아래 있는 train_model 함수 안에서 build_dataset 에서 비슷한 에러가 발생했다.
이게 왜그런고 하니,,, MOTTrackingDataset은 DARTH 저자가 custom으로 만든 데이터셋이기 때문에 이걸 제대로 사용하려면 mmcv 패키지 안에서 build_dataset을 호출할게 아니라 어떻게든 작업 폴더 안에서 build_dataset을 호출해서 custom으로 제작한 MOTTrackingDataset에 접근해야한다.. 아래를 참고..!
저자가 실수를 했는지,, darth.apis 가 아니라 mmtrack.apis에서 train_model 함수를 import 했다. 이거 변경할 것!!
일단 오늘은 여기까지...
이상 끝! 💪😬🤜
'Object Tracking 연구' 카테고리의 다른 글
DARTH 코드 분석하기 (2) DARTHQDTrack 모델, EpochBasedRunner 분석 (0) | 2024.01.10 |
---|---|
DARTH 코드 분석하기 (1) Train/test.py, config 분석 (0) | 2024.01.07 |
[디버깅] DARTH : CostumOptimizerHook is not in the hook registry (0) | 2024.01.07 |
MMCV에서 MODEL, DATASET을 어떻게 build 하는가? (0) | 2024.01.07 |
MMCV에서 Registry를 어떻게 만드는가? (0) | 2023.12.29 |