L'utilisation de Windows pour la formation personnalisée aux données de YOLO8 signale une erreur ForkingPickler(file, protocol).dump(obj)BrokenPipeError : [Errno 32] Broken pipe
1. Le problème se produit comme suit :
2. La cause de l'erreur :
Le problème est dû au problème de multi-threading sous windows, qui est lié à la classe DataLoader. Remplacez le nombre de num_workers par 0. J'ai l'impression que c'est un bug de Windows.
3. Solutions :
En général, remplacez simplement num_workers=1 dans train.py par 0, comme suit :
trainset = torchvision.datasets.CIFAR10(root='./data',train=True,
download=True,transform=transform)
trainloader = torch.utils.data.DataLoader(trainset,batch_size=4,
shuffle = True,num_workers=1) #改为0
Mais j'ai cherché longtemps et je n'ai pas trouvé les num_workers de train.py de yolo8, et j'ai finalement trouvé que les num_workers renvoyés par la fonction build_dataloader dans build.py peuvent être modifiés, comme suit :
def build_dataloader(cfg, batch, img_path, stride=32, rect=False, names=None, rank=-1, mode='train'):...
L'emplacement spécifique du fichier est :
你安装的虚拟环境\Lib\site-packages\ultralytics\yolo\data\build.py
Le pro-test est efficace !