准备工作:
开始之前,确定已经完成教程4、5的所有步骤,能测试简单的例子。最好拔掉板载摄像头,插上USB摄像头再上电。
1、检测摄像头设备
假如你在jetson-inference目录下。
如下图,执行:
ls /dev
确定是否有video0这个设备,有可能多个摄像头时,注意后面的编号不同。
2、参数介绍
与前面的imagenet-console示例类似,相机应用程序构建在该/aarch64/bin目录中。它们在带有OpenGL渲染的实时摄像机流上运行,并接受4个可选的命令行参数:
· --network 标志设置分类模型(默认为GoogleNet)
§ 请参阅下载其他分类模型以获取可用的网络。
· --camera 标志设置要使用的摄像头设备
通过指定传感器索引(0或1等)来使用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 #使用GoogleNet,V4L2摄像机/ dev / video1(1280x720)
$ ./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加载googlenet或alexnet。
$ ./imagenet-camera --network=googlenet --camera=/dev/video1 #使用googlenet的USB摄像头运行
$ ./imagenet-camera --network=alexnet --camera=/dev/video1 #使用alexnet运行
每秒帧数(FPS),来自视频的分类对象名称和分类对象的置信度被打印到openGL窗口标题栏。默认情况下,应用程序可以识别多达1000种不同类型的对象,因为Googlenet和Alexnet是在包含1000类对象的ILSVRC12 ImageNet数据库上进行培训的。1000种类型对象的名称映射,可以在repo下找到data/networks/ilsvrc12_synset_words.txt
这样识别到物体就会在上面显示物体英文名称,百分数就是匹配百分比。