• 整个trick


    数据输入方面:1.image pyramid 图像金字塔.目前代码里是先选取一个scale,然后在每个GPU上按照scale读图片,相应的gt也更改."scales":[440, 520, 600, 680, 760] 使用的是短边的缩放到的尺寸,还用个maxsize限制了你的scale必须小于一个值

           wk的代码和原本的sensenet很大不一样,重新看,好像加了很多trick

           deformable convolution是同时训练多个scale,然后每个网络训练出来的乘以一个权重

           但这样不同scale的网络结构不应该不一样不是吗?

           2.flip,老版的sensenet里面仅仅是使用flip之后的,cv::flip(img, img, 1);,即只使用了沿y轴翻转,且没有用原图.个人觉得这里翻转的角度应该还可以很多.据说还有只rotate20度,然后剪裁补0这种数据增强,在分割中用的比较多.

           3."pixel_means":[103.939, 116.779, 123.68],3个通道不同的mean值,然后图像原始的每个值减去这些值

             有什么作用?

           4.anchor_scales,anchor_ratios

           5.gaussian_noise 输入图片加高斯噪声 

           6.FrcnnTrainData的参数,自己的caffe目录中总结了这些        

    distort_param {
          brightness_prob: 0.5
          brightness_delta: 32
          contrast_prob: 0.5
          contrast_lower: 0.5
          contrast_upper: 1.5
          hue_prob: 0.5
          hue_delta: 18
          saturation_prob: 0.5
          saturation_lower: 0.5
          saturation_upper: 1.5
          random_order_prob: 0.0
     }

           7.加高斯噪声或者resize的时候换插值的方法,这两个在v系列中都没有使用

          8.

          

    多GPU训练,这个很重要,每个GPU一张图

    v9、v7:经过4个降采样,第一个是通过一个尺寸为3,stride为2,pad为1,后面是3个pool,并且pool层主要集中在前面那些没有block堆积的层

        9是有5个block,7有6个block,并且7的block的4个分支的channel比9的4个分支的channel多(当然是第一个block对应第一个block)。并且两者都是的        block越往后面每个分支对应的channel数增加。block内部的分支是通过concat连接的channel层。

        其实D2就是把v7每个分支的channel然后把层增加了。(就用这个讲)

    rfcn相对于faster:用了全卷积替代fc,增加了平移不变性

  • 相关阅读:
    链表相交
    环路检测
    lambada表达式对集合的过滤和相互转换
    lambda表达式对集合的遍历
    centos7常用命令
    小程序文件
    扫码登录
    位操作
    使用json-lib转换对象为字符串时的特殊处理
    javac 编译异常总结
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/9164252.html
Copyright © 2020-2023  润新知