NVIDIA Jetson AGX Orin (四) 编写自己的图像识别程序(python)

举报
Pengpengpeng 发表于 2024/10/15 20:49:11 2024/10/15
【摘要】 编写自己的图像识别程序(Python) Coding your own image recognition program(python)

在 Python 中从头开始创建一个名为 my_recognition.py 的图像识别新程序。此脚本将从磁盘加载任意图像并使用 imageNet 对象对其进行分类。

从终端运行以下这些命令以创建目录、源文件并下载一些测试映像:(我这里路径为~/myrive/my_recognition_python,路径可自定义)

cd mydrive

mkdir my_recognition_python

cd my_recognitio_python

touch my_recognition.py

chmod +x my_recognition.py

wget https://github.com/dusty-nv/jetson-inference/raw/master/data/images/black_bear.jpg 

wget https://github.com/dusty-nv/jetson-inference/raw/master/data/images/brown_bear.jpg

wget https://github.com/dusty-nv/jetson-inference/raw/master/data/images/polar_bear.jpg 

接下来,编辑python代码

在您选择的编辑器中打开vim my_recognition.py

首先,让我们在文件的最顶部添加一个 shebang 序列,以自动使用 Python 解释器:

#!/usr/bin/python3

接下来,我们将导入要在脚本中使用的 Python 模块。新增 import 语句,用于加载 jetson.inferencejetson.utils 模块,用于识别图像和加载图像。我们还将加载用于解析命令行的标准 argparse 包。

import jetson.inference
import jetson.utils

import argparse

接下来,添加一些样板代码来解析图像文件名和可选的 --network 参数:

# parse the command line
parser = argparse.ArgumentParser()
parser.add_argument("filename", type=str, help="filename of the image to process")
parser.add_argument("--network", type=str, default="googlenet", help="model to use, can be:  googlenet, resnet-18, ect. (see --help for others)")
args = parser.parse_args()

添加以下行以使用从命令行指定的文件名加载图像:(返回的图像将是一个 jetson.utils.cudaImage 对象,其中包含 width、height 和像素格式等属性:)

img = jetson.utils.loadImage(args.filename)

所有可用的分类模型都在 ImageNet ILSVRC 数据集上进行了预训练,该数据集可以识别多达 1000 种不同类别的对象,如不同种类的水果和蔬菜、许多不同种类的动物,以及日常人造对象,如车辆、办公家具、运动器材等。

net = jetson.inference.imageNet(args.network)

接下来,将使用 imageNet.Classify() 函数通过识别网络对图像进行分类:(imageNet.Classify() 接受图像及其尺寸,并使用 TensorRT 执行推理。)

class_idx, confidence = net.Classify(img)

它返回一个元组,其中包含图像被识别为的对象类的整数索引,以及结果的浮点置信度值。

最后一步,让我们检索类描述并打印出分类的结果:

class_desc = net.GetClassDesc(class_idx)


print("image is recognized as '{:s}' (class #{:d}) with {:f}% confidence".format(class_desc, class_idx, confidence * 100))

imageNet.Classify() 返回已识别对象类的索引(对于在 ILSVRC 上训练的这些模型,索引介于 0999 之间)。给定类索引,imageNet.GetClassDesc() 函数将返回包含该类的文本描述的字符串。这些描述是从 ilsvrc12_synset_words.txt 自动加载的。

下面来测试:

./my_recognition.py polar_bear.jpg

生成相关信息

另外两个图也是类似测试。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。