Frigate升级过后,发现启动不了了,结果看了一眼更新文档,发现从0.16开始,官方文档明确表示
针对 Nvidia GPU,TensorRT 检测器已被移除,请改用 ONNX 检测器。然后就开始去下载这个onnx文件,结果发现这玩意儿是真的难搞啊,得自己用代码导出,为什么官方不直接提供一个下载地址呢?可能是我瞎没找到吧...
下面是实测可用的导出方式,需要借助docker,不然你就慢慢配置环境吧.
首先把这个docker镜像拉下来docker pull docker.1ms.run/deciai/super-gradients:3.7.0-runtime, 我这里配了加速域名, 不需要的或者拉的时候报错了,可以把docker.1ms.run/删除,没准儿你用的时候这个加速域名已经不可用了
然后使用docker run -it --rm -v ~/:/home docker.1ms.run/deciai/super-gradients:3.7.0-runtime /bin/bash启动并进入这个docker, 由于使用了--rm, 所以当你退出这个docker过后会自动删除容器
进入容器过后,直接cd /home到刚刚映射的目录, 然后执行下面两行命令,替换等下回用到的下载url,不替换会直接提示无法解析域名
|
1 2 3 |
sed -i 's/sghub.deci.ai/sg-hub-nv.s3.amazonaws.com/' /usr/local/lib/python3.8/dist-packages/super_gradients/training/pretrained_models.py sed -i 's/sghub.deci.ai/sg-hub-nv.s3.amazonaws.com/' /usr/local/lib/python3.8/dist-packages/super_gradients/training/utils/checkpoint_utils.py |
然后直接运行python, 输入下面的内容
|
1 2 3 4 5 |
from super_gradients.common.object_names import Models from super_gradients.conversion import DetectionOutputFormatMode from super_gradients.training import models model = models.get(Models.YOLO_NAS_S, pretrained_weights="coco") model.export("yolo_nas_s.onnx", output_predictions_format=DetectionOutputFormatMode.FLAT_FORMAT, max_predictions_per_image=20, num_pre_nms_predictions=300, confidence_threshold=0.4, input_image_shape=(320,320), opset_version=11) |
不出问题的话就没有问题了,ctrl+c退出python, 当前目录下就有yolo_nas_s.onnx文件了,再退出docker,到当前用户目录下,应该就能看到yolo_nas_s.onnx这个文件了,最后只需要把这个文件复制到Frigate映射的/config目录下即可。
对应需要替换的Frigate配置文件
|
1 2 3 4 5 6 7 8 9 10 11 12 |
detectors: onnx: type: onnx model: model_type: yolonas width: 320 # <--- should match whatever was set in notebook height: 320 # <--- should match whatever was set in notebook input_pixel_format: bgr input_tensor: nchw path: /config/yolo_nas_s.onnx labelmap_path: /labelmap/coco-80.txt |
最后再直接提供一个我能够正常使用的yolo_nas_s.onnx文件供大家使用。
通过网盘分享的文件:yolo_nas_s.onnx
链接: https://pan.baidu.com/s/1iseDHpZYTePyHX2Av13LlA?pwd=8dti 提取码: 8dti
