0725 卷积神经网络
卷积神经网络——王文中
- 多通道卷积:
图像的通道有3层,则卷积核的个数有3个,分别在每个通道做卷积,卷积结束后进行加和
设计一个卷积神经网络需要确定的结构参数
- 卷积层
a) 每一层卷积核的数目n(确定了该层输出的特征图的通道数目)
b) 每一层卷积核的大小f
c) 每一层卷积的跨度s
d) 每一层卷积的非线性相应函数ReLU - Pooling层
a) Pooling区域的大小f
b) Pooling的计算方式
c) Pooling的跨度s - 全连接层
a) MLP的层数n
b) 每一层神经元数目f和相应函数
以上参数是超参数,不能通过梯度下降优化
AutoML可以自动搜寻合适的结构
深层卷积神经网络训练: - 随机梯度下降
- 样本非常多:随机初始化,从0开始训练
- 样本不够多:
a) 使用ImageNet等数据集预训练,再用自己的数据微调
b) 可以只微调部分参数,其他参数固定 - 样本比较少
a) 用公开的CNN提取特征,在小部分数据集上训练分类器 - 数据增强
a) 增加样本数量
b) 正则化
利用卷积神经网络进行图像分类: - 确定项目任务和应用场景
- 收集样本
a) 采集图像(网络爬虫)
b) 标注图像
c) 数据清洗(删除错误的图像,比如非花卉图像;删除低质量的图像,比如分辨率非常低,成像非常模糊的图像,删除重复图像,修正标注错误) - 确定并复现基准:
a) 样本比较少:手工分类,得到human performance
b) SOTA(state-of-the-art) - 诊断并改进模型
- 诊断模型
保证模型正常训练
a) 观察损失函数的变化,确保损失函数值正常下降 - 诊断是否欠拟合:
a) 训练集精度(0.8)远低于期望值(Human performance:0.98)
b) 欠拟合解决对策:增加模型复杂度(比如减少正则化,增加网络层数) - 诊断是否过拟合:如果训练集精度比较高(0.95),但是验证集上的精度比较低(0.8),那么模型过拟合
a) 检查验证集数与训练集数据是否满足独立同分布假设
i. 如果不满足,更新数据集
b) 增加训练样本数量,收集更多样本,样本增广
c) 减少模型复杂度,增加正则化银子,减少可训练网络层数
d) 采用Bagging集成学习 - 错误分析
a) 用混淆矩阵找出不同类别的分错情况
b) 手工检测分类错误的样本,总结分错的规律
0726 目标检测原理
-
训练样本:
正样本有标注框(颜色不同)
负样本是什么?
采集正样本之外的其他图像框
负样本的类内方差(c+1类,1表示背景类别)非常大,需要大量负样本才能刻画
正负样本严重不平衡:
一幅图像只有1-100个正样本,潜在的负样本有数百万
对负样本进行采样,选取负样本数目不宜超过正样本数量的100倍
对正负样本的损失加权 -
样本标注:
轴向包围盒(矩形框):
仅适用于部分目标
包围盒的紧凑性:
仅包含目标信息
包含一部分背景信息
卷积神经网络:
对包围盒的紧凑程度的变化更加鲁棒
高层神经元的感受野比较大,包含了很多背景Context
Pooling和Stride对包围盒大小变化有一定抗干扰性 -
困难样本挖掘:
-
多重训练,提升检测器性能
a) 训练检测器
b) 在训练图像上检测目标
c) 把所有误检漏检作为训练样本,转1 -
级联模型可以很方便的与困难样本挖掘相结合
a) 用第i级分类器检测目标
b) 误检和漏检作为困难样本,加入到训练集,训练第i+1级检测器
性能评价:
召回率:检测出的真正例/图像真实的正例个数
精确度:检测出来的真正例/检测到的结果个数 -
检测器对每一个检测结果给出一个分值,只返回超过一个给定阈值t的结果
a) 一般来说,阈值t较低,返回的结果数就越多,漏检的数目会减少,但误检的数目会变多,则召回率会变高,精确度会降低
b) 阈值较高时,返回的结果数降低,漏检的数目增多,但误检的数目减少,则召回率会降低,精确度会升高 -
R-CNN
用CNN特征进行区域选择
输入一张图片
提取2000个候选框
将候选框中计算CNN特征
分类器分类(传统SVM) -
Faster R-CNN
卷积层得到feature map,得到张量特征
候选区域网络提取特征候选框
RoI Pooling 分类器