Deep Learnig(CNN目标分类)

1.目标分类基本框架

   目标分类的应用场景有人脸识别、物体识别、场景识别、文字识别等,先看一下目标分类的基本框架。
   数据准备
   数据足够?不够怎么增加数据量
   模型设计
   用现有模型?直接用复杂模型?
   数据少的时候,设计简单网络进行简单学习,还是大网络进行特殊任务学习
   训练细节
   神经网络配件,参数等

(1)数据准备

   a.数据来源:
      现有数据集的子集、网络采集、现有数据人工标注。
      现有数据:http://deeplearning.net/datasets
   b.数据扩充:
      原始数据切割、噪声颜色等像素变化、旋转平移等姿态变化。
      如下图,一张图片经过了 5x 的像素级变化,包括平均/锐化(unsharp)/动作
   模糊(motion)等,每种又经过了 6x 的旋转平移,也就是说,原始数据扩充了 30x。
在这里插入图片描述
      效果卷积核:

		     F1 = fspecial('disk',1)
		     F2 = fspecial('average',4)
		     F3 = fspecial('gaussian',3)
			 F4 = fspecial('gaussian',4)
			 F5 = fspecial('unsharp')
			 F6 = fspecial('motion',7,0.75*pi)
			 F7 = fspecial('motion',5,0)
			 F8 = fspecial('motion',5,pi/2)
			 F9 = fspecial('motion',6,pi)
			 F10 = [0 0 0; 0 1 0; 0 0 0]
			 vfilter = {F1, F3, F5, F6, F9, F10}

      旋转平移R,T
在这里插入图片描述

			vTrans = {}
			t1 = maketform('affine',[1 0 2*f; 0 1 2*f; 0 0 1]')
			t2 = maketform('affine',[0.96 0.1 0; -0.1 0.96 0; 0 0 1]')
			t3 = maketform('affine',[-1 0 0; 0 1 0; w1 0 1]')
			t4 = maketform('affine',[0.97 -0.02 0; 0.02 0.97 0; 0 0 1]')
			t5 = maketform('affine',[1 0 0; 0 1 0; 0 0 1]')
			t6 = maketform('affine',[1.04 -0.1 0; 0.1 1.04 0; 0 0 1]')
			t7 = maketform('affine',[1.03 0.02 0; -0.02 1.03 0; 0 0 1]')
			vTrans = {t1, t2, t3, t5, t6}

   c.数据规范
      均值处理、归一化、大小调整。

			# 均值处理
			tr_data = tr_data - MEAN_IMAGE
			# 归一化
			trdata/=256
			# 大小调整
			for t in range(3):
				im224[t,:,:] = cv2.resize(imi[:,:,t], (224,224))
			datablob[i,:,:,:] = im224

(2)模型设计

   a.任务类型

  • 分类:表情分类、种类分类、人群分类
  • 分类+回归:表情+程度、种类+信心、什么人+人数
  • 多目标分类:面部行为、群体行为、车流预测

   b.现有模型
在这里插入图片描述
在这里插入图片描述
   c.局部更改-从头设计

(3)训练细节

   a.GPU-Batch size ,是否并行
      GPU内存-Batch Size关系,Batch Size在实验的过程中,如果设置不合理,就可能会报错。
   b.数据循环方式/平衡性考虑
      数量较少的类别,数据是否需要补偿;
      从到头尾多次循环;
      每次随机选取部分数据。
   c.网络深度宽度确定
      深度与卷积核关系:第ii层卷积核关注范围?
在这里插入图片描述
      **问题:**2个3×33×3的卷积核和1个5×55×5的卷积核哪种更好?
      **Answer:**2个3×3的卷积核更好。
      多加一层,可以更加深度的学习;参数个数上来说,两个3×3的卷积核的参
      数有18个,一个5×5的卷积核参数有25个,参数更少,层数变多,参数变
      少。
   d.损失函数设计
      Softmax、直接拟合

   e.学习率变化方式,模型各层学习率是否一致

   f.评价方式:准确率,F1 score

2.迁移学习

   问题:ImageNet 上亿参数,数据量百万,是不是参数多的模型都需要大量数据?当然不是啦,我们可以用别人训练好的模型(基础模型),在训练好的部分参数基础上进行训练。
在这里插入图片描述
   a.不同数据处理
在这里插入图片描述
      少量数据的情况下,如果数据是与原来模型训练数据是类似的数据,则可以
   仅FC层做更新;但如果是不同的数据,则不能确定效果;
      大量数据的情况下,如果数据是与原来模型训练数据是类似的数据,则需要
   对中高层更新;如果是不同的数据,则需要更新更多层。
   b.学习率的处理
      最底的卷积层基本不变,不进行update;
      中间的卷积层视情况而定;
      最后全连接层,结构参数均需进行变化。

3.研究分享-如何设计神经网络

研究问题:如何进行面部行为识别(AU detection)
现有模型
看一下已有方法/模型。
Deepface
在这里插入图片描述
传统 CNN 用同一个卷积核对整张图片进行卷积运算,卷积核参数共享,不同局部特性对参数影响相互削弱,达不到最优的效果,对应的解决方法是局部卷积,不同的区域用不同参数。Deepface 对每个 pixel 都用单独一个卷积核来学习,这种全局部卷积连接有主要有下面几个缺陷

预处理:大量对准,对对准要求高,原始信息可能丢失
卷积参数数量很大,模型收敛难度大,需要大量数据
模型可扩展性差,基本限于人脸计算
也有人把特征图分成 8x8=64 小份,一小份一个卷积核,但是这并不能彻底解决上面的问题,我们的改进目标是:

不需要预处理,自动进行局部探测
不要所有区域都处理,更多关注在有意义的区域
比如额头的信息就比较少,眼睛眉毛嘴巴的信息相对重要的多
重要区域之间不会影响削弱学习效果
注意力网络-attention layer
一个想法是注意力网络-attention layer,通过权重来聚焦,如下图,我们的目标是看篮子里有什么,所以篮子给大的权重,其他地方不重要,就给小的权重,极端情况就是篮子给 1,其他部分给 0。
在这里插入图片描述
在这里插入图片描述
局部学习网络
另一个想法是局部学习网络:针对不同的区域进行针对性学习,不同的区域的学习不会相互干扰,对区域的分布能够自动适应。方法也就是切割局部,形成局部神经网络,中间层可以做 upscaling,也就是反向 pooling,之后也可以做下 deconvolution,如下图:
在这里插入图片描述
网络合并
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值