如何离线使用 yolov5 api 和 flask?
How to use yolov5 api with flask offline?
我能够在具有互联网连接的 PC 上 运行 带有 yolov5 的 Flask 应用程序。我按照 yolov5 文档中提到的步骤使用了这个文件:yolov5/utils/flask_rest_api/restapi.py
,
但我需要实现相同的离线(在特定 PC 上)。现在的问题是,当我使用以下内容时:
model = torch.hub.load("ultralytics/yolov5", "yolov5", force_reload=True)
它试图从互联网上下载模型。并抛出错误。
Urllib.error.URLError: <urlopen error [Errno - 2] name or service not known>
如何离线获得相同的结果。
提前致谢。
如果您想运行离线检测,您需要已经下载了模型。
因此,从 https://github.com/ultralytics/yolov5/releases 下载模型(例如 yolov5s.pt)并将其存储到 yolov5/models。
之后,替换
# model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=True) # force_reload to recache
和
model = torch.hub.load(r'C:\Users\Milan\Projects\yolov5', 'custom', path=r'C:\Users\Milan\Projects\yolov5\models\yolov5s.pt', source='local')
有了这条线,你也可以运行离线检测。
注意:当您第一次使用更新后的 torch.hub.load 启动应用程序时,如果模型不存在,它将下载该模型(因此您无需从 https://github.com/ultralytics/yolov5/releases 下载)。
这里还涉及到一个问题。当此代码在完全没有互联网连接的计算机上为 运行 时。那么你可能会遇到如下错误。
Downloading https://ultralytics.com/assets/Arial.ttf to /home/<local_user>/.config/Ultralytics/Arial.ttf...
Traceback (most recent call last):
File "/home/<local_user>/Py_Prac_WSL/yolov5-flask-master/yolov5/utils/plots.py", line 56, in check_pil_font
return ImageFont.truetype(str(font) if font.exists() else font.name, size)
File "/home/<local_user>/.local/share/virtualenvs/23_Jun-82xb8nrB/lib/python3.8/site-packages/PIL/ImageFont.py", line 836, in truetype
return freetype(font)
File "/home/<local_user>/.local/share/virtualenvs/23_Jun-82xb8nrB/lib/python3.8/site-packages/PIL/ImageFont.py", line 833, in freetype
return FreeTypeFont(font, size, index, encoding, layout_engine)
File "/home/<local_user>/.local/share/virtualenvs/23_Jun-82xb8nrB/lib/python3.8/site-packages/PIL/ImageFont.py", line 193, in __init__
self.font = core.getfont(
OSError: cannot open resource
要克服此错误,您需要从 https://ultralytics.com/assets/Arial.ttf 手动下载 Arial.ttf
文件并将其粘贴到 Linux 上的以下位置:
/home/<your_pc_user>/.config/Ultralytics
在 windows 上,在此处粘贴 Arial.ttf:
C:\Windows\Fonts
错误消息的第一行提到了同样的事情。在此之后,代码运行在离线模式下顺利进行。
此外,如 https://docs.ultralytics.com/tutorials/pytorch-hub/ 所述,除 PyTorch-model-hub 上传的以外,任何 custom-trained-model 都可以通过此代码访问。
path_hubconfig = 'absolute/path/to/yolov5'
path_trained_model = 'absolute/path/to/best.pt'
model = torch.hub.load(path_hubconfig, 'custom', path=path_trained_model, source='local') # local repo
通过这段代码,对象检测是由本地保存的custom-trained模型进行的。曾经,自定义训练模型保存在本地,这段代码直接访问它,避免了互联网的任何必要性。
我能够在具有互联网连接的 PC 上 运行 带有 yolov5 的 Flask 应用程序。我按照 yolov5 文档中提到的步骤使用了这个文件:yolov5/utils/flask_rest_api/restapi.py
,
但我需要实现相同的离线(在特定 PC 上)。现在的问题是,当我使用以下内容时:
model = torch.hub.load("ultralytics/yolov5", "yolov5", force_reload=True)
它试图从互联网上下载模型。并抛出错误。
Urllib.error.URLError: <urlopen error [Errno - 2] name or service not known>
如何离线获得相同的结果。
提前致谢。
如果您想运行离线检测,您需要已经下载了模型。
因此,从 https://github.com/ultralytics/yolov5/releases 下载模型(例如 yolov5s.pt)并将其存储到 yolov5/models。
之后,替换
# model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=True) # force_reload to recache
和
model = torch.hub.load(r'C:\Users\Milan\Projects\yolov5', 'custom', path=r'C:\Users\Milan\Projects\yolov5\models\yolov5s.pt', source='local')
有了这条线,你也可以运行离线检测。
注意:当您第一次使用更新后的 torch.hub.load 启动应用程序时,如果模型不存在,它将下载该模型(因此您无需从 https://github.com/ultralytics/yolov5/releases 下载)。
这里还涉及到一个问题。当此代码在完全没有互联网连接的计算机上为 运行 时。那么你可能会遇到如下错误。
Downloading https://ultralytics.com/assets/Arial.ttf to /home/<local_user>/.config/Ultralytics/Arial.ttf...
Traceback (most recent call last):
File "/home/<local_user>/Py_Prac_WSL/yolov5-flask-master/yolov5/utils/plots.py", line 56, in check_pil_font
return ImageFont.truetype(str(font) if font.exists() else font.name, size)
File "/home/<local_user>/.local/share/virtualenvs/23_Jun-82xb8nrB/lib/python3.8/site-packages/PIL/ImageFont.py", line 836, in truetype
return freetype(font)
File "/home/<local_user>/.local/share/virtualenvs/23_Jun-82xb8nrB/lib/python3.8/site-packages/PIL/ImageFont.py", line 833, in freetype
return FreeTypeFont(font, size, index, encoding, layout_engine)
File "/home/<local_user>/.local/share/virtualenvs/23_Jun-82xb8nrB/lib/python3.8/site-packages/PIL/ImageFont.py", line 193, in __init__
self.font = core.getfont(
OSError: cannot open resource
要克服此错误,您需要从 https://ultralytics.com/assets/Arial.ttf 手动下载 Arial.ttf
文件并将其粘贴到 Linux 上的以下位置:
/home/<your_pc_user>/.config/Ultralytics
在 windows 上,在此处粘贴 Arial.ttf:
C:\Windows\Fonts
错误消息的第一行提到了同样的事情。在此之后,代码运行在离线模式下顺利进行。
此外,如 https://docs.ultralytics.com/tutorials/pytorch-hub/ 所述,除 PyTorch-model-hub 上传的以外,任何 custom-trained-model 都可以通过此代码访问。
path_hubconfig = 'absolute/path/to/yolov5'
path_trained_model = 'absolute/path/to/best.pt'
model = torch.hub.load(path_hubconfig, 'custom', path=path_trained_model, source='local') # local repo
通过这段代码,对象检测是由本地保存的custom-trained模型进行的。曾经,自定义训练模型保存在本地,这段代码直接访问它,避免了互联网的任何必要性。