使用预训练的 OpenVINO 模型
================================
在本教程中,你将学习如何用预先训练好的模型实时检测面部,就算用低算力的树莓派也能做到。
我们将向您介绍 OpenVINO 模型库,以及如何从该库中运行模型。
.. image:: /_static/images/tutorials/pretrained_openvino/face-1.png
:alt: preview
如果您想了解有关 OpenVINO、Open Model Zoo 以及如何在本地将 OpenVINO 模型转换为 **.blob** 的更多信息, 请查看我们的 :ref:`本地 OpenVINO 模型转换`
运行 DepthAI 默认模型
#########################
你可以直接修改 :code:`depthai.py` 文件来进行 binding,
或者你可以简单地传递参数给它,让它运行你想运行的模型。
为了简单起见,我们选择后者,简单地传递参数,让 DepthAI 运行 :code:`face-detection-retail-0004`
而不是默认运行的模型。
在切换到使用 :code:`face-detection-retail-0004` 之前,还有一小步。
在这里,我们将只传递在运行 :code:`python3 depthai_demo.py` 时默认运行的神经网络,从而确保我们操作无误:
.. code-block:: bash
python3 depthai_demo.py -dd
然后运行一个典型的演示 MobileNetv2 SSD 物体检测器,该检测器基于 `PASCAL 2007 VOC `__ 的类进行训练,这些类包括:
- 人:人
- 动物:鸟、猫、牛、狗、马、羊
- 交通工具:飞机、自行车、船、公共汽车、汽车、摩托车、火车
- 室内:酒瓶、椅子、餐桌、盆栽、沙发、电视/显示器
我在我的笔记本电脑上运行了这个,OAK-D 放在我的桌子上,随机向上指向 - 它可以识别出我的笔记本电脑屏幕的一角并正确地将其识别为 :code:`tvmonitor`:
.. image:: /_static/images/tutorials/pretrained_openvino/tvmonitor.png
:alt: laptop
运行模型
#########
在验证完之后,让我们继续尝试其他模型,首先是 :code:`face-detection-retail-0004`.
要使用这个模型,只需用 :code:`-cnn` 标志指定要运行的模型名称,如下所示:
.. code-block:: bash
python3 depthai_demo.py -dd -cnn face-detection-retail-0004
这将下载编译的 :code:`face-detection-retail-0004` NN 模型并使用它在颜色帧上运行推理(检测人脸):
.. image:: /_static/images/tutorials/pretrained_openvino/face-2.png
:alt: face
就这么简单。 当然,用你的脸代替我的。
如果你想尝试其他模型,只需浏览 `这里 `__
然后按他们的名字运行,就像上面一样。
现在花一些时间来试用模型。
例如,您可以检查模型可以检测到您的脸部的距离:
.. image:: /_static/images/tutorials/pretrained_openvino/face-3.png
:alt: face
.. image:: /_static/images/tutorials/pretrained_openvino/face-4.png
:alt: face
在第二张图片中,你可以看到我在一个很背光的环境下, 这是人脸检测(和其他特征检测)的主要挑战之一。
在这种情况下,很可能会限制可以检测到脸部的最大范围。
根据上面的测试,对于50%的置信度阈值,此范围似乎约为6米/20英尺。
你可以通过降低模型的置信度阈值 (从 :code:`0.5` `这里 `__ 降低)来获得更长的范围,但代价是增加了误报的可能性。
另一个限制因素是,这是一个相对低分辨率的模型(300x300像素),所以远处的人脸就特别小。
因此,让我们尝试另一种使用更高分辨率的人脸检测模型。
尝试其他模型
###################
我们走过的流程也适用于我们代码库中
(`这部分 `__ 的其他预训练对象检测模型),其中包括:
- 零售业的人脸检测 (:code:`face-detection-retail-0004`)
- 用于驾驶辅助的面部检测 (:code:`face-detection-adas-0001`)
- 面部特征点检测, 简单 (:code:`landmarks-regression-retail-0009`)
- 面部特征点检测,高级 (:code:`facial-landmarks-35-adas-0002`)
- 情绪识别 (:code:`emotions-recognition-retail-0003`)
- 用于驾驶辅助的行人检测 (:code:`pedestrian-detection-adas-0002`)
- 零售环境下的人员检测 (:code:`person-detection-retail-0013`)
- 用于驾驶辅助的车辆检测 (:code:`vehicle-detection-adas-0002`)
- 车辆和车牌检测 (:code:`vehicle-license-plate-detection-barrier-0106`)
- Yolo - 一般物体检测(:code:`yolo-v3`)
- tiny Yolo - 一般物体检测(:code:`tiny-yolo-v3`)
您可以在 :code:`-cnn` 参数后简单地指定这些模型中的任何一个。
我们可以试试 :code:`face-detection-adas-0001`, 它的目的是检测车辆驾驶室内的人脸。
(ADAS 是 Advanced Driver-Assistance Systems 的缩写, 表示高级驾驶辅助系统)。
.. code-block:: bash
python3 depthai_demo.py -dd -cnn face-detection-adas-0001
.. image:: /_static/images/tutorials/pretrained_openvino/face-5.png
:alt: face
因此,尽管具有较高的分辨率,但该模型实际上具有较短的检测距离(相对较小的模型来说)。
为什么这么说呢? 可能是因为它的目的是在车辆的驾驶室中使用,所以经过有意训练只能检测近距离的人脸。 (例如,您不想检测经过的汽车中的人脸。)
空间AI–用3D定位增强模型的功能
#################################################
默认情况下,DepthAI 被设置为返回完整的 3D 位置。
所以在上面的命令中,我们实际上是用 :code:`-dd` (或 :code:`--disableDepth`)指定它不计算。
因此,让我们运行同样的命令,但省略这一行,以便返回(并显示)3D 结果:
.. code-block:: bash
python3 depthai_demo.py -cnn face-detection-adas-0001
.. image:: /_static/images/tutorials/pretrained_openvino/face-6.png
:alt: face
在这里,您可以找到我杯子的 3D 位置!
你可以选择其他模型,改变标签,然后完成了 – 获得你关心的类的实时 3D 位置。
试用该功能,并在 `discuss.luxonis.com `__
上分享您想出的演示(特别是如果您制造的机器人会跟踪您的猫),如果遇到任何问题,请在我们的 `Github `__ 上对我们进行ping操作。
如果您在这些文档中发现任何错误,请告诉我们,我们会及时更正!页面下方有我们的联系方式,在此表示感谢!!!
.. include:: /pages/includes/footer-short.rst