赞
踩
这个比赛我觉得是半年来收获最大的
开始做这个比赛的时候,还有两个月的时间,花了一些时间看相关论文,当时看的是PVNet和CDPN,最后决定用CDPN试一下
CDPN的预测需要mask信息和每个物体的3D模型的。
Mask:
比赛数据集没提供mask信息,就想着试试不用mask的话,CDPN效果如何:
还试了不同的scale参数,其中不用Mask最好的效果:
使用Mask最好的效果:
事实证明,还是需要Mask的,不然效果连Baseline都赶不上。
所以,对于Mask信息的获取进行了以下尝试:
1.一开始尝试将所有的3D点云射影到2D图像上来获取Mask,但是失败了,这种质量的Mask是不能用的:
2.想用其他数据集来训练一个实例分割器,后来找了数据集之后觉得没有必要
3.使用Hybrid Task Cascade算法在COCO上训练的权重试了下,效果很不错,就打算先用这个来获取Mask信息了:
3D Model:
CDPN的要求是每个物体和自己所属的模型对应上,我当时觉得这么多车型不好做分类,用车的尺度的平均值做映射的模型,用2D图像的像素预测对应的3D点
比赛结束后看6DVNet和RoI: 10D这两个论文,前者对汽车进行了车型分类(奥迪、宝马)这样的,后者提出了一个方法,能处理同类的模型
然后对这个CDPN的方法坐在了初步规划:
写完代码之后进行训练,训完之后发现效果很不好,框都上天了
后来发现是有两个错误:
修改之后又继续进行训练了。
2D与3D坐标的拟合:
后来想将R和T分开处理,尝试用多项式来函数化图像中的xy和空间中的XYZ的关系,将X、Y、Z分别用x、y来拟合,发现效果并不好,所以还是要用深度学习的方法。
虽然我多项式拟合失败了,但是我觉得X、Y、Z和xy之间应该有一种对应函数,可直接算出,因为车都在路面上,就是说不会有车完全在另一个车的后面,也不会有深度位置的问题,如图所示:
后来经过老师的指点,用3D空间的数据拟合一个平面,因为车都是在地上走的,必然都在路面这个平面上,使用的代码如下:
这是参考的方法:
平面拟合 SVD版本
求交点
拟合出的平面如图:
计算的误差如下:
误差还是大到不能用,比赛完了回家后发现,我的方法是有错误的:
我把成像平面放到了焦距处,而成像平面应该在 z z z处,具体信息可以看看这个:针孔摄像机模型和透镜
但是效果还是不行,loss也降不下去,感觉还是车的模型那里有问题,之后就放弃了CDPN的方法,使用其他参赛者提供的kernel,进行一些改动,毕竟参加的初衷就是练手,提不出新方法,学学别人的也是一种进步
这个方法其实没什么东西,就是直接回归
尝试的方法:
用bin的操作来获取角度roll,CenterNet源码就是用的这个操作
这方法有时候有效,有时候没用,我感觉可能是网络结构的原因?在下面的实验中是无效的
对pitch也做了角度bin预测,降分 18行
将不同的信息用不同的branch来预测,loss比例设置为0.1:0.7:0.3,这是我的唯一有效的改动
后来在其他论文里也看到这样的描述。Attention is all you need 里面也提到了,RoI10D也提到了,同多头预测多种信息,只
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。