整个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:
contrast_prob: 0.5
contrast_lower: 0.5
contrast_upper: 1.5
hue_prob: 0.5
hue_delta:
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,增加了平移不变性
最新文章
- 【Alpha版本】冲刺阶段——Day 8
- Ajax注册验证js代码
- telnet 时代的 bbs
- C#实现无物理边距真正可打印区域的绘图\打印程序开发
- use mkisofs 重新打包beini,tinycore linux
- Objective-C发展历史
- JavaScript函数的四种存在形态
- 【Linux】常用命令-统计代码行数
- 关于老驱动不能在windows 8下正常安装的问题
- bzoj1750 [Usaco2005 qua]Apple Catching
- File中操作路径的API(转)
- STM32F10x -- 利用IIC协议操作AT24C02
- Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication)
- Windows2003下用Dreamweaver打开CodeSmith文件设置办法
- Java程序基础编程基础
- gitLib操作笔录《一》:创建分支,切换分支,提交分支到远程,以及基本代码clone与更新提交到远程操作指令
- Linux 搭建DNS
- 子线程更新UI界面的2种方法
- Python 算术运算符
- Cocos2d-x 3.0游戏开发之虚拟机IOS环境:匹配才是好,莫要随便升级软件
热门文章
- Docker &; ASP.NET Core 教程
- JS 打乱数组顺序
- 18-----BBS论坛
- 爬虫(GET)——add_header()和get_header()
- my.宠物升级79级
- RequireJS -Javascript模块化(二、模块依赖)
- LitJson(读Exce文件写入到json文件):
- apache配置多端口对应多个虚拟目录
- 基于vue2+nuxt构建的高仿饿了么(2018版)
- BZOJ4260: Codechef REBXOR (01Tire树)