#machine-learning #deep-learning #fast-ai #dataloader
Вопрос:
Я работаю над медицинскими изображениями, на которых я диагностирую болезнь. Я создаю базу данных, используя какой-то пользовательский загрузчик данных с помощью fastai. Код, который я использую, приведен ниже: Но этот код создает только поезд и допустимое разделение. Допустимое разделение включает в себя набор тестов, поскольку я не знаю, как отдельно загрузить набор тестов. Мои наборы уже определены в фрейме данных на 80%, 10%, 10%, обучаются, действительны и тестируются соответственно.
Мой код загрузчика данных:
def get_chestxray8(path:PathOrStr, bs:int, img_sz:int, valid_only_bbx:bool=False, tfms:bool=True, convert_mode:str='RGB',
normalize:bool=True, norm_stats:Tuple[Floats, Floats]=imagenet_stats, processor:Optional[Callable]=None,
**kwargs:Any)->DataBunch:
'''
TODO
'''
path = Path(path)
df = pd.read_pickle(path / 'full_ds_bbx.pkl')
df['is_valid'] = df.set!='Train'
if valid_only_bbx: df = df[(df.set=='Train') | df.bbx]
if processor is not None: df = processor(df)
lbl_dict = df[['file','label']].set_index('file')['label'].to_dict()
def bbox_label_func(fn:str)->list: return lbl_dict[Path(fn).name]
lbls = ['No finding', 'Atelectasis', 'Cardiomegaly', 'Consolidation', 'Infiltration',
'Lung Opacity', 'Mass', 'Pleural effusion', 'Pleural thickening', 'Pneumothorax', 'Pulmonary fibrosis']
src = (CustomObjectItemList.from_df(df, path / 'images', cols='file', convert_mode=convert_mode)
.split_from_df('is_valid')
.label_from_func(bbox_label_func, classes=lbls))
if tfms: src = src.transform(get_transforms(**kwargs), size=img_sz, tfm_y=True)
data = src.databunch(bs=bs, collate_fn=multiclass_bb_pad_collate)
if normalize: data = data.normalize(stats=norm_stats)
return data