哈喽,大家好,我是唐雨迪,今天呢咱们来说一说视觉领域当中另外的一个分支叫做点云任务。点云和我们图像不同啊,图像我们是做二 d 领域当中一个算法,点云呢,我们要做不到三 d 当中了,那这里边我们可能会遇到哪些问题啊?我会大家可能最犯愁的一件事, 点云任务啊,我们代码量突然比较大,实际上的数据级呢也比较大,而且的环境配置啊,都比较麻烦。那你说有没有什么好的工具,好的框架能帮我们解决这个事呢?哎,还真有,叫什么叫做 imti, 是三 d 商讨好做这个 mv 体验的三季当中啊,帮我们集成了很多啊,最新的视觉啊领域当中,比如说电源任务怎么处理,电源做分割啊,点做检测啊,以及多维的任务都怎么去做。 这里边最便捷一件事啊,就是我们后续当咱们要去做一些对比实验的时候,我们不用来回配环境了,一个环境当中啊,基本上能把我们所有点的任务都刨起来,都玩起来。 所以啊,归根到底一句话,但凡咱们玩跟点约跟三 d 相关的东西,直接呢我们用 m m t, 它是三 d 就可以了。里边的算法数据增强这个模块儿,以及数据数据流程全部啊,真的是都给我们准备好了。
粉丝1.6万获赞3.7万

