cv2.error在cv::copyMakeBorder中,当我运行python train.py--data-data/hat.data--cfg-cfg/yolov3-tiny.cfg以使用yolov3时

cv2.error在cv::copyMakeBorder中,当我运行python train.py--data-data/hat.data--cfg-cfg/yolov3-tiny.cfg以使用yolov3时,python,opencv,yolo,Python,Opencv,Yolo,当我在Pytork上使用yolo v3来训练一些数据时,它会抛出如下错误: Epoch gpu_mem GIoU obj cls total targets img_size Traceback (most recent call last): File "train.py", line 433, in <module> train() # train normally File "train.py", lin

当我在Pytork上使用yolo v3来训练一些数据时,它会抛出如下错误:

  Epoch   gpu_mem      GIoU       obj       cls     total   targets  img_size
Traceback (most recent call last):
  File "train.py", line 433, in <module>
    train()  # train normally
  File "train.py", line 310, in train
    results, maps = test.test(cfg,
  File "D:\code\pytorch\yolo\yolov3\test.py", line 74, in test
    for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)):
  File "D:\code\anaconda\envs\test\lib\site-packages\tqdm\std.py", line 1108, in __iter__
    for obj in iterable:
  File "D:\code\anaconda\envs\test\lib\site-packages\torch\utils\data\dataloader.py", line 345, in __next__
    data = self._next_data()
  File "D:\code\anaconda\envs\test\lib\site-packages\torch\utils\data\dataloader.py", line 856, in _next_data
    return self._process_data(data)
  File "D:\code\anaconda\envs\test\lib\site-packages\torch\utils\data\dataloader.py", line 881, in _process_data
    data.reraise()
  File "D:\code\anaconda\envs\test\lib\site-packages\torch\_utils.py", line 394, in reraise
    raise self.exc_type(msg)
cv2.error: Caught error in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "D:\code\anaconda\envs\test\lib\site-packages\torch\utils\data\_utils\worker.py", line 178, in _worker_loop
    data = fetcher.fetch(index)
  File "D:\code\anaconda\envs\test\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "D:\code\anaconda\envs\test\lib\site-packages\torch\utils\data\_utils\fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "D:\code\pytorch\yolo\yolov3\utils\datasets.py", line 432, in __getitem__
    img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment)
  File "D:\code\pytorch\yolo\yolov3\utils\datasets.py", line 630, in letterbox
    img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color)  # add border
cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\core\src\copy.cpp:1421: error: (-215:Assertion failed) top >= 0 && bottom >= 0 && left >= 0 && right >= 0 && _src.dims() <= 2 in function 'cv::copyMakeBorder'


               Class    Images   Targets         P         R   mAP@0.5        F1:   0%|          | 0/5 [00:08<?, ?it/s](test)

Epoch gpu内存区域obj cls总目标img\U大小
回溯(最近一次呼叫最后一次):
文件“train.py”,第433行,在
训练()#正常训练
列车中第310行的文件“train.py”
结果,映射=测试。测试(cfg,
文件“D:\code\pytorch\yolo\yolov3\test.py”,第74行,在测试中
对于枚举(tqdm(dataloader,desc=s))中的批处理(img、目标、路径、形状):
文件“D:\code\anaconda\envs\test\lib\site packages\tqdm\std.py”,第1108行,在__
对于iterable中的obj:
文件“D:\code\anaconda\envs\test\lib\site packages\torch\utils\data\dataloader.py”,第345行,下一步__
data=self.\u next\u data()
文件“D:\code\anaconda\envs\test\lib\site packages\torch\utils\data\dataloader.py”,第856行,在下一个数据中
返回自处理数据(数据)
文件“D:\code\anaconda\envs\test\lib\site packages\torch\utils\data\dataloader.py”,第881行,在进程数据中
data.reraise()
文件“D:\code\anaconda\envs\test\lib\site packages\torch\\u utils.py”,第394行,重新登录
提升自我执行类型(msg)
cv2.error:在DataLoader工作进程0中捕获错误。
原始回溯(最近一次呼叫最后一次):
文件“D:\code\anaconda\envs\test\lib\site packages\torch\utils\data\\u utils\worker.py”,第178行,在\u worker\u循环中
data=fetcher.fetch(索引)
文件“D:\code\anaconda\envs\test\lib\site packages\torch\utils\data\\u utils\fetch.py”,第44行,在fetch中
data=[self.dataset[idx]用于可能的批处理索引中的idx]
文件“D:\code\anaconda\envs\test\lib\site packages\torch\utils\data\u utils\fetch.py”,第44行,在
data=[self.dataset[idx]用于可能的批处理索引中的idx]
文件“D:\code\pytorch\yolo\yolov3\utils\datasets.py”,第432行,在\uuu getitem中__
img,比率,pad=信箱(img,shape,auto=False,scaleup=self.augment)
文件“D:\code\pytorch\yolo\yolov3\utils\datasets.py”,第630行,在信箱中
img=cv2.copyMakeBorder(img,top,bottom,left,right,cv2.BORDER_常量,value=color)#添加边框

cv2.error:OpenCV(4.2.0)C:\projects\OpenCV python\OpenCV\modules\core\src\copy.cpp:1421:error:(-215:Assertion failed)top>=0&&bottom>=0&&left>=0&&right>=0&&u src.dims(),查看错误的上下文(即您的代码)会很有帮助。您正在传递一个格式不正确的图像或指定无效的边框尺寸。此问题的标题非常不幸。我会更改它,因为我不确定该更改为什么。安晨,您能不能花点时间尝试给它一个更有意义的标题?这样您将有更好的机会获得满意的答案。