前面的所有内容与实验,全部都是关于“推理识别(inference)”的部分,主要是为了让用户先体会到“最终结果”,包括需要花费的精力、以及最后得到的效率。由于项目提供非常多的预训练模型文件,因此我们可以很轻松地调用这些资源,去进行推理计算,并且得到相当惊人的性能。
然而,真正要完成一个深度学习的项目,还是必须完成前面阶段的模型训练部分,本文的重点就是带着大家,利用Hello AI World所提供的资源,开始进行简单的图像分类应用的模型训练。
所有深度学习的模型训练,都必须具备以下的几个元素,缺一不可:
事实上数据集的质量,直接关系到训练出来的模型质量,就如同做菜一样,如果食材不够好,再厉害的厨师也没办法做出真正的好菜。
数据集的来源主要有三个:
这个部分是深度学习的精髓,目前在几个主流神经网络模型之间,很难去评孰优孰劣,就像大餐厅的名厨一样,各有侧重点与风格。在这里,为了要能在Jetson设备上进行训练,因此我们挑选ResNet-18这个网络。
这个就是作为深度学习的模型训练与推理识别的重要工具,目前最主流的应该是Tensorflow,不过这里为了配合迁移学习(transfer learning)的特性,因此选择用pytorch这个轻量级的框架工具
事实上训练用的设备,会直接影响到网络模型与框架工具的选择。这里我们使用NVIDIA Jetson系列设备进行训练,就必须选择轻量级的网络模型与框架工具。
现在就开始我们的图像分类模型训练实验,在开始实验之前,还是有以下几个准备动作需要确认:
1 2 |
|
1 2 3 4 |
将“/mnt/4GB.swap none swap sw 0 0”加入 /etc/fstab 文件后重启 |
1 2 3 4 |
|
接下来就正式进入模型训练的环节,项目作者已经为我们提供基于pytorch的图像分类的Python训练代码,为了便于操作,先将工作目录移到代码的位置:
1 |
|
里面的train.py与onnx_export.py是这个训练过程会用到的两只程序,至于代码内容则不作说明。
接下去的任务就是获取数据集。项目作者提供了两个现成的数据集“cat_dog”与“PlantCLEF_Subset”,除了数据集本身的内容(含类别)不一样之外,其余操作过程是完全一样的,因此这里我们只演示“cat_dog”这个数据集的完整过程,将“PlantCLEF_Subset”的实验留给读者去比照办理。
为了保持指令参数的一致性,建议将数据下载到data目录下,并且将生成的模型文件制定到models路径,现在就开始执行完整的步骤:
1
2
3
4
5 |
# 下载并解压缩 cat_dog.tar.gz(758MB)
# 下载并解压缩 PlantCLEF_Subset.tar.gz(1.34GB)
|
检查看看cat_dog与PlantCLEF_Subset下面,是否都存在<test>、<train>、<val>三个目录以及一个labels.txt文件?
在cat_dog下面的test、train、val目录下,应该都有cat与dog子目录,这个子目录名称会与labels.txt内容对应上。根据这样的原则,请检视一下PlantCLEF_Subset数据集,是否也具备相同的特性?这里应该有20种植物名称分类。
接下去回到train.py与onnx_export.py工作目录下,准备开始执行模型训练任务:
1 2 |
|
由于训练程序使用了迁移学习的技巧,因此在第一次开始训练之前,会先下载合适的预训练模型,然后让这些数据在这个模型基础上进行叠加训练,一方面提高精准度,另一方面也会减少训练时间,这就是“迁移学习”的迷人之处。
系统预设使用resnet-18这个网络,这是比较适合Jetson Nano(含2GB)的轻量级模型,我们也可以使用 --arch= 去指定使用其他网络模型。如果这时候打开jetson-stats监控工具,可以看到GPU持续处于满载状态。
这个cat_dog数据集共有6200张图片,其中训练集5,000张、验证集1,000张、测试集200张,系统预设的epoch数为35,可使用--epoch=去改变epoch数。epoch数量设为多少比较合适?这个没有一定的答案,我们需要观察训练过程中Loss值的变化。
如此的数据量在Jetson Nano 2GB上的训练时间,总共花了285分钟(4小时45分钟)
现在训练完成之后,下一步就是要把这个训练的模型,使用onnx_import.py将pytorch模型文件转换成ONNX格式,以便在后面使用时很轻松地转换成TensorRT加速引擎。
1 |
|
会在models/cat_dog目录下生成“resnet18.onnx”文件,最后以这个文件为基础,调用前面所熟悉的imagenet图像分类指令,来进行推理计算任务,请执行以下代码:
1 2 3 |
--model=$NET/resnet18.onnx --labels=$DATASET/labels.txt \ #模型的文件 --input_blob=input_0 --output_blob=output_0 |
现在使用自己训练的模型来执行imagenet.py,因此需要个别给定--model、--labels的路径,以及--input_blob、--output_blob的内容,其他部分与前面讲解过的用法是一致的,可以用视频、摄像头、文件夹作为输入源,检测一下识别的效果如何?
请自行尝试PlantCLEF_Subset这个关于植物类别的数据集,按照上面完全一样的做法,自行走过一遍,这会让你更加熟悉与掌握整个“图像分类”的应用,从数据集收集、模型训练,到推理识别这三个阶段。
最后,如果您需要建立自己专属的数据集的话,这个Hello AI World项目还提供一个camera-capture这个现场抓图的工具,开启之后会出现一个控制面板(如下图左),可选择Classification或Detection功能,同时还会启动一个摄像头画面市场(如下图右),可以自行调整所需要的的分类与指定路径。
收集完足够的图像数据之后,再按照前面的步骤进行模型训练,就能建立自己专属的模型文件,给自己的Jetson设备进行图像分类的推理识别应用。
好文章,需要你的鼓励
这项研究由德累斯顿工业大学等机构的研究团队完成,旨在解决主动学习未被广泛应用的问题。研究者构建了包含460万种超参数组合的实验网格,系统分析了各参数对主动学习性能的影响。研究发现,不同策略实现间存在显著差异,基于边缘的不确定性策略整体表现最佳,随机选择约4000个超参数组合即可获得可靠结果。这些发现为设计可重现、可信赖的主动学习实验提供了明确指导,有助于降低入门门槛,促进技术在实际应用中的普及。
这项由英国爱丁堡大学和上海人工智能实验室研究者共同完成的工作提出了LongBioBench,一种用于评估长文本语言模型的新型基准测试框架。通过使用人工生成的虚构人物传记作为测试环境,该框架在保持可控性的同时,提供了更真实的评估场景。研究对18个长文本模型的测试表明,即使最先进的模型在检索、推理和可信任性方面仍存在显著挑战,特别是上下文长度增加时。研究还揭示了现有合成基准测试的设计缺陷和长上下文预训练的局限性,为未来模型开发提供了重要指导。
SuperWriter是一项来自新加坡科技设计大学和清华大学的突破性研究,通过模仿人类"先思考后写作"的过程,彻底改良了AI长文生成能力。该研究团队开发的框架包含三个关键阶段:规划、写作和修改,使AI能像专业作家一样进行结构化思考。实验结果表明,经过训练的SuperWriter-LM模型不仅超越同等规模的所有AI模型,甚至在某些领域表现优于规模更大的顶级模型,为AI辅助写作开创了新的可能性。
香港大学与阿里巴巴达摩院合作开发的LayerFlow是一种突破性的层级视频生成技术,能同时生成透明前景、完整背景和混合场景视频。该技术通过创新的框架设计将不同视频层级作为子片段连接,并引入层级嵌入使模型区分各层级。面对高质量训练数据稀缺的挑战,研究团队设计了三阶段训练策略,结合Motion LoRA和Content LoRA,实现了图像和视频数据的联合训练。LayerFlow不仅支持多层视频生成,还能实现视频分解和条件层生成,为视频创作领域带来革命性变革。