欢迎回到 r t m pose 关键点检测全流程系列教程上一讲,我们安装好了 m m detection 目标检测算码库和 m m pose 姿态估计和关键点检测算码库。 我们下一讲要用到的 rtm pose 关键检测算法呢,是 top down 自上而下,自顶向下的算法,需要先运行目标检测得到预测框,再对框中的内容进行精准的关键检测, 先粗条画框,再金条定位关键点。那这种 top down 算法的优点呢,就是特别准,缺点就是需要训练两个模型,目标检测模型和关节检测模型。所以 这一讲呢,我们就用 m m detection 训练目标检测模型,在我们的教程样例数据集中就使三角板目标检测模型。 下一讲呢,再在目标检测框的基础上训练 rtm pose 关键点检测算法。 c 代码是下载数据集,那这个数据集既是目标检测的数据集,也是关键点检测的数据集,因为这个数据集的格式是 m s q 格式的,它既包含了目标检测的标注,也包含了关键点检测的标注。 第一代码是下载目标检测模型的 config 配置文件。第二代码是用 mm detection 去训练三角板目标检测模型, 第三代码是可视化训练过程中的日志。第四代码是模型权重的经典转换。第一是下载训练好的三角板目标检测模型的权重啊,这是你也可以换成你自己训练得到的权重,也可以用我预先提供的权重。 一二代码是用训练好的三角板目标检测模型进行图像和视频的预测, 那只在云端跑的,在本地你也可以运行摄像头实时预测的三角板目标检测。好,那我们就来看吧。从 c 代码开始,先下载数据集,注意这个代码要分别在 m m pose 目录和 m m test 目录都要跑一遍。 我们先在 mpos 目录里边跑,删除掉原有的数据级文件,如果有的话,然后下载数据级的压缩包,这个压缩包名字叫传购二幺五 kippon 的 coco 点 zip 文件, 在 data 目录下就能看到这个压缩包了。然后呢,解压这个数据集,再删除掉压缩包。好,刷新一下就能看到这个文件夹了。 里面这次文件夹里放了二百一十五张三角板的图片。 train coco 点 jason 是 ms coco 格式的训练级标注文件。 well, coco 点 jason 是 ms coco 格式的测试级标注文件。 这里我们就不再单独区分验证级和测试级了,统一把不用于训练的图片都叫做测试级, 所以用训练级训练算法,用测试级评估算法。那关于这个 m s q 的格式,我们在之前的视频有详细的介绍过,在 categories 里边是框的类别,点的信息和点的连接的信息,然后在 images 里边是每一张图片的信息, 在 annotation 四里边是每一个框的信息。在 m s 后格式里边,目标检测,实力分割,关键点检测都是以 以框的形式来组织的啊,比如说你看这个,所以没三的框它的啊。关键点检测的标注,实力分割的标注和目标检测的标注都在一起,是以框的单位组织的。这又是 masco 格式,验证机也是一样的。 再下载一些用于测试的图像和视频,那就是四个图片和三个视频,都是我和小伙伙伴一起拍摄的。 好,你就在这个 test triangle 文件夹里边有四个图片和三个视频,你也可以下载下来单独看一下, 也可以用 pillow 去可视化一些。呃,数据集中的图片或者样例图片。然后呢,删除系统自动生成的多余文件,直接运行就可以啦。好, 这是我们在 m pose 目录里边运行了一遍,然后重启 kernel, 在 m detection 目录里边再运行一遍。等于说把这个数据集既放在了 m pose 目录里边,也放在了 m detection 目录里边,分别用来训练关键检测模型和目标检测模型。 这个也可以再运行一下用于测试的图像和视频。好,然后删除系统生成的多余文件。 我们现在到 mm detection 目录里边瞅一眼。好,这是数据集,这是用于测试的四个图片和三个视频。好,那接下来我们就在 mm detection 目录里边用下载下来的这个数据集去训练三角板目标检测 模型。那注意,这里强调一下,这个代码要在 m m pose 和 m m detach 两个目录里边分别运行一遍。两个文件夹里边的 data 目录下都应该有数据级文件。 好,我们来先下载三角板目标检测的 config 配置文件。 好,先进入 m m pose 目录或者 m t action 目录。那这个代码也是需要在两个文件夹中分别运行的, 然后下载 config 配置文件至 data 目录。这是下载了 fast r c n 目标检测的 config 文件,再下载 r t m debt tiny 三角版目标检测的 config 配置文件。我们先看一下,在 data 目录下有了这两个文件,这是三角版目标检测 fast rcn 的配置文件,那指定数据级的类型是 ms coco 格式的,然后 data rout 是数据级的路径,那是 data 目录下的全国二幺五 k point 的 coco 这么一个路径, 然后有一个类别是 s j b 下划线 rect, 就是三角板,然后有多少个类别呢?就是这个类别只有一个类别,对于关键点检测而言, 载入预训练模型权重就是一个在 ms coco 八十个类别数据级上训练出来的预训练 faster rcn 模型,指定训练超参数,然后指定 pipeline 和数据级的 data loader, 训练级的 data loader, 测试级的 data loader, 然后测试的评估指标模型的结构, 然后还有学习力优化器这些东西。那如果你换成自己的目标检测数据级的话,其实只需要改啊,改前面这三行就可以了,后边的就保持不变, 那我们看 rtm debt tiny。 呃,同样也是只改这三行。 数据级是 m s 后格式的数据级的目录,它的类别名称,框的类别名称,然后训练超参数,那因为 r t m detteny, 它这个模型需要多训练一些,所以这个 maxipox 给它改的高一点。呃,如果你的显存不够的话,就把 best size 也调小一点 好,然后可以看到这是 default 一些默认的设置。呃,训练和测试的一些配置, 然后训练和测试的 pipeline 和。呃, data loader, 还有测试的一些工作流模型的结构,这是 rtm debt tiny 的模型结构, 可以看到它有啊, backbone 骨干网络,有 neck 脖子和 head 梳梳头, 这里面每一层都可以自定义去修改的,这里就先保持这个我自己的这个不变就可以了。你只需要把前三行换成你自己的数学题 啊,准确的说,只有这两行换成你自己的数据计,就可以训练一个目标检测模型了。这是在 m pose 目录里边运行了,我们再切换到 m detection 目录里边再运行一遍。 那现在在 m n detection 目录里面的 data 文件夹下也存在了这两个文件。 好,那下面就可以开始训练了。 训练非常简单,只需要进入 mmt text 目录,然后运行这一行命令行就可以了。运行的其实就是 python tools 里边的 train 点 p y 文件, 然后呃传入目标检测的模型配置文件。 那建议这行在命令行中运行。那我们就在命令行中运行吧。啊,打开终端,然后进入 work 目录, 进入关键检测,然后进入到我这个文件夹里边,然后再进入 ammotection。 好,这是 ammotection 目录下的文件,然后运行这一行脚本。 所以对于 open up lab 而言,所有的配置,所有要改的东西都在这个 config 配置文件里边。不管是模型结构,学习率优化器,数据级,还是各种各样的护客 测试级的评估指标,全部都在 config 文件里边。你只要写好这个 config 文件,直接运行这个评估训练预测的脚本就可以了。他已经开始训练了,那在 amatiation 目录下就会生成一个 work directories, 然后就可以找到我们这个这次的训练,然后日志就保存在这个文件夹里, 一会我们训练完看一看,在训练过程中,他会保存一些模型文件,就会放在这个目录下,这个点 p t h 文件就是拍套式的文件,就是我们得到的三角板目标检测模型的模型权重文件。 在训练过程中,你可以看到每隔若干轮,他就会在测试机上评估一次,计算出若干评估指标,比如说 map, 比如说 pasco voc 的这个 a p 五零,那你可以监控这个值是不是在不断的上升,不断的增长。 训练完成之后,目录就长这个样子,得到一个 epoq 五十模型权重文件, 然后日志保存在了这个日期时间命名的文件夹里,那我们就用第三代码可视化一下训练日志吧。载入训练日志,那在这里边有一个 waist data 这个 jason 文件, scalers 点这层文件就保存了。训练过程中的日志,包含了损失函数、评估指标、学习率和时间戳这些值。我们用 pandas 把它整成表格,训练级整成一个表格,测试级整成一个表格,然后分别保存到本地, 然后引入 matrolib 的中文字体,我们来画图。如果这个代码他画出来的中文是框框,那你就重启 carno, 重新运行一遍,直到他正常为止。定义可视化辅助函数,那这些其实就是我们之前用过很 多次的代码模板了,随机生成颜色现行和这个标记。先可视化一下训练级的损失函数,那就是在表格里边的这几项都是和损失函数相关的。 los 开头的。用我们这个函数去画一下图, 可以看到训练级的损失函数是不断的降低的,不管是目标检测的损失函数,分类的损失函数, rpn 的损失函数,都是在逐渐的降低的,那训练级上的准确率是在不断的提升,高的 最终收敛。然后测试级的评估指标,先画 ms cocometric, 就是 map, 各种 map, 这是小目标的中目标的大目标的 m a p m a p 五零, m a p 七十五啊。关于它的含义,可以看一下我优乐 v 三的论文经 读,里边有详细的这个评估指标的介绍,好,画一下你会发现都是在提升的。那为什么底下这两条线这么低呢?这是因为我们这个数据集里边根本就没有特别小的目标,没有特别小的框,所以这个小目标 的这个值是一直是一个常数,因为就没有小目标。再算 passco voc 的 metric, 就是 a p, 也是看到不断在上升的。 通过这个图我们就能监控到模型训练过程中是没有问题的,而且这些图也可以放到论文里边。 刚刚我们训练得到的是 fast r c n 模型,你也可以把配置文件换成 r t m det, 就可以训练得到 r t m det 三角板目标检测模型了。训练得到的这个目标检测模型到底精度怎么样呢?可以放 到测试级上去跑个分,评估一下模型的精度。用 m detection 里边的 toos test 点 p y 脚本,先传入模型的 config 配置文件,再传入训练得到的 checkpoint 全中文件 运行,最后就会计算出这个模型在测试级上的跑分,各种 m a p m a r a p a r 都有,然后 可以看到小目标、中等目标和呃大目标分别的评价指标,那为什么是负一呢?因为我们的数据集里面根本就没有小目标和中等目标,在 work directories 也会生成一个对应的目录,然后这个 jc 文件里也保存了所有的结果。 如果我们这是一个卡狗竞赛的话,就是看这几个指标的跑分。训练完成之后,可以用第四代码做模型权重文件的 经典转换就是把大的 p t h 文件变成小的 p t h 文件。为什么要做这一步呢?是因为训练过程中得到的这个 p t h 文件包含了很多训练的信息,我们 预测的时候用不上这些信息,他只会让这个 pth 文件变得过大。所以我们就用 toss 里边的 motor converters publish model 点 py 脚本,把这个大的 pth 文件变小。我们之后预测就用这个小的 pth 文件, 他只是把训练过程中的无关信息剔除掉。模型没有做任何的精度损失,没有做任何的减脂量化知识蒸馏模型,还是那个模型精度没有变 好。我们分别把 fast rcn 的这个模型和 rtm deta 的模型做精简转换,得到这两个新的文件, 那这两个新的文件如果你不想自己训练的话,也可以直接下载我提供的这个模型权重,那注意一一代码也是要分别在 mm pose 目录和 r 的 detection 目录里边分别运行的 好,下载 fast r c n 的三角版目标检测模型和 r t m debt 目标检测模型运行一下,先在 m m pose 里边运行这两个代码块儿,下载到 checkpoint 目录下, 然后重启 kernel, 切换到 mm detection, 然后再运行这个代码,就下载到了 mm detection checkpoint 目录下只有两个点, p t h 的模型权重文件, 然后就可以用这个三角板目标检测模型对新的图像视频摄像头是画面做预测了,然后先进入 mdh 主目录,然后逐行运行单张图像的预测和视频的预测。 这个脚本的参数先传入代测视频,再传入 config 文件,再传入 checkpoint 权重文件,指定输出的文件夹路径、指定计算设备和指定目标检测的执行度预值。 运行完成之后,在 altpuse 目录下就会生成这几个文件,我已经把它下载下来了,来看看效果。这是 目标检测的预测结果啊,只有框可以看到,效果还是很不错的。这是 r t m debt, 这个是视频的预测结果,效果也是很不错的, 这分别是 fast rcn 和 rtm deta 的视频预测结果,两个效果都很好,所以 他们为后续的关键点检测打下了坚实的基础。首先需要目标检测把框的位置先定位出来,关键点检测模型才能够在框的基础上进一步的去精调,去生成关键点的精准坐标。 好,那从这两个视频比较的话,其实 r t m det 的效果会更好, 对吧?这个效果简直堪称完美。所以 rtm debt 接 rtm airpods 是一个黄金组合搭档,这就完成了在云端三角板目标检测的训练、评估和预测。那在本地怎么办呢?在本地直接下载 config 配置文件和 checkpoint 权重文件就可以了。这是先在 mm pose 目录里边运行,然后再到 mm protection 目录里边运行, 现在在 mm pose 和 mm detection 的 checkpoint 目录下都有了这两个 p t h 文件,在 data 目录下都有了这两个 config 文件, 检查一下没有问题,你就可以在本地跑摄像头的三角板目标检测的预测了。 进入 m m detection 主目录,然后运行 demo 里边的 webcam demo, 传入 config 配置文件和 checkpoint 权重文件。那我们先跑一下 r t m debt tiny 这个小的模型 好,效果还是很不错的,速度也很快,这是纯 cpu 运行的,如果你的电脑上有 gpu 的话,效果应该会更好。 现在我们换成这个 fast rcn 模型试一下, 你会发现运行的会非常慢,所以不太推荐用 face r c n 还是推荐用 r t m det, 那我们就完成了在云端训练模型评估,模型预测 图像和视频,在本地调用摄像头实时预测三角板目标检测的部分就结束了,下面我们就做三角板关键点检测的部分。

小目标和远程目标的检测一直是监控应用中的一个主要的挑战,因为它缺少足够的像素细节,所以说利用这个传统的就是检测器来检测的话比较困难啊。这项工作提出了一个名为切片辅助超推理的一个开源框架,该开源框架为小目标检测提供了一个通用的切片辅助推理和微调管道。 然后他所提出的一个技术是通用的,因为他可以就是跟这个优乐系列以及 s i d 系列,嗯,就是做一个一个就是结合来使用,然后而且不需要任何的一个微调。目前这个开展换展已经,但跟他不开展,感兴趣的话可以关注一下,谢谢大家。
