YOLO8 トレーニングに Windows を使用すると、エラー ForkingPickler(file, protocol).dump(obj) BrokenPipeError: [Errno 32] BrokenPipe が報告されます

YOLO8 のカスタム データ トレーニングに Windows を使用すると、エラー ForkingPickler(file, protocol).dump(obj)BrokenPipeError: [Errno 32] Broken Pipe が報告されます

1. 問題は次のように発生します。

2. エラーの原因:

この問題は、Windows での DataLoader クラスに関連するマルチスレッドの問題によって発生します。num_workers の数を 0 に変更します。これは Windows のバグのような気がします。

3. 解決策:

一般に、次のようにtrain.py のnum_workers=1 を0 に変更するだけです。

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

しかし、長い間探しましたが、yolo8 の train.py の num_workers がどこにあるのか見つかりませんでした。最終的に、build.py の build_dataloader 関数によって返される num_workers が次のように変更できることがわかりました。

def build_dataloader(cfg, batch, img_path, stride=32, rect=False, names=None, rank=-1, mode='train'):...

ファイルの具体的な場所は次のとおりです。

你安装的虚拟环境\Lib\site-packages\ultralytics\yolo\data\build.py

プロテストは効果あり!

おすすめ

転載: blog.csdn.net/Jin1Yang/article/details/129236974