인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김성웅님의 프로필 이미지
김성웅

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

tiny kitti 데이터로 MMDetection Train 실습 - Config 설정하기

Config 이용한 Build_datasets 함수 관련 질문드립니다.

작성

·

454

0

안녕하세요. 강사님.  

강사님의 강의를 참고해서 Custom으로 데이터셋을 만들고, config를 수정했습니다.

이제  Build_datasets을 하려고 하는데, 제 코드가 강사님의 코드와 똑같은 코드 및 config 구성인데 

TypeError : AirplaneDataset : __init__() got an unexpected keyword argument 'pipeline'이라고 뜹니다.

mmdetection/mmdets/datasets/custom.py에서도 있는 pipeline 인자인데, 왜 오류가 뜨는 지

오랜 시간 고민해도 도저히 모르겠어서 질문드립니다. ㅠㅠ 감사합니다 강사님

 

답변 2

0

권 철민님의 프로필 이미지
권 철민
지식공유자

아래와 같이 AirplaneDataset을 생성하셨다는 건가요? 

 

 

 

@DATASETS.register_module(force=True)

 

class AirplaneDataset(CustomDataset):

 

......

 

 

 

 

 

만약 그렇다면 아래와 같이 load_annotations()에서 로직을 많이 제거하고

 

디버깅용으로 아래를 추가하고 디버깅을 수행해 보십시요. 조금씩 로직을 추가해 보면서 디버깅을 더 적용해 보십시요.

 

 

 

def load_annotations(self, ann_file):

 

    print('##### self.data_root:', self.data_root, 'self.ann_file:', self.ann_file, 'self.img_prefix:', self.img_prefix)

 

    print('#### ann_file:', ann_file)

 

김성웅님의 프로필 이미지
김성웅
질문자

강사님의 조언을 참고하여 차근차근 해보니 self.data_root는 못 받아와도 성공적으로 datset building에 성공했습니다. 정말 감사드립니다. 행복한 하루 되세요 강사님 :)

권 철민님의 프로필 이미지
권 철민
지식공유자

해결이 되었다니 다행입니다. 수고하세요 ^^

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

TypeError : AirplaneDataset  가 나오는 걸로 봐서는 AirplaneDataset 클래스를 만든것 같으신데요. 

config의 train dict (type=KittyTinyDataset, ) 으로 되어 있습니다. AirplaneDataset을 만드신건가요? KittyTinyDataset을 클래스로 만드신건가요?

 

김성웅님의 프로필 이미지
김성웅
질문자

강사님 이제 확인해서 답변 드립니다.  MMDetection의 custom.py, train.py 하나씩 다 뜯어봐도 이해가 안되서 질문드립니다. ㅠㅠ

AIrplaneDataset을 만들었습니다.

제가 사진으로 보여드린  KittyTinyDataset config 내부는 제가 만든 AirplaneDataset의 구조와 동일함을 보여드리기 위함이였습니다.

혼란을 드렸다면 죄송합니다.

위의 KittyTinyDataset의 data dictionary key 부분에서 train = dict( type = ' ~~' , ann_file= '~~' , img_prefix = ' ~~' , pipeline = [ dict(~~)]   이랑 AIrplaneDataset이랑 동일합니다.

 

제가 궁금한 것은,

제 AirplaneDataset  config 구조가 KittyTinyDataset의 config구조와 동일한데, KittyTinyDataset을 활용하여  build_datasets[(cfg.data.train)]을 할 때는 config의 pipeline까지 잘 받아오는 데, 제 CustomDatset인 AirplaneDataset으로 할 때는 왜 pipeline이 unexpected argument로 인식이 되는 지 도저히 모르겠습니다. ㅠㅠ

 

항상 감사드립니다. 권철민 강사님.

김성웅님의 프로필 이미지
김성웅

작성한 질문수

질문하기