인프런 커뮤니티 질문&답변
mm_faster_rcnn_train_coco_bccd 실행 오류 질문드립니다.
작성
·
14
·
수정됨
0
안녕하세요 강사님, 좋은 강의 감사히 듣고 있습니다. 다름이 아니라, old colab에서 new kaggle로 수정 후 실습을 하는 과정에서 faster rcnn의 mm_faster_rcnn_train_coco_bccd 파일을 실행하고 있었습니다.
다음의 코드에서 동일한 에러가 발생합니다.
중간에 학습을 하는 코드
train_detector(model, datasets, cfg, distributed=False, validate=True)
와
테스트셋을 평가하는 코드
metric = dataset.evaluate(outputs, metric='bbox')
를 실행한 결과, 다음의 에러코드가 출력됩니다.
--> 314 res.dataset['info'] = copy.deepcopy(self.dataset['info'])
315 res.dataset['images'] = [img for img in self.dataset['images']]
316
KeyError: 'info'제가 열심히 검색하며 추가 조사를 해본 결과,
epoch를 기본으로 설정한 12회를 다 돌고 나서 bbox를 evaluate하는 과정에서 에러가 나는 것 같습니다.
annotation파일들인 train.json 파일과 test.json파일에 info의 키가 없어서 에러가 발생한 것 같다... 라는 결론에 이르렀는데 강사님께서 보시기에 무엇이 문제인지 궁금하여 질문드립니다.
궁극적으로 해결을... 어떻게 할지도 고민이 좀 많이 됩니다.
PS. 구글 서치와 챗지피티 프롬프트 질문 결과, 에러의 원인은 mmdetection >= 2.28.0 버전에서 pycocotools 2.0.x 이상을 사용할 때 이 오류가 보인다는 의견이 있었고pycocotools는 내부적으로 딥카피(copy.deepcopy(self.dataset['info']))를 사용하기 때문에, 필드 누락이 바로 Error로 이어지지 않았나... 까지 찾았습니다.
답변 1
0
안녕하십니까,
강의를 잘 듣고 계시다니 저도 기분이 좋군요.
정확한 원인은 아닐 수도 있지만, mmdetection의 2.x 버전과 numpy 버전, coco 버전 등의 현재 호환 이슈등으로 train_detector(model, datasets, cfg, distributed=False, validate=True)호출 시 validate=True로 해서 validation data의 evaluate를 수행하면 오류가 발생합니다.
아쉽게도 현재는 train_detector(model, datasets, cfg, distributed=False, validate=False) 와 같이 validate=False로 해서 validation data의 evaluation을 skip 해줘야 합니다.
감사합니다.





