Search
🤔

‣ 문제정의

상태
Done
담당
마감일
2022/10/26
요약
이 요소들을 우선순위에 맞게 각각 칸반으로 만든다.
선행 태스크
선행 태스크 상태
관련 마일스톤
3 more properties
마일스톤을 달성하는 데 무엇이 문제인가?
교수님이 태클을 걸까봐 얼마나 철저하게 구현해야 하는지 모르는 것이 문제이다.
이것은 신경쓰지 말자. 일단 구현 그 자체가 더 급할 것이다.
문제정의1. Neck 도 버리고, 정말 간단한 backbone 과 정말 간단한 detection head 로 detection 모델을 만들었을 때, 이것이 segmentation head 와 어떻게 상호작용하는 지 모르는 것이 문제다.
이걸 왜 알아야 하지?
문제정의2. Neck 도 버리고, 정말 간단한 backbone 과 정말 간단한 detection head 로 detection 모델을 만들고, 정말 간단한 segmentation head 로 segmentation 모델을 만든다고 할 때, 두 모델이 어떻게 하나의 모델 내에서 상호작용할 수 있는지 모르는 것이 문제다.
이건 왜 알아야 하지?
문제정의3. Start Simple 원칙을 생각해 본다. Neck 도 버리고, 정말 간단한 backbone 과 정말 간단한 head 로 정말 간단한 detection 모델을 만들어보지도 못한 것이 문제다. 그리고 Neck 도 버리고, 정말 간단한 backbone 과 정말 간단한 head 로 정말 간단한 segmentation 모델을 만들어보지도 못한 것이 문제다.
아무리 start simple 이라고 하더라도 이 모델들을 from the scratch 로 구현해볼 필요가 있을까? 그냥 detectron2 같은 오픈소스들을 끌어다 사용하는 것이 훨씬 나은 것 아닌가?
why detectron2? 페이스북에서 계속 관리하고 있는 오픈소스일 뿐 아니라, 원저자들도 detectron2의 전신인 maskrcnn-benchmark 를 사용했기 때문이다.
From the scratch 를 지지하는 가설
detectron2은 저장소가 너무 크고, 다양한 operation 들과 테크닉들이 잔뜩 붙었기 때문에 오히려 분석하는 데 시간이 더 오래 걸릴 것이다. 필요하면 그냥 detectron2 소스코드를 가끔씩 참고하는 것이 낫다.
Mask-RCNN 을 온전히 이해한 상태에서 PMTD 를 구현하는 일이 훨씬 쉬워진다면 Mask-RCNN 을 온전히 이해하는 것이 낫다. Mask-RCNN 을 온전히 이해하려면 직접 구현을 해보는 것이 훨씬 낫다.
문제정의4. Mask-RCNN 도 모르고, Mask-RCNN 과 PMTD 와의 정확한 관계를 잘 모른다는 것이 문제이다. inference 코드를 볼 때, 언뜻 보기에는 Mask-RCNN 의 끝단에 추가적인 operation 을 추가한 것으로 보인다. 하지만 원저자가 어떤 부분을 maskrcnn-benchmark 소스코드로부터 수정해 사용했는지 알 길이 없다(변경된 부분이 상당히 많다).
From the scratch 를 지지하지 않는 가설
그래도 직접 구현하는 것보다는 구현되어 있는 것을 쓰는 것이 무조건 빠르다.
조금 더 구체적으로 분해?
Classification 모델조차 pytorch 에서 GPU 학습이 가능하도록 만들어본적이 없는 것이 문제다.
PMTD 를 구현하려면 C/C++ 로우레벨 프로그래밍이 있을 것이고, 이것은 경험이 없는 경우 상당히 오래 걸릴 수 있다는 것이 문제이다.
파트장님은 이러한 Operation 을 구현하는 일이 있을텐데, 이 부분이 시간을 많이 잡아먹게 될 것이라고 하셨다.