我能够在带有互联网连接的PC上运行带有yolov5的烧瓶应用程序。我遵循了yolov5文档中提到的步骤,并使用了以下文件:yolov5/utils/flask_rest_api/restapi.py
但我需要实现同样的离线(在一个特定的个人电脑)。现在的问题是,当我使用以下内容时:
model = torch.hub.load("ultralytics/yolov5", "yolov5", force_reload=True)它试图从互联网上下载模型。并抛出一个错误。
Urllib.error.URLError: <urlopen error [Errno - 2] name or service not known>如何离线获得相同的结果。
提前谢谢。
发布于 2022-02-25 15:38:02
如果要脱机运行检测,则需要下载模型。
因此,从yolov5s.pt下载模型(例如https://github.com/ultralytics/yolov5/releases )并将其存储到yolov5 5/ model中。
在此之后,替换
# 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下载它)。

发布于 2022-02-27 09:20:41
这里还有一个问题。当此代码在一台根本没有internet连接的机器上运行时。那么,您可能会面临以下错误。
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要克服此错误,您需要手动下载来自Arial.ttf的https://ultralytics.com/assets/Arial.ttf文件,并将其粘贴到Linux上的以下位置:
/home/<your_pc_user>/.config/Ultralytics在窗口上粘贴Arial.ttf:
C:\Windows\Fonts错误消息的第一行提到了同样的事情。之后,代码在脱机模式下平稳运行。
此外,正如在https://docs.ultralytics.com/tutorials/pytorch-hub/上提到的,除了上传到PyTorch模型集线器上的模型之外,任何经过自定义培训的模型都可以通过这段代码访问。
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使用此代码,对象检测由本地保存的自定义模型执行。一旦,自定义培训模型被保存在本地--这段代码直接访问它,避免了互联网的任何必要。
https://stackoverflow.com/questions/71251177
复制相似问题