lesson4-图像分类-小象cv
CNN网络进化:AlexNet-》VGG->GoogleNet->ResNet,深度8-》19-》22-》152
GoogleNet:Lsplit-》transform-》merge,分治思想
ResNeXt:在ResNet上增加cardinality基数,即通道数,残差~缓解梯度消失问题
Bag of words:视觉词汇组成一组一组的
ground truth:任何标签都可以称为~
鞍点 (saddle point)的数学含义是: 目标函数在此点上的梯度(一阶导数)值为 0, 但从该点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点。判断鞍点的一个充分条件是:函数在一阶导数为零处(驻点)的黑塞矩阵为不定矩阵。
卷积核/滤波器的个数~通道数
Relu:解决梯度消失,深度网络能进行优化的关键
卷积层+激活函数:激活函数类似于人眼-达到一定阈值才会被激活,传到下一次;增加非线性-》分段线性,拟合所有函数
卷积步长大于1:特征降维作用
池化:特征融合,尺寸降维
全连接层:等效全局卷积/全尺寸卷积,卷积核大小维上一层输出尺寸即W*H*C,卷积核个数维最终分类个数即K;去除空间信息
工程tricks:
图像像素中心化~rgb各自减通道均值
防止过拟合:数据增强;dropout;weigth decay权重衰减(L2正则)
Alexnet:新技术~Relu;dropout;max pooling
注意双gpu交互:卷积层一中特征通道96在2中显卡评分-》48
三中通道合并,即跨显卡做卷积
LRN局部响应归一化~模拟神经元侧抑制机制,某位置跨通道方向上的归一化~超参是实验定出的
VGG:卷积核7*7拆解为3个3*3
GoogleNet:进化InceptionV1到V4
核心组件:Inception模块,先分支再合并
inception3a:128=1*1,3*3,3*3,pooling四个的输出值和~即串接
卷积分支中1*1先放前面,pooling中1*1放在后面~先pooling特征合并保证原始信息量再降维
Split-Merge:四个不同卷积/池化~多尺度,宽度
Bottleneck:NiN的1*1卷积来解决多尺度带来的高额参数,特征降维
Inception V1:两大贡献(1)取消全连接:global average pooling+softmax可以代替,对应主分类器取消全连接层增加两个辅助分类器,辅助是有全连接的 (2)辅助
InceptionV2:核心组件
(1)批归一化:解决相关偏移问题~内部神经元的数据分布发生变化;本质是白化即每一层的输出都规范化到0,1的正态分布,取代dropout,允许较高学习率;
详细:在batch范围内,对每个特征通道分别进行归一化~每个batch如32个图片,每个图片k通道,那么每个通道对应32个值~长*宽*1*batchsize的均值和标准差来归一化;注意~每张图片的每个通道的矩阵表示:长*宽*1
位置:卷积层和激活层之间,归一化在非线性变换之前
因为不同特征的均值和方差本来就是有相对差异 的,强制化为0,1的正态分布是有问题的,比如有的特征是在均值1附近的-》尺度变换和偏移,即scale和shift即尺度和偏移即乘子和偏置要学习出来即需训练,配对使用,每个通道都有一对共k组,乘以scale加上shift后的y才是传入后面的
训练中每个batch中的k组均值和标准差都会被保存,测试时存储的所有batch的k组均值和标准差会分别求平均,使用k组平均
(2)5*5卷积核拆为3*3
Inception3:
(1)非对称卷积:N*N分解成1*N-》N*1
(2) 低层处低分辨35*35上将5*5拆为两个3*3;分辨率17*17上火将两个N*N分别拆了;分辨率8*8上并行操作做分解 why好-- 工程实践经验
(3)高效的降尺寸Grid size :
现象:25*25*320先pooling后Incepion~有表达瓶颈计算量小,因为pooling后hi是低维的17*17*320,inception后17*17*640;25*25*320先inception后pooling~无表达瓶颈但是计算量大,因为inceptin后时25*25*640,pooiling后维17*17*640
目的:避免表达瓶颈增加特征通道
操作:两个并行分支,卷积分支+池化分支,串接分支结果
卷积分支1:1*1特征降维减少计算量-》3*3卷积步长1-》3*3卷积步长2
卷积分支2:1*1卷积-》3*3步长2
池化:步长2,即池化照常做
卷积分支1出160,卷积分支2出160,池化出320,串接为640的特征通道数,卷积的串接补充了信息
(4)取消浅层辅助分类器。深层辅助分类器只在训练后期有用-工程经验
Inception4:Inception模块加上了resnet的直连
ResNet:核心组件为skip/shortcut connection
目标映射=残差映射+identity即H=F+x,求导,该模块倒数永远大于1
卷积核基本都为3*3,池化层用卷积步长2代替~淡紫和黄色之间,步长为2使得尺寸降维度通道升维,使用BN;取消了全连接层,max池化,dropout
基础网络时VGG
当H是最优映射接近identity时,很容易捕捉到小的扰动
更深层用Bootleneck优化残差映射网络
lesson4-图像分类-小象cv的更多相关文章
- lesson8-图像问答-小象cv
QA即图像问答:覆盖最全面的AI,ai完备性 动态模型:不同任务需要不同模型 or 不同细分任务需要不同模型参数 数据集: 1)VQA,显示图片+抽象场景:每个问题给10个不同答案:含有无图片答案(考 ...
- lesson7-图像描述 -小象cv
2018-04-25朴素rcnn - 梯度消失严重LSTM长短时记忆模型,有效捕捉长时记忆包含四个神经元组:一个记忆神经元三个控制门神经元:输入.忘记.输出 注意:输入调制门.输出调制门 3个输入:前 ...
- lesson5-图像检测-小象cv
R-CNN: 2014,cnn为Alexnet 训练流程: 1)在imagenet上对cnn模型pre-train 2)使用所有ss生成区域对1)进行fine-tune ~softmax改为21维度 ...
- resNet代码-小象/cv
C:\yyy\ml\dengsong\ChinaHadoop\ChinaHadoop_C4-master\ChinaHadoop_C4-master\C4_ResNet_TF http://blog. ...
- OpenCV探索之路(二十五):制作简易的图像标注小工具
搞图像深度学习的童鞋一定碰过图像数据标注的东西,当我们训练网络时需要训练集数据,但在网上又没有找到自己想要的数据集,这时候就考虑自己制作自己的数据集了,这时就需要对图像进行标注.图像标注是件很枯燥又很 ...
- Android开发学习—— ContentProvider内容提供者
* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的数据库.把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. Uri:包含一个具有一定格式的字符串的对 ...
- Android基础总结(十)
内容提供者(掌握) 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的私有数据 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数 ...
- openCV C++ 代码笔记
代码片段1 cv_contourMask_step_tmp=cv_contourMask.clone(); cv::Mat maskImage; UIImageToMat(pathimg, maskI ...
- Android应用开发基础之九:内容提供者(ContentProvider)
内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用:就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代 ...
随机推荐
- Vue--项目开发之实现tabbar功能来学习单文件组件1
创建好一个Vue项目后,我们进入项目里,点开src文件下的components文件里的helloworld.vue 文件.清空初始数据.然后开始编写. 一个.vue文件初始格式为以下三部分(组件三部曲 ...
- parfor slice
http://www.mathworks.cn/cn/help/distcomp/advanced-topics.htmlPARFOR loops work by dividing the itera ...
- Java Web(六) JSP
现在的Java Web开发已经很少使用JSP脚本了,业务逻辑都交给Servlet处理,JSP只负责显示视图,所以接下来的内容就对JSP脚本不做叙述了... JSP概述 JSP全名为Java Serve ...
- H5 PWA技术以及小demo
H5 PWA技术 1.原生app优缺点 a.体验好.下载到手机上入口方便 b.开发成本高(ios和安卓) c.软件上线需要审核 d.版本更新需要将新版本上传到不同的应用商店 e.使用前需下载 2.we ...
- 解决eclipse/myeclipse导入项目时出现红色叹号的方法
- mysql插入中文乱码
https://www.cnblogs.com/zhchoutai/p/7364835.html 最简单的一招,不用修改my.ini文件: 1.停掉mysql服务 2.启动:X:\%path%\MyS ...
- python全栈开发笔记---------变量小结
变量是什么? 变:变化,重在变字,量:计量,衡量,表示一种状态. 变量字面理解就是一个可能改变的量,也就是这个值是不固定的. 变量名: a.数字 b.字母 c.下划线 变量的定义 level = 1 ...
- Delphi I/O error 103 错误
http://stackoverflow.com/questions/634587/delphi-why-do-i-sometimes-get-an-i-o-error-103-with-this-c ...
- Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)
一.应用名称 Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input) 二.应用图标 三.应用说明 现在通行的阿拉伯语键盘布局并无规律可循,阿拉伯语使用者需要花费较多时间 ...
- getchar getche getch的区别
getchar 由宏实现:#define getchar() getc(stdin). getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘 ...