#python #pytorch #torchvision #keypoint
Вопрос:
Я создал пользовательский набор данных в стиле ключевых точек COCO с помощью аннотатора COCO и хочу перенастроить на него ключевую точку Torchvision R-CNN. Я пытаюсь использовать класс набора данных CocoDetection torchvision для загрузки данных, и мне пришлось переписать _load_image
метод, потому что в моем наборе данных есть подкаталоги. Затем я попытался обернуть набор данных в загрузчик данных и получил следующую ошибку:
>>> dl = DataLoader(coco, batch_size=4)
>>> feat, lbl = next(iter(dl))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 521, in __next__
data = self._next_data()
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 561, in _next_data
data = self._dataset_fetcher.fetch(index) # may raise StopIteration
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 47, in fetch
return self.collate_fn(data)
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 84, in default_collate
return [default_collate(samples) for samples in transposed]
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 84, in <listcomp>
return [default_collate(samples) for samples in transposed]
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 84, in default_collate
return [default_collate(samples) for samples in transposed]
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 84, in <listcomp>
return [default_collate(samples) for samples in transposed]
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 74, in default_collate
return {key: default_collate([d[key] for d in batch]) for key in elem}
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 74, in <dictcomp>
return {key: default_collate([d[key] for d in batch]) for key in elem}
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 84, in default_collate
return [default_collate(samples) for samples in transposed]
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 84, in <listcomp>
return [default_collate(samples) for samples in transposed]
File "/home/sam/.local/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 82, in default_collate
raise RuntimeError('each element in list of batch should be of equal size')
RuntimeError: each element in list of batch should be of equal size
Является ли попытка поместить набор данных в загрузчик данных даже правильным решением, учитывая, что ключевая точка R-CNN ожидает список тензоров [каналов, высоты, ширины]?
Кроме того, у меня возникли проблемы с пониманием того, как я должен на самом деле обучать модель, когда у меня есть данные в приемлемом формате. Я посмотрел на https://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html#convnet-as-fixed-feature-extractor и https://github.com/pytorch/vision/tree/master/references/detection и я все еще в некотором замешательстве. Могу ли я получить некоторые указания о том, как обучать модель на машине с одним графическим процессором?