본문 바로가기

전체 글

(41)
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 하는 라인이 있는데,,..
Pycharm에서 Git 사용하기 (Merge, Rebase, Cherry-pick) - 2 이전 포스트에 이어서 Pycharm에서 Rebase와 Cherry-pick을 수행해보자. Rebase로 두 branch 합치기 이전 포스팅과 비슷하게 두개의 branch (master와 branch 2) 를 준비하고, my_main.py 의 내용이 서로 다르게 세팅하였다. 이전 포스팅에서는 merge 로 두 branch를 합쳤지만,, 여기서는 rebase 로 두 branch를 합쳐보자! 아래와 같이 Git log tab에서 "merge 'branch1' into master"를 선택하면 rebase를 수행할 수 있다. 이름에서 알 수 있듯이, 이 동작을 수행하면 current master branch가 branch 2 위에 선형적으로 이어지는 형태를 갖게 된다. 현재 두 branch에서 my_main.p..
Pycharm에서 Git 사용하기 (Merge, Rebase, Cherry-pick) - 1 Pycharm 에서는 편리하게 Git을 통해 remote 저장소에 내 코드를 연결하고 merge, rebase, cherry-pick 등 다양한 버젼 관리 기능을 제공한다. 그런데 나도 들어만 봤지 제대로 사용해본 적은 아직 없기 때문에 이 글에서 Pycharm을 통해 merge, rebase, cherry-pick 을 직접 실행해보며 공부를 좀 해보려한다. (대부분의 설명과 그림은 링크를 참고했다) 원격 저장소 연결하기 외부 저장소에 프로젝트를 연결했고, 간단한 commit & push 도 진행한 상황 새로운 branch 만들기 이제 merge, rebase, cherry-pick 를 수행하기 위해서 branch를 분기시켜보자. "First commit" 이라는 commit 에 우클릭 > new bra..
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 안에 있는걸 확인했는데,,, ..
PETAL : A Probabilistic Framework for Lifelong Test-Time Adaptation 논문 공부 이 논문은 CVPR'23에 publish된 논문으로 2023.12.21 기준 12회의 citation을 보유하고 있다. 이전에 리뷰했던 논문 CoTTA나 ECoTTA 처럼 continual TTA 를 다루는 논문인데,, source domain에 pretrain된 model이 15개 정도의 target domain (e.g., corruption) 에 순차적으로 adapt하며 매 domain을 거칠때마다 성능을 측정한다. 언제 새로운 target domain으로 전환되는지에 대한 줄 수 없기 때문에 빠르게 적응할 수 있고, catastrophic forgetting에 강인한 TTA 논문을 개발하는 것이 중요하다. 이 논문은 https://arxiv.org/abs/2212.09713 에서 찾아볼 수 있고,..