3D目标识别与定位技术的中美贸易战最新进展展?有哪些技术瓶颈

&figure&&img src=&https://pic4.zhimg.com/v2-f9f2a9b644a96f1b06ca5a1d_b.jpg& data-rawwidth=&1144& data-rawheight=&415& class=&origin_image zh-lightbox-thumb& width=&1144& data-original=&https://pic4.zhimg.com/v2-f9f2a9b644a96f1b06ca5a1d_r.jpg&&&/figure&&h2&&b&1.什么是单目深度估计,为什么要用深度学习的方法?&/b&&/h2&&p&假设我们有一张2d图片 &img src=&https://www.zhihu.com/equation?tex=I& alt=&I& eeimg=&1&& ,我们需要一个函数 &img src=&https://www.zhihu.com/equation?tex=F& alt=&F& eeimg=&1&& 来求取其相对应的深度 &img src=&https://www.zhihu.com/equation?tex=d& alt=&d& eeimg=&1&& .这个过程可以写为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=d+%3D+F%28I%29& alt=&d = F(I)& eeimg=&1&&&/p&&p&但是众所周知, &img src=&https://www.zhihu.com/equation?tex=F& alt=&F& eeimg=&1&& 是非常复杂的函数,因为从单张图片中获取具体的深度相当于从二维图像推测出三维空间,即使人眼在两只眼睛来定位自然世界的物体的情况下也依然会有"&a href=&https://www.zhihu.com/question/& class=&internal&&道理我都懂但是鸽子为什么这么大&/a&"的问题存在,更何况使用单张照片了.所以传统的深度估计在单目深度估计上效果并不好.人们更着重于研究立体视觉 (Stereo Vision),即从多张图片中得到深度信息.因为两张图片就可以根据视角的变化得到图片之间disparity的变化,从而达到求取深度的目的.双目视觉中呈现的物理关系在单目视觉预测中有什么作用呢?这个我们以后再提.但是作为当下最火热的函数拟合工具,深度学习能否通过输入图片的某种固有性质来推测出图片相对应的深度呢?答案是肯定的.早在&a href=&https://link.zhihu.com/?target=http%3A//www.cs.cornell.edu/%7Easaxena/learningdepth/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&10多年前&/a&,人们已经开始使用机器学习的方法从单张图片中估计深度.但是本系列着重讲述的方法来自于2014年到现在这几年由于GPU计算能力的发展和大规模图片数据的涌入所产生的一批使用深度学习在深度估计方面的应用.&/p&&h2&&b&2.Eigen et al.&/b&&/h2&&p&使用深度学习做深度估计最经典的两篇文章应该属于Eigen组年的两篇工作:&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (2014 NIPS)&/a&&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Predicting Depth, Surface Normals and Semantic Labels
with a Common Multi-Scale Convolutional Architecture (ICCV 2015)&/a&&/p&&p&在NIPS2014的文章中, 如下图所示,作者提出了一个Multi-Scale的深度神经网络用来解决深度预测的问题.Coarse 网络是一个经典的&a href=&https://link.zhihu.com/?target=https%3A//papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&AlexNet(NIPS 2012)&/a&结构,除了最后一层从1000个分类器换做了一个coarse的depth map,因为当时&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fully Convolutional Networks&/a&还没有出来,主流的做法都是从分类的全连接层恢复图片. 在Fine网络中,作者先采用大步长的卷积核将图片的大小变小之后的卷积核并没有再去降低特征的大小,而是采用了步长为1,大小为5的卷积核去进行特征提取并结合之前Coarse网络的结果得到最终预测的结果.在训练的时候,此网络先训练Coarse网络然后再固定Coarse网络的训练参数再去训练Fine网络.&/p&&figure&&img src=&https://pic3.zhimg.com/v2-621aa305f28a998a59cdea1882d8cad3_b.jpg& data-caption=&& data-rawwidth=&1256& data-rawheight=&731& class=&origin_image zh-lightbox-thumb& width=&1256& data-original=&https://pic3.zhimg.com/v2-621aa305f28a998a59cdea1882d8cad3_r.jpg&&&/figure&&p&在目标函数方面,作者采用了一个Scale-Invariant Error:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-1fb4ee5dcfa417c1fe7adb9_b.jpg& data-caption=&& data-rawwidth=&1200& data-rawheight=&96& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic2.zhimg.com/v2-1fb4ee5dcfa417c1fe7adb9_r.jpg&&&/figure&&p&这里y是真实的深度,y*是合成的深度,i,j分别为深度图中的某一对像素点.&/p&&p&说几个非常有意思的点:&/p&&ol&&li&这篇文章采用了一个multi-scale的结构来进行深度预测,可知在Coarse网络pre-trained之后与Fine网络进行连接能够促使神经网络的输出得到更好的效果,那是不是也可以将Fine网络得到的深度map当做Coarse网络,然后再Fixed这部分参数,将得到的深度图继续作用于一个更"Fine"的网络,得到更好的效果呢?这个过程是不是能一直循环下去?:)&/li&&li&这篇文章并没有将Fine网络更进一步的减小图片的尺寸去得到更好的效果,所以其实这篇文章介绍的方法是一种&b&全局+局部&/b&的策略,使用Coarse网络去预测整体趋势,使用Fine网络在整体趋势上进行局部调优.&/li&&li&这篇文章得到的深度尺寸均小于原图,作比较时,先将得到的深度图采用线性差值还原到与输入图片尺寸相同,再进行比较.其实这里有一个trade-off, 预测得到的小深度图的一个像素点能够代表当前位置的信息整体的深度使得RMSE(Root Mean Square Error)更小,但同时又会失去很多深度细节.&/li&&li&关于损失函数, 首先作者采用的是log域上的比较,因为在深度估计时,相机拍摄到的物体更趋向于一个log分布,即拍摄到的照片中的物体更多集中在深度较浅区域,深度较深的区域在图像中会比较小(少).&/li&&li&之所以作者会使用这样复杂的损失函数,除了作者所提到的scale-invariant,我觉得还有一个原因就是在一张二维照片中,所提取到的深度信息其实更需要依靠点与点之间的关系(上图公式中后半部分).这就牵扯到了一个相对深度的概念,关于这部分会在之后介绍&a href=&https://link.zhihu.com/?target=http%3A//www-personal.umich.edu/%7Ewfchen/depth-in-the-wild/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&NIPS2016&/a&这篇文章中讨论.&/li&&/ol&&p&在ICCV2015的这篇工作中,作者将上述工作进行了拓展.&/p&&figure&&img src=&https://pic2.zhimg.com/v2-827a72c290fe1ea5bcd5a0_b.jpg& data-caption=&& data-rawwidth=&742& data-rawheight=&826& class=&origin_image zh-lightbox-thumb& width=&742& data-original=&https://pic2.zhimg.com/v2-827a72c290fe1ea5bcd5a0_r.jpg&&&/figure&&p&除了在scale1上将AlexNet换成了更深的VGG16,增加了multi-scale的数目,还有就是在网络设计方面抛弃了之前保持fine层不变的思路,在这篇文章中,scale2和scale3的网络都是有pooling layer和upsampling参与的,并没有具体的实验指出上种做法和这种做法的好坏,我更倾向于上一种思路,在这篇文章中我觉得是由于GPU内存的妥协.同时这篇文章也从单一预测深度变成了从单张图片预测深度,法线和label.因为深度信息和法线都属于三维特征,而深度也是和图片的语义分割信息具有很强的相关性.所以在文章中也提到了,预测深度的网络和预测法向量的网络共同使用了一个scale1来加速训练.&/p&&p&&br&&/p&&h2&&b&3.基于Fully Convolutional Networks的深度预测&/b&&/h2&&p&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Fully Convolutional Networks (FCN)&/a&就不用我瞎比吹了,这篇文章2015CVPR, 至今2000+的引用量就说明了一切.还是来总结一下这篇文章的贡献点把.区别于以往pretrained的网络采用固定的全连接层大小来得到image-to-image的转换.这篇文章直接把全连接层去掉了,取而代之的是一个和pretrain网络结构的网络用来将high-level的特征返回到和原图一样的大小.整个网络可以看做是一个encoder-decoder的过程.这样做呢有两个好处,第一个是全连接层几乎拥有整个网络的90%以上的参数,去掉全连接层可以更好的利用GPU. 其次全连接层固定了网络输入输出的大小,只有固定大小的图片才能够被处理.而FCN就可以直接处理&b&&i&几乎所有&/i&&/b&的图片大小.几乎所有的意思在于,在大多数情况下,stride>1卷积核会改变图片的大小,FCN在输出得到的大小会与原图特征大小不相同.这样也会影响网络的处理结果.&/p&&p&在此基础上,&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Deeper Depth Prediction with Fully Convolutional Residual Networks(FCRN)&/a&这篇文章尝试了更深层次的网络带来的好处:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-a8d8dddea4ba_b.jpg& data-caption=&& data-rawwidth=&1314& data-rawheight=&629& class=&origin_image zh-lightbox-thumb& width=&1314& data-original=&https://pic4.zhimg.com/v2-a8d8dddea4ba_r.jpg&&&/figure&&p&在上图中,前两行是一个pretrained的ResNet50结构,最后一行为一系列类似于逆卷积的结构,目的是为了让输出图达到与输入内容相差不大的结果.这篇文章最让我感到惊叹的是pretrain的网络结构带来优势真的很大,如下表中,从AlexNet到VGG再到ResNet,效果几乎提升了一倍:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-93cd10699_b.jpg& data-caption=&& data-rawwidth=&641& data-rawheight=&478& class=&origin_image zh-lightbox-thumb& width=&641& data-original=&https://pic2.zhimg.com/v2-93cd10699_r.jpg&&&/figure&&p&前些日子在这个架构上尝试了&a href=&https://link.zhihu.com/?target=https%3A//github.com/liuzhuang13/DenseNet& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DenseNet&/a&,得到了更好的结果,所以说pretrained的网络真是的居家旅行必备良品.这篇文章的其他贡献点如同鸡肋就不赘述了.总结就是:pretrained大法好!&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a5cd09ee877b426af444_b.jpg& data-caption=&& data-rawwidth=&708& data-rawheight=&572& class=&origin_image zh-lightbox-thumb& width=&708& data-original=&https://pic2.zhimg.com/v2-a5cd09ee877b426af444_r.jpg&&&/figure&&p&虽说数据上的情况如上,但是我们再来看看视觉上的感受,从上图可以看到,VGG16预测得到的深度图有更清晰的轮廓并且细节比较丰富,而ResNet50由于网络比较深,得到的结果比较smooth.这也和网络的结构有关.下图分别为VGG16和ResNet50的网络结构,可以看到VGG16在初始阶段并没有减少特征的大小,而ResNet50在刚开始就进行了stripe为2的卷积,紧跟了一个maxpool.所以以输入为224计算,VGG16会在完整图片上采集更多的信息,而ResNet50虽然在刚开始使用了一个大的卷积核但是特征方面的处理大多数都是在224/4这个特征大小上进行卷积的.&/p&&figure&&img src=&https://pic2.zhimg.com/v2-54bab7ea7be61fcb21dc8f_b.jpg& data-caption=&& data-rawwidth=&463& data-rawheight=&273& class=&origin_image zh-lightbox-thumb& width=&463& data-original=&https://pic2.zhimg.com/v2-54bab7ea7be61fcb21dc8f_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-d3c93b8cbd1e48c5fec56be48f1a933a_b.jpg& data-caption=&& data-rawwidth=&1159& data-rawheight=&321& class=&origin_image zh-lightbox-thumb& width=&1159& data-original=&https://pic1.zhimg.com/v2-d3c93b8cbd1e48c5fec56be48f1a933a_r.jpg&&&/figure&&p&再来对比一下FCRN和Eigen的文章,以下截图接上一个对比:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-85fccdc7c58dbbbe182d_b.jpg& data-caption=&& data-rawwidth=&536& data-rawheight=&558& class=&origin_image zh-lightbox-thumb& width=&536& data-original=&https://pic3.zhimg.com/v2-85fccdc7c58dbbbe182d_r.jpg&&&/figure&&p&proposed为FCRN的方法,右图为eigen的方法,可见,虽然FCRN在整体的深度预测上表现的更好(使用了更深的ResNet50网络),而Eigen的细节要丰富一点(使用了VGG16),而且轮廓要更锋利一点.&/p&&p&所以就留下了一个疑问,如何在保留细节的基础上得到更好的整体效果呢?这个其实在语义分割问题上已经有了很多解决方法,比如基于图论的条件随机场&a href=&https://link.zhihu.com/?target=http%3A//www.robots.ox.ac.uk/%7Eszheng/papers/CRFasRNN.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Conditional Random Fields as Recurrent Neural Networks(CRFasRNN 2015 ICCV)&/a&, 基于全尺寸网络的&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Full-Resolution Residual Networks for Semantic Segmentation in Street Scenes(FRRN 2017 CVPR)&/a&随缘介绍吧.&/p&&p&&br&&/p&&h2&4.推荐&/h2&&p&第一次写专栏而且这篇文章拖了一个国庆假期,最后推荐一款在同期一起打通关的游戏:&a href=&https://link.zhihu.com/?target=http%3A//store.steampowered.com/app/319630/Life_is_Strange__Episode_1/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Life is Strange&/a&,我最后选择了 f**k the world and save Chloe.&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c7b022fe6272a68eba674_b.jpg& data-caption=&& data-rawwidth=&1089& data-rawheight=&607& class=&origin_image zh-lightbox-thumb& width=&1089& data-original=&https://pic3.zhimg.com/v2-c7b022fe6272a68eba674_r.jpg&&&/figure&&p&&/p&
1.什么是单目深度估计,为什么要用深度学习的方法?假设我们有一张2d图片 I ,我们需要一个函数 F 来求取其相对应的深度 d .这个过程可以写为:d = F(I) 但是众所周知, F 是非常复杂的函数,因为从单张图片中获取具体的深度相当于从二维图像推测出三维空…
&figure&&img src=&https://pic2.zhimg.com/v2-cfabdffea09_b.jpg& data-rawwidth=&480& data-rawheight=&290& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&https://pic2.zhimg.com/v2-cfabdffea09_r.jpg&&&/figure&&p&市场上空间定位的技术方案分为单目、双目以及激光雷达三大阵营,其中激光雷达由于成本高昂市场接受度较低,而在都是基于计算机视觉的单目和双目中,双目则显得更受欢迎。在国内做计算机视觉技术方案的企业如图漾、速感、人加&a href=&https://link.zhihu.com/?target=http%3A//www.leiphone.com/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&智能&/a&等大多选择了双目,而选择了单目的欢创科技则成为了少数派。那么,双目为何比单目更受市场青睐,两者之间的技术差异在哪里,单目又是如何实现空间定位与位置追踪?本期雷锋网硬创公开课邀请到欢创科技CEO周琨,详细讲解单目定位技术。&/p&&h2&内容介绍&/h2&&p&本期公开课包含但不限于以下内容:&/p&&ul&&li&&p&视觉目标定位(位姿测量)&/p&&/li&&li&&p&单目视觉定位&/p&&/li&&li&&p&基于PnP的单目视觉定位&/p&&/li&&li&&p&单目与双目比较&/p&&/li&&li&&p&单目视觉定位在VR中的应用&/p&&/li&&/ul&&h2&嘉宾介绍:&figure&&img src=&https://pic3.zhimg.com/v2-e043b985bedcbcdcb9daa205_b.jpg& data-rawwidth=&737& data-rawheight=&554& class=&origin_image zh-lightbox-thumb& width=&737& data-original=&https://pic3.zhimg.com/v2-e043b985bedcbcdcb9daa205_r.jpg&&&/figure&&/h2&&br&&p&周琨,清华大学深圳研究生院硕士生导师,深圳市高层次人才,南山区领航人才,深圳市欢创科技有限公司CEO,清华大学本科、硕士,师从973首席科学家,长江学者戴琼海教授。十余年IT和人机交互技术行业产品研发和技术管理经验。先后就职于贝尔实验室,中国移动,对视觉人机交互技术进行了非常深入的研究,作为主要发明人,拥有二十余项国际和国家专利,并先后获得山东省科技进步二等奖和深圳市科学技术专利奖。2014年初创办欢创科技,担任CEO职位,引领公司致力于计算机视觉空间定位与位置追踪技术的研究和产业化,目前产品已经广泛应用于电视机、VR与机器人领域。&/p&&h2&公开课直播完整视频:&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//v.qq.com/x/page/x0388nr3ysx.html& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&单目视觉的运动目标跟踪定位 | 硬创公开课_腾讯视频& data-poster=&https://puui.qpic.cn/qqvideo_ori/0/x0388nr3ysx_228_128/0& data-lens-id=&&&
&img class=&thumbnail& src=&https://puui.qpic.cn/qqvideo_ori/0/x0388nr3ysx_228_128/0&&&span class=&content&&
&span class=&title&&单目视觉的运动目标跟踪定位 | 硬创公开课_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://v.qq.com/x/page/x0388nr3ysx.html&/span&
&/h2&&p&以下为嘉宾分享内容实录。相对视频文中做了删减,完整内容可观看视频。关注雷锋网旗下微信公众号「新智造」,回复「PPT」可获取嘉宾完整PPT。&/p&&h2&视觉目标定位(位姿测量)&/h2&&p&从工程意义上来说,测量一个物体相对于另一个物体的位置与姿态,即所谓的位姿测量。从数学意义上来讲,测量两个坐标系间的平移与旋转变换关系,包括3个位置(Translational)和3个旋转角(Rotational)共6个位姿量(即6DOF)。理论上,只要已知空间不共线的3点在两个坐标系下的坐标,就能唯一确定两坐标系间的位姿关系,因此,位姿测量的关键就是如何得到特征点在这两个坐标系下的坐标。 &/p&&h3&视觉空间定位的常见类型&figure&&img src=&https://pic3.zhimg.com/v2-61c28c959aa54b6eee11_b.jpg& data-rawwidth=&392& data-rawheight=&220& class=&content_image& width=&392&&&/figure&&/h3&&br&&p&自定位(inside-out),即通过相机拍摄视野坐标系,以及坐标系的特征点,从而判断相机相对坐标系自身的坐标。比如我们常用的SLAM,这方面雷锋网(公众号:雷锋网)之前也有嘉宾做过介绍,它的特点是便携、视角理论无限大、定位精度不高。主要应用领域包括移动机器人、&a href=&https://link.zhihu.com/?target=http%3A//www.leiphone.com/news/201504/Bhh5ttIauUCQeICm.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&无人机&/a&、VR、AR。&figure&&img src=&https://pic3.zhimg.com/v2-a66bf060aa_b.jpg& data-rawwidth=&412& data-rawheight=&220& class=&content_image& width=&412&&&/figure&&/p&&br&&p&外定位(outside-in),比较常见的是OptiTrack,特点是安装复杂、视角有限、定位精度高。主要应用领域包括影视动捕、VR、工业机器人。&/p&&h3&常见的不同硬件定位方案&/h3&&ul&&li&&p&单目定位(mono camera)&figure&&img src=&https://pic1.zhimg.com/v2-2fb25edae34a_b.jpg& data-rawwidth=&456& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&456& data-original=&https://pic1.zhimg.com/v2-2fb25edae34a_r.jpg&&&/figure&&/p&&br&&/li&&/ul&&p&特点:系统简单,运算量小,需要目标点之间有几何约束关系,应用场景有限制,成本较低。&/p&&ul&&li&&p&双目定位(stereo camera)&figure&&img src=&https://pic3.zhimg.com/v2-3f35b1bdfb1ff_b.jpg& data-rawwidth=&519& data-rawheight=&363& class=&origin_image zh-lightbox-thumb& width=&519& data-original=&https://pic3.zhimg.com/v2-3f35b1bdfb1ff_r.jpg&&&/figure&&/p&&br&&/li&&/ul&&p&特点:系统复杂,运算量大,可以单帧单目标点定位,对目标物体无几何约束,,应用场合灵活,成本较高。&/p&&ul&&li&&p&多目定位(multiple camera)&figure&&img src=&https://pic3.zhimg.com/v2-a66bf060aa_b.jpg& data-rawwidth=&412& data-rawheight=&220& class=&content_image& width=&412&&&/figure&&/p&&br&&/li&&/ul&&p&特点:系统非常复杂,运算量特别巨大,对目标物体无几何约束要求,应用场合受限,成本很高。&/p&&p&目前关于双目定位的研究与市场应用相对比较多,而单目定位则相对比较少,所以,今天我就重点讲下单目定位。&/p&&h2&单目视觉定位&/h2&&p&顾名思义,单目视觉定位就是仅利用一台摄像机完成定位工作。单目视觉定位的方法主要有两种:基于单帧图像的定位方法和基于两帧或多帧的定位方法。&/p&&p&基于单帧图像的定位方法包括基于特征点的定位(Perspective-n-Point)、基于直线特征的定位,关键点在于快速准确地实现模板与投影图像之间的特征匹配。&/p&&p&基于两帧或多帧的定位方法的关键在于实现多帧投影图像之间的对应特征元素匹配,如SLAM。&/p&&h2&基于PnP的单目视觉定位&/h2&&h3&什么是P-n-P问题?&/h3&&p&P-n-P,即Perspective-n-Points,指给定世界(刚体)坐标系下的n个3d坐标点,以及这些点在图像中的2d投影坐标,求解世界(刚体)相对相机的姿态和位置(求解R,t)。要想求解出世界(刚体)相对相机的姿态和位置,必须知道至少4个点,也就是n要大于等于4,当然这是&a href=&https://link.zhihu.com/?target=http%3A//www.leiphone.com/news/201511/tgBJPsUzzzgvFHLp.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&必要&/a&条件,不是充分条件,充分必要条件是n等于6。&figure&&img src=&https://pic4.zhimg.com/v2-196e45e79ebc452c5e3a9_b.jpg& data-rawwidth=&452& data-rawheight=&314& class=&origin_image zh-lightbox-thumb& width=&452& data-original=&https://pic4.zhimg.com/v2-196e45e79ebc452c5e3a9_r.jpg&&&/figure&&/p&&br&&h3&求解PnP问题的前提&figure&&img src=&https://pic2.zhimg.com/v2-9d9b9f147b2aaf9e6c49ade_b.jpg& data-rawwidth=&731& data-rawheight=&267& class=&origin_image zh-lightbox-thumb& width=&731& data-original=&https://pic2.zhimg.com/v2-9d9b9f147b2aaf9e6c49ade_r.jpg&&&/figure&&/h3&&br&&h3&PnP的求解路径&figure&&img src=&https://pic2.zhimg.com/v2-168d2ec0f3f40aea9c962f7_b.jpg& data-rawwidth=&740& data-rawheight=&290& class=&origin_image zh-lightbox-thumb& width=&740& data-original=&https://pic2.zhimg.com/v2-168d2ec0f3f40aea9c962f7_r.jpg&&&/figure&&/h3&&br&&h3&单目与双目比较&/h3&&h3&双目视觉定位&/h3&&p&双目视觉定位原理是指通过三角测量原理来对目标点的三维空间位置进行定位。双目视觉定位的算法流程:相机标定、双目标定、图像处理、特征检测、立体匹配、三维测量、姿态测量。&/p&&h3&单目和双目视觉的共同难题&/h3&&ul&&li&&p&图像提取精度问题&/p&&/li&&/ul&&p&单目&双目:如何提取目标的高精度图像&/p&&ul&&li&&p&匹配问题&/p&&/li&&/ul&&p&单目:如何将刚体目标点同投影点匹配&/p&&p&双目:如何将两个摄像机中的目标点匹配&/p&&ul&&li&&p&标定问题&/p&&/li&&/ul&&p&单目:如何将相机内参估计准确&/p&&p&双目:如何将相机内参和外参估计准确&/p&&ul&&li&&p&有趣的系统问题&/p&&/li&&/ul&&p&单目:摄像机简单,目标复杂,需解决刚体目标点布局问题&/p&&p&双目:摄像机复杂,目标简单,需解决摄像机基线设置问题&/p&&h3&单目视觉与双目视觉的区别&/h3&&p&由于存在几何模型约束优势,单目视觉会有更高精度与鲁棒性(以下为仿真实验结果)&figure&&img src=&https://pic3.zhimg.com/v2-9afd13a04f31d97bb47591_b.jpg& data-rawwidth=&740& data-rawheight=&224& class=&origin_image zh-lightbox-thumb& width=&740& data-original=&https://pic3.zhimg.com/v2-9afd13a04f31d97bb47591_r.jpg&&&/figure&&/p&&br&&p&单目视觉有效视场更大:刚体定位不仅不依赖多个相机,定位空间还可以通过多个相机进行扩展而不发生视场范围损失。&figure&&img src=&https://pic2.zhimg.com/v2-8ea0caaecc3dbc888cd55ac_b.jpg& data-rawwidth=&740& data-rawheight=&200& class=&origin_image zh-lightbox-thumb& width=&740& data-original=&https://pic2.zhimg.com/v2-8ea0caaecc3dbc888cd55ac_r.jpg&&&/figure&&/p&&br&&h3&如何选择单目还是双目视觉定位&/h3&&ul&&li&&p&应用场景需要知道3DOF还是6DOF?&/p&&/li&&/ul&&p&单目视觉:要么不能输出位姿,要么输出6DOF&/p&&p&双目视觉:可输出3DOF、6DOF(满足一定条件)&/p&&ul&&li&&p&应用场景对目标物体有无约束?&/p&&/li&&/ul&&p&单目视觉:必须已知刚体上4个及以上的目标点的几何约束&/p&&p&双目视觉:无须知道几何约束,适应范围广&/p&&ul&&li&&p&应用场景对成本、视角要求如何?&/p&&/li&&/ul&&p&单目视觉:成本更低、有效视角更大&/p&&p&双目视觉:成本更高、有效视角更小&/p&&h2&单目视觉定位在VR中的应用&/h2&&h3&三大主流VR厂商现有位置追踪方案&/h3&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.leiphone.com/news/201612/QmwbWr4hB6IsrT6c.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Oculus&/a&:单目光学摄像头 + 数十个LED主动光源&figure&&img src=&https://pic2.zhimg.com/v2-6cf758fa33aba5e1069fc8_b.jpg& data-rawwidth=&443& data-rawheight=&331& class=&origin_image zh-lightbox-thumb& width=&443& data-original=&https://pic2.zhimg.com/v2-6cf758fa33aba5e1069fc8_r.jpg&&&/figure&&/p&&br&&p&Sony PSVR:双目光学摄像头+ 9个LED主动光源&figure&&img src=&https://pic4.zhimg.com/v2-3ddfd9f5b12dfdf873f33f_b.jpg& data-rawwidth=&450& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&https://pic4.zhimg.com/v2-3ddfd9f5b12dfdf873f33f_r.jpg&&&/figure&&/p&&br&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.leiphone.com/news/WITn5seIh1YPsd.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&HTC Vive&/a&:激光 +光敏二极管阵列&figure&&img src=&https://pic4.zhimg.com/v2-5c47c1b61fa_b.jpg& data-rawwidth=&422& data-rawheight=&290& class=&origin_image zh-lightbox-thumb& width=&422& data-original=&https://pic4.zhimg.com/v2-5c47c1b61fa_r.jpg&&&/figure&&/p&&br&&p&&strong&详解Oculus 定位方案&/strong&&/p&&p&定位器:1百万像素,全局曝光摄像头,52fps.&/p&&p&手柄:环形红外定位点带+IMU&/p&&p&头盔:面板红外定位点+头盔后部三角形上的红外定位点+IMU&/p&&p&定位方式:手柄和头盔通过无线控制红外定位点发光时间与摄像头曝光时间同步;PC使用从图像获得的定位点信息与IMU数据融合,获得头盔和手柄的位置信息。&/p&&p&缺陷:覆盖范围比HTC小,达到roomscale需要更多的定位器;所有定位信息统一计算,不利于扩展到多人或更多设备。&/p&&h3&VR空间定位的几个关键指标&/h3&&ul&&li&&p&稳定性(Robustness)&/p&&/li&&li&&p&定位精度(Precision):静态精度(HTC:Translational RMSE: 1.5mm)和动态精度&/p&&/li&&li&&p&静态抖动(Static jitter)&/p&&/li&&li&&p&范围(Range)&/p&&/li&&li&&p&成本(Cost)&/p&&/li&&/ul&&h3&我们是如何测量VR定位精度的?&/h3&&p&六轴工业机器人测量,以工业机器人输出值为Ground truth,并以此为准进行比对。&figure&&img src=&https://pic4.zhimg.com/v2-b94d8ecdd9aaa042fa9b91_b.jpg& data-rawwidth=&636& data-rawheight=&223& class=&origin_image zh-lightbox-thumb& width=&636& data-original=&https://pic4.zhimg.com/v2-b94d8ecdd9aaa042fa9b91_r.jpg&&&/figure&&/p&&br&&h3&如何提高定位精度?&/h3&&p&提高标定精度——高帧率连续空间采样&/p&&p&提高图像提取精度——亚亚像素级的图像提取精度&/p&&p&多传感器融合——加入IMU,利用IMU信息提高信噪比&/p&&p&去除干扰点——通过调制光线,去除环境光照影响&/p&&h2&Q&A环节&/h2&&p&&strong&新智造:对于机器人是移动避障来说,单目是否比双目更好?&/strong&&/p&&p&&strong&周琨:&/strong&从定位精度和鲁棒性来说,双目还是比单目好一些,如果从单目的场景来说,物体的复杂性会更高,而且单目的成本更低,但是对于机器人来说,成本不是太大问题,所以用双目做机器人的移动避障会更好些。&/p&&p&&strong&新智造:做ADAS的话,单目和双目的差别在哪里?&/strong&&/p&&p&&strong&周琨:&/strong&ADAS我研究的不多,我就以我认知的来说下。因为汽车是高速移动的物体,所以ADAS的反应速度非常快,单目的好处是视角范围比较大,双目的局限就在于它的视角会受限,不过单目只有一只“眼睛”,3D定位的话尺度问题不好解决,双目的定位范围要大些,精度可以做的比较高些。所以说两者之间还是有差别的。&/p&&p&&strong&新智造:跟踪定位未来有什么有前景的研究方向吗?&/strong&&/p&&p&&strong&周琨:&/strong&目前主要是两个方向,一个是SLAM,这个是非常大的研究方向,不过到现在其实都不太成熟,到目前为止我见过最成熟的产品就是微软的HoloLens,就是有很多摄像头才能做到鲁棒性比较好,闭环做的比较好,无论是tango还是高通在VR上的的SLAM,都容易受到欢迎因素的影响,包括光照、白墙等等,离实用还是有比较大的距离,所以说这是一个比较大的研究方向。&/p&&p&第二个就是在工业应用领域,这个时候需要解决的问题是精度,也就是说不用考虑成本问题,研究方向就是如何提高精度,毫米不够就亚毫米。&/p&&p&&strong&新智造:在工业机器人中视觉应用广吗,有哪些常用的应用?&/strong&&/p&&p&&strong&周琨:&/strong&在工业机器人领域,视觉应用会越来越广泛,比如仓储机器人都是无人值守的,自己完成搬运工作,那么它需要“眼睛”来识别环境,目前比较常见的定位方案是Kiva的标记点,未来一定是使用SLAM方案,机器人可以自行规划路线;第二个场景是制造,虽然说机械臂可以进行定位,但是仅适用于大批量重复性的制造,如果你需要经常对这个加工的目标不停的改变,你就需要辅助定位装置帮你进行重新设定,这个时候它的优势就出来了。&/p&&p&&strong&新智造:能否通过其他传感器获得摄像头的位姿,而不是通过图像计算获得?&/strong&&/p&&p&&strong&周琨:&/strong&实际上现在我们常见的应用都会加入多个传感器来获得摄像头的位姿,最常见的就是MU,六轴或九轴的传感器辅助获得摄像头的位姿,比如摄像头出现遮挡,往往需要MU辅助获得摄像头的位姿,还有一种假如在室外,通过GPS获得经纬度,通过气压计获得高度信息,其实这也是多传感器融合的情况。&/p&&p&&strong&新智造:在图像采集完后对图像处理,放大目标图像的灰度值,缩小非目标的灰度值中,如何使这个比例能更协调,而不只是根据主观推断?&/strong&&/p&&p&&strong&周琨:&/strong&根据我们的经验比较难做,因为很难区分目标与非目标,所以我们常见的做法是尽可能在原始数据时让目标与非目标的区分度更大一些,方法很多,比如说可以通过增大目标物体的特征,比如亮度,或者通过调制光,把目标的特征点与非目标的特征点放大,然后再去放大灰度值,就是第一步就把问题解决,就很容易区分目标与非目标。所以,我倾向于解决问题解决前面,而不是放到后面去解决,这样会很难的。&/p&&p&&strong&新智造:对于小目标如何提取稳定特征点?&/strong&&/p&&p&&strong&周琨:&/strong&最笨的方法是提高相机的分辨率,很容易把目标的像素点提高,获得的信息就多了,特征点容易稳定,带来的坏处就是增加成本,如果在不增加成本的情况下获取稳定的特征点呢?其实我们也做了一些工作,就像PPT里讲的做到了亚亚像素的精度,采用的策略是尽可能采集样本的数量,带来的坏处就是可能数据量增加帧数会下降,那么如何在样本数量增加的同时保障帧数不下降,这个是需要解决的问题,但是方法无外乎就是这些!&/p&&p&&strong&新智造:图像匹配过程中有什么方法可以提高匹配精度?特征比较少的场景怎么解决?&/strong&&/p&&p&&strong&周琨:&/strong&图像匹配过程中首先要找特征点,要想提高匹配精度就要尽可能找出更多的特征点。无论是双目还是单目,最难的场景是面对一面白墙,没有任何特征点,这个时候要想提高匹配精度就很难,这个也是一个世界难题,目前就我所知还没有特别好的办法能解决,如果非要去解决,那就人为制造特征点,比如打散斑,也就是结构光,这个时候能够提高匹配精度。简单来说就是尽量找特征,没有特征的话就人为制造特征。&/p&&p&&strong&新智造:多传感器的时间戳同步问题怎么解决?&/strong&&/p&&p&&strong&周琨:&/strong&如果你用CMOS传感器它就比较容易实现,因为好多CMOS传感器都有时间戳同步功能,如果CMOS传感器你还需要用到MU,想要实现时间戳同步,就需要确定一个同步的中心元,像在VR里面,比如我有两个摄像机和手柄,这个时候你需要用头盔做这个同步的中心,它发射命令出来,所有摄像头也好手柄也好向它对齐,关键是做到这一步,其他方面我觉得没什么。&/p&&p&雷锋网原创文章,未经授权禁止转载。详情见&a href=&https://link.zhihu.com/?target=http%3A//dwz.cn/4ErMxZ& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&转载须知&/a&。&/p&&p&aHR0cDovL3dlaXhpbi5xcS5jb20vci9Qai1jeExQRXVPN0hyZmVuOTJvcw== (二维码自动识别)&/p&
市场上空间定位的技术方案分为单目、双目以及激光雷达三大阵营,其中激光雷达由于成本高昂市场接受度较低,而在都是基于计算机视觉的单目和双目中,双目则显得更受欢迎。在国内做计算机视觉技术方案的企业如图漾、速感、人加等大多选择了双目,而选择了…
&figure&&img src=&https://pic2.zhimg.com/v2-e5a9f1db73ae51acaee82b23_b.jpg& data-rawwidth=&1620& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1620& data-original=&https://pic2.zhimg.com/v2-e5a9f1db73ae51acaee82b23_r.jpg&&&/figure&(题图是目前三大头显中销量最好的PSVR的定位摄像头,也是三家中惟一使用双目技术的厂商)&p&VR定位技术有千万种,就目前三大头显厂商而言,可以分为:&/p&&ul&&li&HTC 的 Lighthouse 激光定位系统,是一种长距离的使用&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Perspective-n-Point& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PnP解算&/a&的定位技术(由Valve公司研发授权)&/li&&li&Oculus 的 Constellation 系统红外摄像头定位,也是使用 PnP解算的定位&/li&&li&PSVR 的 可见光摄像头定位,使用双目定位&/li&&/ul&&p&从技术发展时间来看,双目定位是在三家技术中,出现最早、最成熟的技术了。先在这里简单说说它的原理。&/p&&br&&h2&定位原理&/h2&&p&双目定位,一定要有两个摄像头/定位器,且两者在同一刚体/模具上,这样保证了两摄像头工作时,它们之间的相对位置是已知的。&/p&&br&&p&双目定位貌似还有一定的仿生概念,毕竟人眼的立体视觉,也是靠双眼的,有了两只眼睛,才可以受到到某一物体的距离远近,否则只知道“物体在看过去的视线方向,而无法判断距离”(显然生活经验可以弥补一些啦,比如近大远小)&/p&&p&下图是&a href=&https://link.zhihu.com/?target=http%3A//120.27.31.57%3A8787/gdgydxxb//article/doi/10.12052/gdutxb.150108& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&一篇学术论文&/a&的附图,再参考人双眼的构造,就很容易理解双目定位了。O1, O2分别是两摄像头的位置,且它们摆放角度已知。P1,P2是物体P在相机成像平面上的投影点,也就是照片上拍摄到P的点啦。根据两相机的摆放位置,以及P1, P2点的位置,很容易计算出点P在空间中的三维位置。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-292ec18fc9c928d1797eede_b.jpg& data-rawwidth=&1535& data-rawheight=&975& class=&origin_image zh-lightbox-thumb& width=&1535& data-original=&https://pic4.zhimg.com/v2-292ec18fc9c928d1797eede_r.jpg&&&/figure&&br&&p&双目定位成功之处就在于,它只靠一个特征点就可以定位!比如PSVR的手柄,只靠一条光带,就可以通过双摄像头,得到它的空间位置!(很多年前的PS move也是这个原理,要不然说PSVR的技术老呢)&/p&&figure&&img src=&https://pic3.zhimg.com/v2-51bc772c94e4daadcd8865c6eda18522_b.jpg& data-rawwidth=&550& data-rawheight=&279& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic3.zhimg.com/v2-51bc772c94e4daadcd8865c6eda18522_r.jpg&&&/figure&&p&单单一个特征点,可以求得一个物体在三维空间中的 x, y, z 位置(3 &a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Degrees_of_freedom_%28mechanics%29& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&自由度, DOF&/a&),但 VR 定位还需要它的旋转信息——另外三个自由度(旋转信息)——就无法靠一个特征点得到啦。&/p&&p&那么,想要做 6自由度求解,想要需要多少个特征点呢?试想一下:&/p&&ul&&li&如果只有一个特征点,那么物体可以把模型的特征点放在定位出来的一个三维空间的点P1上,然而它可以绕这个P1点任何旋转,都符合解。因此它只有 3 DOF。&br&&/li&&li&如果有两个特征点,双目定位可求解出 P1, P2,那么物体的姿态在定程度地确定了,但它仍然可以绕P1, P2连线构成的轴,旋转,因此它有 5 DOF.&/li&&li&如果有三个特征点,且它们不共线(否则会退化的),那么三个特征点的求解出的姿态,就可以惟一地确定物体的位置和姿态,达到 6 DOF 求解。&/li&&/ul&&p&因此PSVR的头显上有好多标记点,而手柄上也是一个具有特点的倒三角光条(见上图),至少可提取出3个特征点(三角的顶点)。这些特征点,可将姿态解算从 3DOF 升级成 6DOF。&/p&&p&看到这里,你一定会想,wow,原来空间定位就这么简单,果然双目大法好,学会初中立体几何就可以明白原理啦。&/p&&br&&p&但显然事情没有那么简单。欢迎来到工程领域的噩梦——测量误差。&/p&&br&&h2&定位误差&/h2&&p&双目定位的理想很美好,但测量误差对其带来的影响却是残酷的。&/p&&p&如下图,在O1, O2相机观察物体 P 时,由于种种原因,测量所得到的射线发生了微妙的角度偏移,误差角度分别为∠P O1 P' 和 ∠P O2 P'. 那么从观测值,求解出 P' 位置,就与真实位置有了一定的偏移。&/p&&br&&figure&&img src=&https://pic2.zhimg.com/v2-257c2cf4d04516f51fbbd8881794faa8_b.jpg& data-rawwidth=&1024& data-rawheight=&768& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic2.zhimg.com/v2-257c2cf4d04516f51fbbd8881794faa8_r.jpg&&&/figure&&p&这偏移的位置随着双目射线变平行,而增大。就是说,当物体离你越远时,你越难确定它与你的距离,而物体很近时,双目定位会很精确。&/p&&p&那么误差都是哪里来的呢?要知道,工程就不是数学上的理想假设了,误差的来源千千万,比如:&/p&&ul&&li&O1, O2点的安装误差,也就是制造公差,不过这一步往往会在出厂时进行标定。&/li&&li&相机的标定误差。相机是存在畸变的,如果反畸变算法不好 ,那么始终会带着角度测量误差。&/li&&li&特征点误差,就拿PS手柄来说,它那个三角光条是圆角,特征点很难取得很准确&/li&&li&像素误差,要知道摄像头的像素数是有限的,它所代表的角度值也会是离散的,无法准确地表示物体的投影射线&/li&&/ul&&p&以上各种因素都会影响到单点求解的精度。如果再想求 6DOF,物体上三个特征点求解都有误差,那么它的旋转求解就差得更远啦(还不一定对得上)。因此双目摄像头方案只能在近距离使用(2m以内),靠增多特征点数量来平均化测量误差,才可以达到可以接受的效果。&/p&&p&因此双目定位,简单是简单,但坑,真是多啊~&/p&&br&&h2&未完待续&/h2&&p&关于双目定位的基础,在这里就讲得差不多啦,本系列的下篇,将会分析大朋E3提出的创新性的双目激光定位技术,敬请期待~&/p&
(题图是目前三大头显中销量最好的PSVR的定位摄像头,也是三家中惟一使用双目技术的厂商)VR定位技术有千万种,就目前三大头显厂商而言,可以分为:HTC 的 Lighthouse 激光定位系统,是一种长距离的使用的定位技术(由Valve公司研发授权)Oculus 的 …
&p&最开始是从邱博的&a href=&https://www.zhihu.com/question//answer/& class=&internal&&文章&/a&中了解到linemod的。原理上来讲linemod的概念很简单,就选几十个边缘点匹配下边缘或法向量的方向。&/p&&p&opencv里的代码没有渲染模型训练linemod跟icp后处理的部分。我找了找,发现有个&a href=&https://link.zhihu.com/?target=https%3A//github.com/thodan/sixd_toolkit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&sixd_toolkit&/a&不错,收集了许多训练集跟模型文件,提供了一套渲染模型的代码。至于icp我直接用的是ros的linemod里的。ros的icp没有knn找点的过程,所以只适用于模型基本匹配地差不多的情况,对于linemod当然是够用了。我把opencv的代码抠出来,然后跟这两部分结合起来,跑的效果还不错(图没注意bgr的通道,小黄鸭变小蓝鸭了...):&/p&&figure&&img src=&https://pic3.zhimg.com/v2-bfe4afc56589dcb0ecbf_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1244& data-rawheight=&521& class=&origin_image zh-lightbox-thumb& width=&1244& data-original=&https://pic3.zhimg.com/v2-bfe4afc56589dcb0ecbf_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-61de578eae_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&481& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-61de578eae_r.jpg&&&/figure&&p&然而,linemod存在两个问题,一个对尺度变化敏感,一个遮挡情况下效果变差。尺度问题还好说,大不了多训练几个尺度下的模版,但是bin picking的时候遮挡肯定有,所以要对遮挡情况做一些改进。&/p&&h2&遮挡改进&/h2&&p&一个很自然的想法是把linemod&b&模版切成好几块&/b&,每一块拿去匹配,最后取几块当中评分最高的作为结果。这样的话,就算模型遮挡了一部分,其他部分还是有高评分,最后仍然能识别出来。我试了下,把每个模版切成4块,结果发现这样的话错误匹配的概率很高。这是因为每一块的特征点变少,一块最高分直接代表了全部最高分,所以错误匹配变多。&/p&&p&另一个自然的想法是把一个&b&图像切成好几个&/b&,然后做成模版拿去匹配。这样最后匹配完后,只需要比对同一个区域内是否有多个图像块被匹配上。跟之前切模版相比,切图像做模版的话特征点不会减少,而且也是基于部分匹配的,对遮挡有抵抗性。不过,这个思路跟latent class hough forest很像,LCHF相当于沿这个思路用random forest做了个快速检索的优化。当然,按照LCHF的做法,原来linemod的缓存加速优化就没了,最后谁快谁慢还不知道。这个思路等之后LCHF复现出来做个对比吧。&/p&&p&&b&更新:&/b&考虑切块匹配跟直接linemod的本质区别,相当于&b&一个是average pooling,一个是max pooling&/b&。切块匹配时,当有遮挡,遮挡的那一部分打分低,结果对总分贡献为0,是max pooling;而直接linemod仍然会加上,这导致遮挡跟误匹配分不开,出现大量误匹配。因此有个不错的思路:直接把max pooling做到linemod的匹配过程中,可以理解为在一次模板匹配中,出现大量集中的得分就认为是遮挡,出现同样分数但十分分散的得分就是误匹配了,max pooling类似的方法能把前者区分开来。待实现...&/p&&p&还有一个思路是考虑linemod被遮挡影响的本质:就是无法把误匹配的情况从遮挡的情况里区分出来。那么又有一个自然的想法:怎么把误匹配跟遮挡的打分区别开呢?我仔细看了遍linemod的源码,发现特征点匹配时候的&b&打分很有问题&/b&:&/p&&p&一个特征点就是三个量,x,y坐标跟一个8位的方向(180/8)。匹配的时候,如果同样位置上的方向一致,加4分;方向差22.5度,加3, 45度加2,67.5度加1,90度加0,超90度自动减180,所以就这4个情况。&/p&&p&也就是说,我就算乱给方向,那么得分的期望也有2分,占最高分的一半,给分这么宽容难怪阈值低的时候出现这么多错误匹配。比如遮挡了物体的1/3,现在的实际得分应该是67。但是,由于给分过于宽松,随机物体的分数可以认为是50分的一个正态分布,要超过67分实在是太容易了,所以降低阈值虽然能把部分遮挡的物体检测到,同时会引入大量误匹配。&/p&&p&所以,一个自然的想法就是把误匹配的分布压下去:方向一致给4分,差22.5度给1分,不然不给分。为什么要这样给呢,因为这样一个特征点的期望得分是1分,随机物体的期望得分是25分(而且试了试其他给分都没这样好)。这样的话,误匹配只会出现在跟实际物体部分相似的地方,比如大家都有圆圆的头之类的。(更新:这里是从focal loss得到的启发;从之前的观点看,这样可以大大降低average pooling的坏处)&/p&&p&为了验证这个想法,我做了个简单的实验:&/p&&p&手动把目标的一部分抠掉:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-7a6afa227f0ebe9917ce_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/v2-7a6afa227f0ebe9917ce_r.jpg&&&/figure&&p&用原linemod测试+nms:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e6bfd55b04d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-e6bfd55b04d_r.jpg&&&/figure&&p&可以看到,我把阈值放到84还有剩这么多(84以下的还很多),而且目标的识别明显因为遮挡有一个偏移。这个偏移不仅仅是偏移这么简单,&b&模版的R t也配错了&/b&,得到从目标正面渲染的模型,挤在未遮挡的部分里(只有圆圆的头部对上),这会导致之后的ICP没法用。所以,对原linemod来说,稍微放低点阈值就会出现大量误匹配,而且正确匹配的渲染角度也不对。&/p&&p&打分机制改善之后:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-354ad909bbc1b5179585cd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-354ad909bbc1b5179585cd_r.jpg&&&/figure&&p&改善后虽然大家的得分都变低了,但是更有区分度了。误匹配的情况是由物体之间本来的相似性造成的。更为关键的是正确匹配不会有偏移了,这意味着模版的R t是完全正确的,这样通过ICP的得分就能把正确匹配区分出来。而且刚好差不多遮挡了1/3,得分差不多在67分,可见这个策略是很成功的。&/p&&h2&尺度改进&/h2&&p&关于linemod的尺度问题我也做了几个有意思的实验。在其他论文里,比如LCHF,处理尺度问题很简单,只需要粗暴地把模版在测试图像的每一个位置缩放一下,让其深度一致就行了。linemod当然也能这么做,训练模版的时候把模版的深度记下来就行了。我做了几个简单的对比,用600mm训练的模版匹配大约1000mm深度的目标:&/p&&p&改进打分之后的匹配情况,没有匹配到:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-7efa191bb74ff8caf58ded_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-7efa191bb74ff8caf58ded_r.jpg&&&/figure&&p&从这里再次可以看到改进打分是很有必要的,随机物体期望虽然是25分,但最高分跳到快60的物体不少。&/p&&p&在每个地方都scale一下:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-2fdd1d967ced7b807ff64e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/v2-2fdd1d967ced7b807ff64e_r.jpg&&&/figure&&p&这说明这样确实有用。但是一个很尴尬的问题是,由于每个地方都scale了,没办法用原linemod中的linear memory跟缓存加速了,速度直接掉了30倍。。。这样我还不如用30个模版呢。&/p&&p&诶,想到这儿又有一个自然的想法了:反正一个图像当中深度就这么多种,我干脆统计一下挑几个主要深度scale一下。挑的准则很简单,统计下每个深度的数量,然后假设一个深度下的模版能覆盖正负100mm的部分,来个一维的nms选出来几个启发式的深度。用图像测试下,果然把1000mm选出来了:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-64ef86377aaa256f16654d52dcb60b94_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&480& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/v2-64ef86377aaa256f16654d52dcb60b94_r.jpg&&&/figure&&p&啧啧,效果确实不错嘛。不过我之后拿去在数据集上测效果又不是很好,这应该是因为scale本身会引入对齐的误差,也就是说我直接从1000mm训练个模版肯定比从600mm训练的模版然后scale的好。所以更好的方法是启发式找几个深度,然后把之前从该深度训练好的模版拿出来配。&/p&&p&还有个问题是深度不能太深。我试过从600mm到1800mm都训练出模版拿去匹配,然后老是出现1800mm的误匹配,这应该是由于物体太小了,特征都挤在一起,干扰更容易覆盖到这种情况。所以启发式找到的深度要根据先验限制下。&/p&&p&所以linemod研究了这么多,最后就两点小小的改进:&/p&&p&&b&改进打分&/b&,提高遮挡跟误匹配的区分度&/p&&p&&b&启发式找深度&/b&,然后拿该深度下的模版匹配&/p&&p&&b&更新:&/b&最近顺便把64个特征的限制改了,现在最高支持8192个特征&/p&&p&代码见&a href=&https://link.zhihu.com/?target=https%3A//github.com/meiqua/6DPose& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&meiqua/6DPose&/a&&/p&
最开始是从邱博的中了解到linemod的。原理上来讲linemod的概念很简单,就选几十个边缘点匹配下边缘或法向量的方向。opencv里的代码没有渲染模型训练linemod跟icp后处理的部分。我找了找,发现有个不错,收集了许多训练集跟模型文件,提供了…
&p&这个问题好长时间没有人来回答了,最近也在研究这个方向,主要是基于深度学习(毕竟太火,效果也好,嘿嘿),就来抛砖引玉一下吧。现在的三维物体识别的应用场景不多,就像是高赞答案说的,二维图像的效果已经很好了,单纯研究三维物体的识别目前在效果上也达不到二维图像识别的效果。&/p&&p&基于深度学习的方法主要有两种,一种是在原始数据上面将三维数据格式化(加栅格等操作),然后直接在三维数据上面应用深度学习模型,但是这种的主要问题是 1.算量太大 2.由于矩阵的稀疏性,好多算力浪费了。第二种是multi-view的方法,说白了就是把一个三维图像转换为许许多多二维图像,再综合起来进行训练,本质上还是基于二维图像,怎样选择这些二维的表示和融合不同的二维图像又充满了技巧。&/p&&p&上述两种方法可以看&/p&&a href=&//link.zhihu.com/?target=http%3A//3dshapenets.cs.princeton.edu/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-39df1bab49ab0b72d19e_180x120.jpg& data-image-width=&967& data-image-height=&486& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&3D ShapeNets: A Deep Representation for Volumetric Shapes&/a&&a href=&//link.zhihu.com/?target=https%3A//arxiv.org/abs/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[] Multi-view Convolutional Neural Networks for 3D Shape Recognition&/a&&p&上述两种主要模型的对比可以看这篇论文&/p&&a href=&//link.zhihu.com/?target=https%3A//arxiv.org/abs/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[] Volumetric and Multi-View CNNs for Object Classification on 3D Data&/a&&p&但是最新在搜论文的时候,在2017年的CVPR上面发现这篇文章&/p&&a href=&//link.zhihu.com/?target=https%3A//arxiv.org/abs/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Deep Learning on Point Sets for 3D Classification and Segmentation&/a&&p&与上述两种方向都不同,作者采用了直接基于点云数据进行训练的方法,对每一个点云数据进行编码,再跟总体特征进行融合,取得了不错的效果。准备近期看一下这个方向&/p&&p&下面这一篇是作者的改进模型,上面模型的不足在于仅仅包含了每个点的特征和全局特征,而没有充分利用局部信息,下面的改进版本里面融合了局部特征。其实我在看上面论文的时候就在想,为什么作者没有利用局部信息呢,这个有搞头,结果就在作者github上面发现了这篇文章,所有想法人人都会有,但是就是看谁手速快了(笑)&/p&&a href=&//link.zhihu.com/?target=https%3A//arxiv.org/abs/& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Deep Hierarchical Feature Learning on Point Sets in a Metric Space&/a&&p&先总结这麽多,后期研究有进展再来更新,有一起研究的小伙伴可以一起交流啊!&/p&
这个问题好长时间没有人来回答了,最近也在研究这个方向,主要是基于深度学习(毕竟太火,效果也好,嘿嘿),就来抛砖引玉一下吧。现在的三维物体识别的应用场景不多,就像是高赞答案说的,二维图像的效果已经很好了,单纯研究三维物体的识别目前在效果上也…
已有帐号?
无法登录?
社交帐号登录
461 人关注
256 条内容
1068 人关注
240 条内容
148 条内容
1798 人关注
298 条内容
2486 条内容

我要回帖

更多关于 中美贸易战最新进展 的文章

 

随机推荐