yolov5训练出现的错误

在用yolov5训练自己的数据集的时候,到train.py这一步,但是报了一个错误,困扰了好久。
错误:

Downloading https://ultralytics.com/assets/Arial.ttf to C:\Users\zkyd\AppData\Roaming\Ultralytics\Arial.ttf...
Traceback (most recent call last):
  File "G:\Anaconda\envs\yolo\lib\urllib\request.py", line 1345, in do_open   
    h.request(req.get_method(), req.selector, req.data, headers,              
  File "G:\Anaconda\envs\yolo\lib\http\client.py", line 1285, in request      
    self._send_request(method, url, body, headers, encode_chunked)            
  File "G:\Anaconda\envs\yolo\lib\http\client.py", line 1331, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)                      
  File "G:\Anaconda\envs\yolo\lib\http\client.py", line 1280, in endheaders   
    self._send_output(message_body, encode_chunked=encode_chunked)            
  File "G:\Anaconda\envs\yolo\lib\http\client.py", line 1040, in _send_output
    self.send(msg)
  File "G:\Anaconda\envs\yolo\lib\http\client.py", line 980, in send
    self.connect()
  File "G:\Anaconda\envs\yolo\lib\http\client.py", line 1447, in connect
    super().connect()
  File "G:\Anaconda\envs\yolo\lib\http\client.py", line 946, in connect
    self.sock = self._create_connection(
  File "G:\Anaconda\envs\yolo\lib\socket.py", line 844, in create_connection
    raise err
  File "G:\Anaconda\envs\yolo\lib\socket.py", line 832, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

还有一个错误:

Traceback (most recent call last):
  File "G:\yolov5-master\train.py", line 640, in 
    main(opt)
  File "G:\yolov5-master\train.py", line 529, in main
    train(opt.hyp, opt, device, callbacks)
  File "G:\yolov5-master\train.py", line 112, in train
    data_dict = data_dict or check_dataset(data)  # check if None
  File "G:\yolov5-master\utils\general.py", line 585, in check_dataset
    check_font('Arial.ttf' if is_ascii(data['names']) else 'Arial.Unicode.ttf', progress=True)  # download fonts
  File "G:\Anaconda\envs\yolo\lib\urllib\request.py", line 493, in _call_chain
    result = func(*args)
  File "G:\Anaconda\envs\yolo\lib\urllib\request.py", line 1388, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
  File "G:\Anaconda\envs\yolo\lib\urllib\request.py", line 1348, in do_open
    raise URLError(err)
urllib.error.URLError: error [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。>


有一种字体,我也下载下来了,我之前看过有人说加上绝对路径,我也试了,
请问有人知道怎么解决嘛

将这个地址复制到浏览器打开,会自动下载一个文件
https://ultralytics.com/assets/Arial.ttf
将这个文件复制到这个路径下面去:
C:\Users\zkyd\AppData\Roaming\Ultralytics
如果电脑上面没有这个路径的话,手动创建一下
最终结果是这样

img

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7399264
  • 这篇博客你也可以参考下:yolov5——train.py代码【注释、详解、使用教程】
  • 除此之外, 这篇博客: yolov5使用自己的数据集训练中的 3.2.4 修改train.py中的一些参数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在train.py中修改一下训练参数,也可以直接在训练语句中重写,修改的话只是修改默认值。

    parser.add_argument('--epochs', type=int, default=200)  # 根据需要自行调节训练的epoch
    parser.add_argument('--batch-size', type=int, default=8)  # 根据自己的显卡调节,显卡不好的话,就调小点
    parser.add_argument('--cfg', type=str, default='models/yolov5s.yaml', help='*.cfg path') # 根据需要,自行选择模型
    parser.add_argument('--data', type=str, default='data/myvoc.yaml', help='*.data path')  # data设置为前两步中我们新建的myvoc.yaml
    parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='train,test sizes')  # 可调可不调
    parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')  # 使用CPU还是GPU训练
    
    
  • 您还可以看一下 白勇老师的YOLOv5(PyTorch)目标检测:原理与源码解析课程中的 train.py代码解析2小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对yolov5训练的问题,由于没有给出具体的错误提示,无法给出明确的解决方案。建议根据错误提示进行排查,或者提供错误提示以便更好地定位问题。

    关于下载字体的问题,可以尝试以下解决方案:

    1. 使用绝对路径导入字体

    使用绝对路径来导入字体,可以确保程序可以找到字体文件的位置。具体步骤如下:

    • 找到字体文件所在的位置,复制完整的路径;
    • 在Python代码中,使用完整的路径来导入字体,例如:
    import matplotlib.font_manager as fm
    
    # 使用完整路径导入字体,例如:
    font_path = "/path/to/font.ttf"
    font_name = fm.FontProperties(fname=font_path).get_name()
    
    # 设置字体
    plt.rc('font', family=font_name)
    
    1. 将字体文件复制到系统字体目录中

    将字体文件复制到系统字体目录,可以让程序自动找到字体文件。具体步骤如下:

    • 找到系统字体目录,一般在以下位置:

    • Windows: C:\Windows\Fonts

    • macOS: /Library/Fonts
    • Linux: /usr/share/fonts 或者 ~/.fonts

    • 将字体文件复制到系统字体目录中;

    • 在Python代码中,使用字体名称来引用字体,例如:
    import matplotlib.pyplot as plt
    
    # 设置字体名称
    font_family = "Font Name"
    
    # 设置字体
    plt.rc('font', family=font_family)