训练图像分类模型

训练图像分类模型1.训练前的准备2.开始对猫狗数据集重新训练3.执行训练的命令4.训练开始的信息解读5.模型精度讲解6.训练完毕后,把模型转成一个onNano的模型文件7.用TensorRT处理图像8. 1个训练周期、35个训练周期、100个训练周期的结果9.附录

1.训练前的准备

在这个教程开始前,python必须安装好torchCPU+GPU版本,Yahboom的镜像是已经安装的了。如果没安装,请自行安装,需要科学上网,也可以看本系列教程的torch的安装教程。

2.开始对猫狗数据集重新训练

如果图片因为网络问题下载不成功,可以到附件中的"模型/cat_dog"中找到cat_dog.tar.gz传输到Nano上,yahboom可以跳过此步骤

3.执行训练的命令

注意:如果内存不足导致训连过程中被“终止”,请尝试交换虚拟内存和禁用桌面GUI.

交换虚拟内存(参考链接):https://github.com/dusty-nv/jetson-inference/blob/master/docs/pytorch-transfer-learning.md#mounting-swap

4.训练开始的信息解读

5.模型精度讲解

在这个由5000幅图像组成的数据集上,在Jetson orin Nano上训练ResNet-18每个时期大约需要2分钟,或者大约55分钟来训练模型达到35个时期和80%的分类精度。下图用于分析历元的训练进度与模型准确性的关系: image-2023042800005 在大约第30个时期,ResNet-18模型达到80%的精确度,在第65个时期,它收敛于82.5%的精确度。有了额外的训练时间,您可以通过增加数据集的大小来进一步提高准确性或者尝试更复杂的模型。 默认情况下,训练脚本设置为运行35个时期,但是如果您不希望等待那么长时间来测试您的模型,您可以提前退出训练并继续下一步(可以选择稍后从您停止的地方重新开始训练)。通过--resume这个参数进行恢复 我们的附录/模型文件/cat_dog中提供了训练35个周期的模型和100个周期的模型,如果你不想训练,可以自己把模型传到Nano下的你的路径/jetson-inference/python/training/classification/models/cat_dog解压就好,yahboom的镜像则不需要操作,里面已经存在100次的训练后的模型

6.训练完毕后,把模型转成一个onNano的模型文件

onNano的模型文件方便TensorRT进行处理

这将创建一个名为resnet18.onNano下面的jetson-inference/python/training/classification/models/cat_dog/

7.用TensorRT处理图像

以yahboom镜像的命令为例

以上的命令执行完毕,可以在下面的路径观察的到结果,该命令是处理一张图片 路径:/home/jetson/jetson-inference/python/training/classification

如果你想要测试所有的图片可以输入一下命令

输出的结果在/home/jetson/jetson-inference/python/training/classification/data/cat_dog/test_output_dog路径下

如果你想要打开摄像头进行检测

其它视频流文件的打开方式,可参考:https://github.com/dusty-nv/jetson-inference/blob/master/docs/aux-streaming.md

8. 1个训练周期、35个训练周期、100个训练周期的结果

9.附录

如果你想对自己的各种类别不同的图片进行训练 可以参考以下的链接: https://github.com/dusty-nv/jetson-inference/blob/master/docs/pytorch-collect.md