在用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
如果电脑上面没有这个路径的话,手动创建一下
最终结果是这样
在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训练的问题,由于没有给出具体的错误提示,无法给出明确的解决方案。建议根据错误提示进行排查,或者提供错误提示以便更好地定位问题。
关于下载字体的问题,可以尝试以下解决方案:
使用绝对路径来导入字体,可以确保程序可以找到字体文件的位置。具体步骤如下:
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)
将字体文件复制到系统字体目录,可以让程序自动找到字体文件。具体步骤如下:
找到系统字体目录,一般在以下位置:
Windows: C:\Windows\Fonts
Linux: /usr/share/fonts 或者 ~/.fonts
将字体文件复制到系统字体目录中;
import matplotlib.pyplot as plt
# 设置字体名称
font_family = "Font Name"
# 设置字体
plt.rc('font', family=font_family)