Skip to content

基于设备上解码的 Yolo 检测

Yolo-on-device

存储库 ( 修改自 device-decoding) 包含直接使用 DepthAI SDK (main_sdk.py) 或 DepthAI API (main_api.py) 在设备上解码运行 Yolo 目标检测的代码。目前,支持的版本有:

  • YoloV3 & YoloV3-tiny,
  • YoloV4 & YoloV4-tiny,
  • YoloV5,
  • YoloV6,
  • YoloV7,
  • YoloV8,
  • YoloV9,
  • YoloV10

我们在 main_sdk_v*.py(不推荐)main_api.py 中使用相同样式的 JSON 解析,但您也可以在代码中手动设置这两种情况下的值。

导出模型

由于模型必须以某种方式导出转换到 OpenVINO IR,我们提供了关于训练和导出的教程:

用法

depthai_yolo

Usage:

depthai_yolo [OPTIONS] [APP]:[oak|lr|sr]

Options:

  [APP]:[oak|lr|sr]               Provide app name for inference  [default:
                                  oak]
  -m, -w, --model, --weight PATH  Provide model name or model path for
                                  inference  [required]
  -c, -j, --config, --json PATH   Provide config path for inference
  -classes_id, --classes_id INTEGER
                                  filter by class: --classes 0 or --classes 0
                                  2 3
  -classes_str, --classes_str TEXT
                                  filter by class: --classes person or
                                  --classes person cup
  -usbs, --usbSpeed [UNKNOWN|LOW|FULL|HIGH|SUPER|SUPER_PLUS]
                                  Force USB communication speed.  [default:
                                  SUPER_PLUS]
  --color-res [THE_1080_P|THE_1200_P|THE_4_K|THE_5_MP|THE_12_MP|THE_4000X3000|THE_13_MP|THE_5312X6000|THE_48_MP|THE_720_P|THE_800_P|THE_1440X1080|THE_1352X1012|THE_2024X1520]
                                  Color camera resolution, if using OAK-LR,
                                  must be selected from `THE_720_P/THE_400_P`
                                  (zoom from THE_1200_P).  [default:
                                  THE_1080_P]
  --mono-res [THE_720_P|THE_800_P|THE_400_P|THE_480_P|THE_1200_P]
                                  Mono camera resolution  [default: THE_400_P]
  -fps, --fps FLOAT               Set capture FPS for all cameras.  [default:
                                  30]
  --stereo_pair [LR|LC|CR]        Stereo pair, current only for OAK-LR.
                                  [default: LR]
  -s, --spatial                   Display spatial information
  -lr, --lr_check                 If to True, it will perform left-right check
                                  on stereo pair, only for `spatial is True`
                                  [default: True]
  -e, --extended_disparity        If to True, it will enable disparity, only
                                  for `spatial is True`
  -sub, --subpixel                If to True, it will enable subpixel
                                  disparity, only for `spatial is True`
  -F, --full_fov / --no_full_fov  If to False, it will first center crop the
                                  frame to meet the NN aspect ratio and then
                                  scale down the image  [default: F]
  -syncNN, --syncNN / --no_syncNN
                                  Show synced frame  [default: no_syncNN]
  -high, --high_res / --no_high_res
                                  Show synced frame  [default: no_high_res]
  -color, --color / --no_color    Show lens as color, only for `sr`
                                  [default: no_color]
  -list, -ls, --list_models       List all pre-defined models
  -d, --download                  Download all pre-defined models
  --install-completion            Install completion for the current shell.
  --show-completion               Show completion for the current shell, to
                                  copy it or customize the installation.

用法 1: 模块安装

  1. 安装
    python3 -m pip install .
    
  2. 运行

    可以使用 download_models 下载全部预定义模型 shell > python3 -m depthai_yolo.download_models > # 或 > python3 -m depthai_yolo --download > # 或 > depthai_yolo --download >

    ```shell python3 -m depthai_yolo oak -m model_name -c config_json

    depthai_yolo api -m model_name -c config_json ```

    若使用 OAK_D_SR 请运行 shell python3 -m depthai_yolo sr -m model_name -c config_json # 或 depthai_yolo sr -m model_name -c config_json 若使用 OAK_D_LR 请运行 shell python3 -m depthai_yolo lr -m model_name -c config_json # 或 depthai_yolo lr -m model_name -c config_json

用法 2: 源码运行

  1. 安装依赖
    python3 -m pip install -r requirements.txt
    

    若使用 SDK 请运行 shell > python3 -m pip install -r requirements-sdk.txt >

  2. 运行脚本 > 可以使用 download_models.py 脚本下载预定义模型 >

    python3 -m src/depthai_yolo/download_models.py
    # 或
    python3 run.py --download
    

    python3 run.py oak -m model_name -c config_json
    

    若使用 OAK_D_SR 请运行 shell python3 run.py sr -m model_name -c config_json 若使用 OAK_D_LR 请运行 `shell python3 run.py lr -m model_name -c config_json

用法 3: SDK (不推荐)

  1. 安装依赖
    python3 -m pip install -r sdk_scripts/requirements-sdk.txt
    
  2. 运行脚本
    python3 sdk_scripts/main_sdk_v1.2.py -m model_name -c config_json
    
    python3 sdk_scripts/main_sdk_v1.9.py -conf config_json
    

注意

  • model_name 是来自 DepthAI 模型库 (https://zoo.luxonis.com) 的模型名称或 blob 文件的相对路径。 请查看我们的模型库以查看可用的预训练模型,或使用 -ls/--list_models 参数查看可用模型。
  • config_json 是带有 Yolo 模型元数据(输入形状、锚点、标签等)的 JSON 的相对路径。

JSONs

我们已经为常见的 Yolo 版本提供了一些 JSON。您可以编辑它们并为您的模型设置它们,如上述教程中的后续步骤部分所述。如果您要更改教程中的某些参数,则应编辑相应的参数。一般来说,JSON 中的设置应该遵循模型的 CFG 中的设置。对于 YoloV5,默认设置应与 YoloV3 相同。

Note:值必须与训练期间在 CFG 中设置的值相匹配。如果您使用不同的输入宽度,您还应该将 side32 更改为 sideX 并将 side16 更改为 sideY,其中 X = width16Y = width32。如果您使用的是非微型模型,则这些值为 width8width16width32

您还可以更改 IOU 和置信度阈值。如果多次检测到同一个目标,则增加 IOU 阈值。如果没有检测到足够的目标,则降低置信度阈值。请注意,这不会神奇地改善您的目标检测器,但如果某些目标由于阈值太高而被过滤掉,则可能会有所帮助。

Depth 信息

DepthAI 使您能够利用深度信息并获取检测到的对象的 xyz 坐标。

python3 run.py api -m model_name -c config_json --spatial

或者

python3 main_sdk_v1.2.py -m model_name -c config_json --spatial
python3 main_sdk_v1.9.py -conf config_json --spatial

如果您对使用 Yolo 检测器的深度信息感兴趣, 请查看我们的 文档SpatialObjectDetection