작성
·
521
0
안녕하세요.
tiny kitti 데이터로 MMDetection Train 실습 - Train 실행 후 이미지 inferece 강의 마지막 부분에서
model.cfg = cfg 부분의 코드가 이해가 되지 않아서 문의드립니다.
먼저 inferece를 하기 전에 왜 model.cfg = cfg 라는 코드가 필요한지 이해가 되지 않습니다. ㅜㅜ 그런데 해당 작업을 하지 않으면 코드가 되지 않는 것을 보아서 왜 그런지 이해가 되지 않은 상태입니다 .... 애초에 model이라는 객체를 생성할 때 수정된 cfg에 대한 내용이 반영되는 것으로 이해를 하고 있어서요....
아니면 train_detector(model, datasets, cfg, distributed=False, validate=True)
코드 이후에 .. cfg에 대한 부분이 반영이 되고
해당 cfg를 반영하기 위해서
model.cfg = cfg로 작업을 하는지 궁금합니다.
두번째 질문입니다.
해당 데이터셋을 모델에 넘겨줄 때, model이라는 객체를 생성하는데 왜 이 경우에는 model.cfg의 경우, 에러가 발생하는지 문의드립니다.
답변 1
0
안녕하십니까,
1. 학습 시에는 model 과 config가 별도로 구성되어 있어야 하지만 inference시에는 model 객체가 config를 가지고 있어야 하는 식으로 API가 구성이 된 것 같습니다. (음, 왜 이렇게 일관성없이 API를 설계했는지는 모르겠습니다.)
Config가 비단 model 뿐만 아니라 학습 Pipeline이라든가 다양한 요소를 가지기 때문에 model과 config가 별도로 되어 있고, 필요하면 model에서 config의 특정 요소를 가져가는 방식을 취하는 게 맞을것 같습니다.
그래서 아래와 같이 train_detector(model, datasets, cfg, distributed=False, validate=True) 시 model객체에서 내부 변수로 cfg를 가져가지 않는 것으로 보입니다.
그리고 inference 시에는 inference_detector()에서 config입력이 없으므로 model 객체의 내부 변수로 config를 할당하는 방식을 취한 것으로 보입니다.
model.cfg = cfg