data pipeline 은 크게 3단계로 구분할 수 있다. data loading, preprocessing, formatting.
custom_imports = dict(imports=['path.to.my_pipeline'], allow_failed_imports=False)
img_norm_cfg = dict(
mean=[123.675, 116.28, 103.53], std = [58.395, 57.12, 57.375], to_rgb = True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='Resize', scale=(1333, 800), keep_ratio=True), # 원본 이미지 ratio 그대로 키움
dict(type='RandomFlip', prob=0.5), # 10번 중 5번은 augmentation
dict(type='Normalize', **img_norm_cfg), ## 추가
dict(type='Pad', size_dovisor=32),
dict(type='DefaultFormatBundle'),
dcit(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']), # 이 값들을 모델에 투입
]
한가지 문제가, data.pipeline 도 있고 train_pipeline 은 또 따로 분리되어 있는 것이다. 중복되어 있는 것이 거슬리기 때문에, train_pileline 에서 설정을 마친 다음 data.pipeline 의 경우 pipeline([**train_pipeline]) 로 설정해주고 끝내는 것도 좋아보인다. (asterisk: 가져오기)