Jetson Nano AI入门(2)— 使用ImageNet进行图像识别

有多种类型的深度学习网络可用,包括识别、检测/定位和语义分割。我们在本教程中强调的第一个深度学习能力是图像识别(Image Recognition),它使用在大型数据集上训练过的分类网络来识别场景和对象。

imageNet 对象接受输入图像并输出每个类别的概率。在 1000 个对象的 ImageNet ILSVRC 数据集上进行了训练后,GoogleNet 和 ResNet-18 模型在构建步骤中自动下载。请参阅下面的其他分类模型,也可以下载和使用。

网络CLI参数NetworkType enum
AlexNetalexnetALEXNET
GoogleNetgooglenetGOOGLENET
GoogleNet-12googlenet-12GOOGLENET_12
ResNet-18resnet-18RESNET_18
ResNet-50resnet-50RESNET_50
ResNet-101resnet-101RESNET_101
ResNet-152resnet-152RESNET_152
VGG-16vgg-16VGG-16
VGG-19vgg-19VGG-19
Inception-v4inception-v4INCEPTION_V4

注:要稍后再次运行 Model Downloader 工具,可以使用以下命令

$ cd jetson-inference/build$ ./download-models.sh

一、安装Visual Studio Code

Visual Studio Code是Linux下面一款优秀的开源IDE开发环境。

使用以下命令行安装curl

sudo apt-get install curl

使用以下命令行下载Visual Studio Code安装包到本地目录

curl -L https://github.com/toolboc/vscode/releases/download/1.32.3/code-oss_1.32.3-arm64.deb -o code-oss_1.32.3-arm64.deb

使用以下命令行安装Visual Studio Code

sudo dpkg -i code-oss_1.32.3-arm64.deb

安装完后程序启动界面如下:

图片

安装Python插件(Extension –> 查找Python)

图片

选择Python编译器版本为3.x

图片
图片
图片

二、使用OpenCV开启ImageNet

在Visual Studio Code里面新建.py文件,导入以下库

import jetson.inferenceimport jetson.utilsimport cv2import numpy as np
import time

设置摄像头窗口的尺寸:

width=1280height=720cam=jetson.utils.gstCamera(width,height,'/dev/video0')

其中dev/vidoe0为摄像头的标识符,可在命令行窗口下采用ls /dev查看。

设置图像识别网络为googlenet

net=jetson.inference.imageNet('googlenet')

设置显示字体:

font=cv2.FONT_HERSHEY_SIMPLEX

主循环:

while True: 
    frame,width,height=cam.CaptureRGBA(zeroCopy=1)
    classID,confidnece=net.Classify(frame,width,height)
    item=net.GetClassDesc(classID)    
    frame=jetson.utils.cudaToNumpy(frame,width,height,4)
    frame=cv2.cvtColor(frame,cv2.COLOR_RGBA2BGR).astype(np.uint8) 
    cv2.putText(frame,item,(0,30),font,1,(0,0,255),2) 
    cv2.imshow('recCam',frame) cv2.moveWindow('recCam',0,0)

按”q”键退出循环:

if cv2.waitKey(1)==ord('q'): break

关闭摄像头和窗口:

cam.release()cv2.destroyAllWindows()

右键单击“在终端运行Python文件”,googleNet识别出了摄像头捕捉到的矿泉水瓶。

图片