7.TensorRT USB摄像头实时图像识别教程

您当前位置: 首页 > > AI入门教程

准备工作:

开始之前,确定已经完成教程4、5的所有步骤,能测试简单的例子。最好拔掉板载摄像头,插上USB摄像头再上电。

1、检测摄像头设备

假如你在jetson-inference目录下。

如下图,执行:

ls  /dev

image.png 

确定是否有video0这个设备,有可能多个摄像头时,注意后面的编号不同。

2、参数介绍

与前面的imagenet-console示例类似,相机应用程序构建在该/aarch64/bin目录中。它们在带有OpenGL渲染的实时摄像机流上运行,并接受4个可选的命令行参数:

· --network 标志设置分类模型(默认为GoogleNet

§ 请参阅下载其他分类模型以获取可用的网络。

· --camera 标志设置要使用的摄像头设备

通过指定传感器索引(01等)来使用MIPI CSI摄像机

V4L2 USB摄像机通过指定其/dev/video节点(/dev/video0/dev/video1等)使用。

§ 默认为使用MIPI CSI传感器0--camera=0

· --width--height标志设置相机分辨率(默认为1280x720

§ 分辨率应设置为相机支持的格式。

§ 使用以下命令查询可用格式:

$ sudo apt-get install v4l-utils

$ v4l2-ctl --list-formats-ext

您可以根据需要组合使用这些标志,并且还有其他命令行参数可用于加载自定义模型。启动带有--help标志的应用程序以获取更多信息,或参阅Examples自述文件。

以下是启动程序的一些典型方案:

C ++

$ ./imagenet-camera --network=alexnet       #使用alexnet,默认MIPI CSI相机(1280×720

$ ./imagenet-camera --camera=/dev/video1      #使用GoogleNetV4L2摄像机/ dev / video11280x720

$ ./imagenet-camera --width=640 --height=480 #使用GoogleNet,默认为MIPI CSI摄像机(640x480

Python

$ ./imagenet-camera.py --network=alexnet       #使用RESNET-18,默认MIPI CSI相机(1280×720

$ ./detectnet-camera.py --camera=/dev/video1      #使用PedNet,V4L2摄像机/dev/video1(1280x720)

$ ./imagenet-camera.py --width=640 --height=480 #使用GoogleNet,默认为MIPI CSI相机(640x480

3、执行图像识别命令

这个时候最好能通过桌面执行,否则可能看不到摄像头的界面,或者通过VNC远程桌面连接。

进入到bin目录下:

实时图像识别演示位于/ aarch64 / bin中并被调用imagenet-camera。它在实时摄像机流上运行,并根据用户参数,使用TensorRT加载googlenetalexnet

$ ./imagenet-camera --network=googlenet  --camera=/dev/video1  #使用googlenetUSB摄像头运行

$ ./imagenet-camera --network=alexnet  --camera=/dev/video1            #使用alexnet运行

每秒帧数(FPS),来自视频的分类对象名称和分类对象的置信度被打印到openGL窗口标题栏。默认情况下,应用程序可以识别多达1000种不同类型的对象,因为GooglenetAlexnet是在包含1000类对象的ILSVRC12 ImageNet数据库上进行培训的。1000种类型对象的名称映射,可以在repo下找到data/networks/ilsvrc12_synset_words.txt

 

image.png 

这样识别到物体就会在上面显示物体英文名称,百分数就是匹配百分比。