zoukankan      html  css  js  c++  java
  • 整个简历的讲解(falling+mimic+refidet)

    1.解决方案

       下边缘:

     a.论文的数据来自kitti,gt数据来自于激光雷达,利用kitti自带的开发包先将激光雷达的数据映射到图片的二维平面,每个x,y会生成对应的d(x,y),即depth.再对每个x,y求倒数,即1/d,即D(x,y).对每个D求y方向的偏导,图像的偏导就是f'y(x,y) = f(x,y+1)-f(x,y).在每个y方向上,找到那个从typical road value to about zero的点,这个点就是障碍物的下边缘点.自己在做的过程中对于typical road value没办法很好理解,一列里面为0的点其实有很多,发邮件问作者也没得到回复,最后在他的主页找到了他公开的gt数据.

        b.第一篇论文主要是把图片分成了一个个竖条,可以看成一个个bin,每个竖条宽度为24,高度为370(也就是图片原始的高度),将这些竖条输入进网络,经过1个11*5的卷积和1个5*3的卷积,然后接3个fc最后生成一个1*50的向量,这50个值就是可能为下边缘点概率值.如果用离散的思想,这50个值就是把竖直方向均分成50个bin,然后每个值代表在这一个bin里面的所有的像素点可能是下边缘的概率.作者提出的是一种半离散的思想,这50个值是竖直方向上均匀分布的50个点的坐标(这50个点的求法有点特别,先把竖直方向分成50个bin,然后每个bin的中点就是一个值的点,比如1到30分成6个bin,第一个点的坐标是1,第二个是2.5,然后是7.5,倒数第二个是27.5,最后一个是30,1到2.5可以计算插值,2.5到7.5也可以计算插值),如果你的gt的值在两个点之间,可以通过插值的方式得到他的概率,然后在用-logp计算loss,作者称其为pl-loss(gt的数据的坐标的取值范围是0-370).第一篇论文的网络结构太过于简单,效果并不是特别好,并且用起来很麻烦.第二篇论文的输入不再是一个个竖条,而是整张图片,用inception先提取特征,所以到1/8之后就开始接4个相同的block,两个3*3卷积然后做vertical pooling,每次在竖直方向缩小一半.最后再接一个没有vertical padding的3*3卷积,最后生成一个cude,74*1*100,74是channel这个位置,代表的是竖直方向的74个点,100对应的是水平方向的100个bin.这样整张图为下边缘的概率就都可以求出来.

        c.

       上边缘:曾经考虑过颜色,类别,还有深度,

       类别用mask的方式,讲分割网络

       stixel-world的复现,上下边缘的两篇paper,如何用superpixel和edgebox进行补偿

       自定义的roi方式

    2.mimic+refindet

     a.之前的mimic网络主要做分类问题,方法是将大网络的softmax层的前一层的feature map与小网络的feature map进行euclidean loss计算(或者说L2 loss),各个probability 之间差异太大,容易造成shallow net注意力集中在较大的probability上,忽略值较小的probability.检测直接套用这种方式还没有直接finetune的效好.因为分类和location都是在最后一层feature map上,但是直接这样做不容易收敛.作者提出的方法:同一张图片输入给大小网络,在特征提取层最后一层feature map上roi-pooling,因为小网络的channel小,所以不能进行euclidean loss计算,小网络还要用3*3的网络做升维(先pooling再升维,不是先升维再pooling),这样大小网络提出的c、h、w一样大,然后做euclidean loss计算.整个loss是由mimic-loss + 分类、loc-loss组成,分类、loc-loss就是正常的faster rcnn中的rpn网络的loss,也就是说rpn网络本身还是要正常进行分类检测计算.两个loss相加有一个权重,在训练中,mimic loss可能会大,这个权重设置就必须小心,作者在euclidean loss上进行了标准化,就是每个proposal除以了c*h*w,这样网络训练稳定,权重也设置为1.这是第一步训练,第二步如果直接finetune然后训练效果没有再做一个mimic效果好.finetune第一步的参数,,参数不用固定然后把整个网络当做是一个分类的mimic,即按照分类的方法进行mimic就得出最终的结果.

       问题:1.cityscape的数据集的训练集到底多大?图片的size是多大?

          2.ssd大model在cityscape上训练的准确率是多少,模型大小是多少,耗时是多少?还是不太会使用那个网站.

       3.为什么在conv5_3上做mimic loss?

       4.refinedet现在的准确率是多少,模型大小是多少,耗时是多少

      refinedet的样本不均衡我还没理解到?

       b.refinedet与ssd一样,以vgg为backbone,不同于点在于:只预测了4层,并且只在vgg的fc7后面增添了2层,即conv6_1和conv6_2.refinedet由3个部分组成,一个是arm模块,相当于faster中的rpn网络对anchor进行二分类,对anchor进行精修,然后把anchor的score和位置的regression传给odm模块,不是所有的anchor都要传,如果anchor的negative的得分大于一个阈值,就不会传,这也是refinedet的anchor negative filter策略;一个是rcb,这部分连接arm和odm,将arm模块中进行预测的4层的feature map经过卷积操作传给odm模块,并且融合高层信息,这一点类似于rpn网络的top-down思想;odm模块其实和和ssd很像,只是说进行loss计算要经过两次regression,做anchor和gt的matching以及hard negative mining和ssd一样,保持1:3.

         refinedet有3个优点:1.negative anchor filter:即anchor的negative类别的得分超过一个阈值,就不再往odm传,这个方法提升了0.5个点    2.refinedet在anchor部分加了回归,整个网络对bounding box进行了两次回归,这个方法提升了2.2个点    3.tcb这个网络模块提升了1个点.看原论文,发现他的模型在voc上相对于ssd提升2,3个点,但在coco上提升5、6个点,甚至用把vgg换成resnet,能提升7、8个点,这表明refinedet在小物体上表现的更好.除了以上3个优点,我个人还觉得refinedet的在conv5上进行了预测(这个地方我理解错了,refinedet在conv5预测,也就是在1/16上预测,ssd也是有在1/16上预测的,只不过不再conv5,他的1/16在fc7。不过的确有点不同的是,refinedet只在1/8~1/64上预测,ssd在1/8~1/256上预测),这是ssd没有做的.并且我觉得那3个优点可能提升的点不止那么多,因为refinedet用了比ssd更少的aspect ratio和size,实际上他那些实验都是在跟自身作比较

       c.我们使用标准vgg的ssd在cityscape上训练模型,数据集大小为2975,,ap值为0.6,以这个为需要mimic的大网络.小网络的网络结构借鉴了refinedet,backbone和ssd一样,使用vgg,但每层的channel数变为原来的1/8,也就是说conv1_1从64变成了8.refinedet只做了4层预测,在fc7后面只增添了两层,不像ssd的8层,这两层的channel也只有原始ssd的1/8,删除了TCB部分,直接将信息传给ODM部分,因为TCB使用了deconvolution,fpga没办法实现.借鉴mimic那篇paper,我们在conv5_3上进行了mimic_loss的计算,当网络稳定后,又去掉mimic_loss计算,进行整个refinedet的训练.当然中间做了两种剪枝操作,一种是剪channel,一种是改变图片大小,最开始网络输入的图片大小384*786.最终打到ap值57,耗时10ms.

    3.检测

    我做的两个检测项目都属于gt较少的,所以先讲我们paste一些物体到空白的地方进行数据增强

  • 相关阅读:
    深度学习学习总结
    线性回归学习总结
    机器学习常用算法总结
    2020年,给自己立个flag
    与博客添网易云外钟墯之坑
    给博客添加网易云外链时掉的坑
    BEGINNING
    【华为云技术分享】程序员真香定律:源码即设计
    【华为云技术分享】【DevCloud · 敏捷智库】如何利用核心概念解决估算常见问题
    差点被祭天!狂欢618,且看研发人如何绝地求生
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9218062.html
Copyright © 2011-2022 走看看