본문 바로가기

전체 글

(39)
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 에서 찾아볼 수 있고,..
GTR : Global Tracking Transformers 논문 공부 이 논문은 CVPR'22에 publish된 논문으로 2023.12.21 기준 76회의 citation을 보유하고 있다. 이전에 리뷰했던 논문 TraDeS 처럼 Joint Detection and Tracking (JDT) 논문인데, association을 위해서 transformer를 사용하였다. 이전에 리뷰했던 TrackFormer (CVPR'22), MOTR (ECCV'22) 등과 굉장히 유사한데, 사람생각하는게 다 비슷한지 이때쯤 Transformer로 association을 시키는 유행히 돌았던 것 같다. 세부적인 loss, implementation details, training heuristics는 다를 수 있겠지만, 개인적으로 TrackFormer와 거의 동일한 것 같고,,, group (..
NHL : Neuro-Modulated Hebbian Learning for Fully Test-Time Adaptation 논문 공부 이 논문은 CVPR'23에 publish된 논문으로 2023.12.12 기준 11회의 citation을 보유하고 있다. Hebbian learning이라는 특이한 기술을 사용해서 early layer의 representation learning을 진행했는데, TENT, DUA, TTT 같은 baseline 을 능가하는 성능을 보였다고 한다. Hebbian이 되게 좋은 아이디어인 것 같고,, TTA 에 두루두루 적용하기에 참 좋은 것 같기는 한데... 내가 Hebbian learning에 대해 가지고 있는 배경지식이 너무 빈약한데에 비해,,, 알고리즘 설명이 너무 불친절하고,, 코드가 안올라와 있어서 (제일 치명적) 이 논문을 내 연구에 적극적으로 반영하긴 힘들듯 하다.. 😥😥 논문은 https://arx..