物件检测(object detection)或物件定位(object location)是目前普及度最高的人工智能应用,也是过去几年中神经网络发展最迅猛的领域,短短几年之中创造出非常多优异的经典算法,并且各有所长,如今在数量与质量上都还持续进化中,这现象其实也是造成使用者很大困扰之处,因为究竟哪种神经网络最适合您的使用场景,最终还是得经过实际验证之后才能确认。
TAO工具非常高效地协助我们解决这个难题,让我们在不了解各种神经网络结构与算法、也不熟悉Tensorflow或Pytorch这些复杂框架之前,不用撰写任何C++或Python代码,就能非常轻易地训练好深度学习模型,并且快速验证不同网络模型的性能与效果,这估计能减少能降低80%以上的前期学习与评估的时间成本。
在TAO的cv_samples里提供多个物件检测算法,包括detectnet_v2、dssd、ssd、facenet、fast_rcnn、lprnet、mask_rcnn、retinanet、unet、ssd、yolo_v4等十多个物件检测范例,每一个流程与本系列前一个“8-图像分类的模型训练”的范例是一致的,因此这里只挑选目前普及度较高的ssd神经网络进行示范就行。
首先进入Jupyter操作界面,打开cv_samples/ssd/ssd.ipynb脚本,然后按照以下步骤逐步执行:
在系列文章“5-视觉类训练脚本的环境配置”内有详细的讲解,这里只要对下面两变量进行处理就可以:
然后执行这部分的4个指令快
跳过第一个安装指令块,执行“!tao info”指令块就行。
数据集处理通常是模型训练过程比较消耗人力的步骤。这里推荐不使用脚本里的步骤去下载与解压缩,因为这里指向的下载位置在国外网站,这对大部分使用者是很困扰的,因此最好自行手动下载处理。
$ $ $ |
cd ~/tao/cv_samples/ssd # 请根据您实际路径 unzip -u data_object_image_2.zip -d data unzip -u data_object_label_2.zip -d data |
会在这个工作目录下生成 data/training/image_2、data/training/label_2与data/testing三个子目录,其中训练用数据量为7481张图片、测试数据量为7518张。
如果有自己的数据集想要转到TAO来进行训练,除了先将标注格式转成KITTI之外,最好也遵循上面的路径结构,这样就不需修改spec目录下相关配置文件里面的设定值,对初学者是最便利的方式。
只要这个数据集整理步骤做得完整,后面的部分就会很简单。
在TAO所有范例里,配置文件是所有内容的精华之处,这必须由专业算法工程师群进行调试,不仅要这些神经网络的结构与算法有足够深入的了解,还需要经过足够长的重复调试过程,才能调试出一个够完整的优化参数组合,这部分是英伟达非常庞大精英人力与成本的所提炼出来的精髓。
物件检测应用的设定组,比前面的图像分类要复杂很多,虽然初学者没有能力去做细节参数的调整,但还是得了解一下主要结构,对于学习深度神经网络会有很大的帮助。
在ssd项目的specs目录下有5个配置文件,其中与训练相关的有4个,但实际使用到的就是ssd_train_resnet18_kitti.txt与ssd_retrain_resnet18_kitti.txt这两个配置文件。
前者是提供给首次训练模型时使用,后者是对修剪过的模型进行再训练时候用,两者的内容几乎一样,主要差异在配合迁移学习功能的部分,前者使用“pretrain_model_path”指向从NGC下载的预训练模型,后者使用“pruned_model_path”指向后面会操作的“修剪过的模型”,其他参数都一样。
现在就以ssd_train_resnet18_kitti.txt配置文件来做说明,里面总共有6个参数组:
这是根据网络种类所命名,不同网络的配置组内容都不太一样,例如yolov3范例的配置组为“yolov3_config”,以此类推。每种神经网络都有截然不同的参数内容,在ssd网络有12个参数得设定,而yolo_v4网络有将近20个,所以网络之间的配资是不能套用或互换。如果未来要开发自己的特殊模型,最好从现有的20范例里面去挑选,就能以该网络的配置文件为基础进行修改。
关于这个配置组的内容就不多时间去说明,初学者先不要贸然去修改,以免训练过程发生不可预期的错误,或者模型效果不好。
执行训练时的一些参数设定,这是使用者能进行调整的部分,包括以下部分:
这些存放模型评估的一些参数,可以根据计算设备的显存值调整batch_size大小,不过这些并不影响训练的结果。
NMS(Non-maximum suppression)非极大抑制应用的目的,是要消除多余的框,找到最佳的物体检查位置。
这部分的参数内容请参考系类文章“7-视觉数类的数据增强”,有详细的说明。虽然没办法进入TAO源码(未开放)去确认,但这项参数设定组应该显示在物件检测模型训练过程中,已将“数据增强”功能加进来,这对提高模型精准度会起到很大的效果。
这里最主要配置数据源的路径,以及类别 ”key:value” 对的映射关系;
里面包含tfrecords_path与image_directory_path两个路径设定;
每一组对应的 ”key” 是数据集的原始类别名称,后面映射的 ”value” 是训练后模型的识别分类。
例如这里使用的KITTI数据集中,原始分类有“car/ van/ cyclist/ person_sitting/ pedestrian/ DontCare/ tram/ truck/ misc”等9种分类,经过映射后只保留“Car/ cyclist/ pedestrian”三个分类,没有在映射组里的分类就会忽略,例如truck、misc等
如果使用自己的数据集训练模型,这部分需要自行调整到合适的类别对应,否则训练的结果也不能实现您要达到的识别效果。
包括label_directory_path与label_directory_path,存放校验数据集的图像与标注路径。
以上6组配置在每个物件检测模型的配置文件中都有,但是配置内容不尽相同,TAO已经为所支持的网络都提供优化过的参数内容,初学者只要直接使用就可以,等日后有更深入的掌握,再试着去修改这些参数。【待续】
好文章,需要你的鼓励
本文探讨如何使用生成式AI和大语言模型作为倾听者,帮助用户表达内心想法。许多主流AI如ChatGPT、Claude等被设计成用户的"最佳伙伴",或试图提供心理健康建议,但有时用户只想要一个尊重的倾听者。文章提供了有效的提示词技巧,指导AI保持中性、尊重的态度,专注于倾听和理解,而非给出建议或判断。同时提醒用户注意隐私保护和AI的局限性。
北京大学团队开发出WoW世界模型,这是首个真正理解物理规律的AI系统。通过200万机器人互动数据训练,WoW不仅能生成逼真视频,更能理解重力、碰撞等物理定律。其创新的SOPHIA框架让AI具备自我纠错能力,在物理理解测试中达到80.16%准确率。该技术将推动智能机器人、视频制作等领域发展,为通用人工智能奠定重要基础。
人工通用智能和超级人工智能的出现,可能会创造出一种全新的外星智能形态。传统AI基于人类智能模式构建,但AGI和ASI一旦存在,可能会选择创造完全不同于人类认知方式的新型智能。这种外星人工智能既可能带来突破性进展,如找到癌症治愈方法,也可能存在未知风险。目前尚不确定这种新智能形态是否会超越人类智能,以及我们是否应该追求这一可能改变人类命运的技术突破。
香港大学和蚂蚁集团联合推出PromptCoT 2.0,这是一种让AI自动生成高质量训练题目的创新方法。通过"概念-思路-题目"的三步策略,AI能像老师备课一样先构思解题思路再出题,大幅提升了题目质量和训练效果。实验显示该方法在数学竞赛和编程任务上都取得了显著提升,为解决AI训练数据稀缺问题提供了新思路。