작성
·
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)
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로 인식이 되는 지 도저히 모르겠습니다. ㅠㅠ
항상 감사드립니다. 권철민 강사님.
강사님의 조언을 참고하여 차근차근 해보니 self.data_root는 못 받아와도 성공적으로 datset building에 성공했습니다. 정말 감사드립니다. 행복한 하루 되세요 강사님 :)