深度学习03-CNN 应用

说明:本系列是七月算法深度学习课程的学习笔记

文章目录

  • 1 概述
  • 2 图片识别+定位
  • 3 物体监测
    • 3.1 选择性搜索
    • 3.2 R-CNN
    • 3.3 Fast R-CNN
    • 3.4 Faster R-CNN
  • 4 语义分割
    • 4.1 滑窗处理
    • 4.2全卷积神经网络
  • 5 代码

1 概述

CNN主要任务包含物体识别+定位、物体识别、图像分割。
在这里插入图片描述

图片识别:图片分类,假设图片中是一个主要对象。
图片识别+定位:可以用矩形框,画出图片中的物体。
物体识别:实际情况中一个图片是包含多个对象的。用矩形框标出所有物体。
图像分割:在物体识别的基础上,检测出物体边缘。

2 图片识别+定位

图片识别:输入:图片;输出:类别标签;评价标准:准确率
图片定位:输入:图片;输出:物体边界框(x,y,w,h);评价标准:交并准则
(x,y)是左上角的点,w是宽度,h是高度
交并准则:两个矩形交的面积/两个矩形并的面积,值需要>=0.5才可以用

图片识别是分类问题,使用交叉熵损失。
图片定位是回归类问题,使用 L2 distance (欧氏距离)损失函数。

图片分类问题是在知名模型上fine-tune。
在这里插入图片描述

在知名模型的尾部,可以接在全连接层之后,也可以接在全连接层之前。分类问题加一个分类头,定义一个交叉熵损失函数;回归类问题接一个回归头,定义一个欧式距离损失函数。

思路1:看做回归问题
能否对物体做进一步定位?
例如定位猫的2只眼睛,2只耳朵,1个鼻子。上一个问题中是一个物体,有4个数字。现在的问题有5个物体,那就会有20个数字。预估一个长度为20的向量。这里的前提是:物体的结构是相同的。遇到只有一只猫的眼睛就出错了。

进一步可以识别人的姿势。类似火柴拼成的人。每个关键是一个坐标,做一个回归。论文:Toshev and Szegedy,“DeepPose: Human Pose Estimation via Deep Neural Networks”, CVPR 2014

思路2:图窗+识别与整合
取不同大小的框,
让框出现在不同的位置
对取得的内容做分类判定得分,
对取得的内容做回归(框)判定得分,
按照得分高低对结果框做抽取和合并。
在这里插入图片描述
克服问题:参数多,计算慢
1 用卷积核替换全连接层:参数可复用。
感知眼。卷积层不同位置的点相当于只能看到第一层的不同区域。
这样就不用上面方法中把不同位置的图片抠出来,送到神经网络做计算。
2 降低参数量
在这里插入图片描述
论文:Sermanet et al,“ntegrated Recognition,Localization and Detection using Convolutional Networks”,ICLR2014

3 物体监测

其实不知道有多个物体

在上面的步骤中有滑窗,每次滑窗,做一次类别识别,判断是否是一种动物,也可以。
问题:框的位置不同,大小不同,比例不同,导致计算量大
解决方法1:边缘策略

3.1 选择性搜索

类似于聚类,基于同样的物体像素基本相同,自下而上融合成区域。
将区域扩展为框。
论文:Uijilings et al,“Selective Search for Object Recognition”,IJCV 2013

框的选择算法如下表。
在这里插入图片描述

3.2 R-CNN

在这里插入图片描述

步骤1:输入层是图片,用候选框选择算法选择大概2000个候选框,对每个候选框缩放为同样的尺寸,作为入参,交给卷积层。
在这里插入图片描述

在一个知名模型上做fine-tune。根据自己的模型修改参数。例如有20个分类,再加一个背景分类,表示不属于任何类型。

步骤2:用图框候选算法选择图框,抠出图框。缩放为同样的尺寸。这一步是在CPU上计算的。

步骤3:卷积层,学习参数和特征
在这里插入图片描述

以上一步的图框作为输入,用CNN做前向运算,取第5个池化层做特征,将特征保存到硬盘上。

步骤4:做SVM分类
将上面的特征用SVM做分类。

步骤5:bbox regression

将上面的特征做回归,与标准答案相比。判断候选框是不是要上下左右移动。

论文:Girschick et al, “Rich feature hierarchies for accurate object detection and semantic segmentation”, CVPR 2014

3.3 Fast R-CNN

1 2000个候选框过神经网络抽取特征,花费时间多。
利用卷积层的透视眼,实现共享图窗计算,从而加速。
不再分为2000个子图,而是利用卷积层的透视眼,某一层卷积层的一个点是可以对应到原图的一部分区域的,通过共享参数的方式减少计算量。

2 做成端对端的系统

3 不同大小的图怎么接全连接层

RIP Region of Interest Pooling方式处理
如果得到的矩阵大小是500x300,但是最后想要的结果是100x100,先把图片分成很多个格子,使用max-pool做池化,变成想要的大小。

一般来说候选框不会小于目标大小。

3.4 Faster R-CNN

Region Proposal(候选图窗)一定要另外独立做吗?
候选图窗选择是在CPU上做的。
在这里插入图片描述

region proposal network
选择中心点为中心滑窗 3x3,1:2,2:1,1:1,按照这样的比例,选择候选图窗。
选择中心点的方法是超参数,自己选择。可以是将原始图片分为几个区块,以每个区块的中心作为中心。

论文:Ren et al, “Faster R-CNN: Towards Real-Time Object
Detection with Region Proposal Networks”, NIPS 2015

one-stage vs two-stage
faster-rnn是两段式的。第一阶段先找到候选框,第二阶段判断候选框内有没有物体以及边界情况
yolo/ssd是一段式的。把原图画成不同的格子,以格子中心点为中心,取不同比例的框,通过神经网络获得值:(dx,dy,dy,dw,confidence)以及class。前面4个是微调参数,confidence表示是否是物体,class表示是哪种物体。

4 语义分割

语义分割是对每个像素做分类。

4.1 滑窗处理

参数多

4.2全卷积神经网络

在这里插入图片描述

CxHxW C是类别的数量

输入是 3xHxW,输出是HxW,输出每个像素的分类
HxW可能很大。
训练数据是把边框标出来。
在这里插入图片描述

先做下采样,再做上采样。
怎么做上采样?
专业名称transpose convolution。
例如一个2x2的区域,步长是2,那输出就是4x4,每次增加1列。
在这里插入图片描述

例如粉色区域=3,步长=2,pad=1,一个格子扩为9个格子。每个格子填充3a(a为系数)。

例如蓝色区域=2,系数为b,那么蓝色框线内每个单元格都为2b。两次交叉的3个方格值=3a+2b。

逆卷积就是这样不断还原。

5 代码

tensorFlow object detection https://github.com/tensorflow/models/tree/master/research/object_detection

可以使用TensorFlow做物体识别,从install开始。

faster-rnn https://github.com/rbgirshick/py-faster-rcnn
发现物体检测那块其实写的云里雾里,找了一篇博客写的不错,记录下来。

最后总结一下各大算法的步骤:
RCNN
1.在图像中确定约1000-2000个候选框 (使用选择性搜索Selective Search)
2.每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取
3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4.对于属于某一类别的候选框,用回归器进一步调整其位置

Fast R-CNN
1.在图像中确定约1000-2000个候选框 (使用选择性搜索Selective Search)
2.对整张图片输进CNN,得到feature map
3.找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层
4.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
5.对于属于某一类别的候选框,用回归器进一步调整其位置

Faster R-CNN
1.对整张图片输进CNN,得到feature map
2.卷积特征输入到RPN,得到候选框的特征信息
3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4.对于属于某一类别的候选框,用回归器进一步调整其位置

(CSDN博主「丿回到火星去」的原创文章,原文链接:https://blog.csdn.net/H_hei/article/details/87298097)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转帖】windows命令行中java和javac、javap使用详解(java编译命令)

windows命令行中java和javac、javap使用详解(java编译命令) 更新时间:2014年03月23日 11:53:15 作者: 我要评论 http://www.jb51.net/article/48380.htm学习一下java 最近重新复习了一下java基础,这里便讲讲对于一个类文件如何编译、运行…

第六课 从词向量到NLP分类问题

文章目录1 nlp的常见任务2 词向量表示2.1 离散表示2.2 分布式表示2.3 NNLM(2013年)2.3.1模型2.3.2特点2.4 Word2Vector:CBOW连续词袋2.4.1 样本处理2.4.2 结构2.4.3 CBOW:层次softmax2.4.4 CBOW:负例采样2.4.5 Word2Vec:skip-gram…

spring mvc学习(34):restful的delete

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

热度3年猛增20倍,Serverless云开发的技术架构全解析

『 作为一个不断发展的新兴技术&#xff0c; Serverless 热度的制高点已然到来。』 或许&#xff0c;Google Trends 所显示的 3 年猛增 20 倍的“ Serverless ” 搜索量&#xff0c;可以佐证 Serverless 在整个行业中的火爆程度。 不仅如此&#xff0c;据 KBV 研究公司新发布的…

第七课 循环神经网络与自然语言处理

文章目录1 循环神经网络1.1 场景与多种应用1.2 RNN网络结构1.2.1为什么需要RNN1.2.2 RNN 结构1.3 多种RNN1.4 BPTT算法1.5 生成模型与图像描述2 LSTM2.1 LSTM2.2 GRU1 循环神经网络 1.1 场景与多种应用 1 模仿论文生成 2 模仿linux内核编写代码 3 模仿小四写论文 4 机器翻译 …

第十二题:设int x=1,float y=2,则表达式x/y的值是:

第十二题 设int x1,float y2,则表达式x/y的值是&#xff1a;&#xff08;&#xff09; A 0 B 1 C 2 D 以上都不是 懵逼树上懵逼果&#xff0c;懵逼树下你和我 首先看到这道题&#xff0c;我是懵逼和绝望的。 首先我们打开评论&#xff0c;看看谁的赞最多&#xff0c;拿…

Linux 安装 lanmp

Lanmp介绍 lanmp一键安装包是wdlinux官网2010年底开始推出的web应用环境的快速简易安装包. 执行一个脚本&#xff0c;整个环境就安装完成就可使用&#xff0c;快速,方便易用,安全稳定 lanmp一键安装包是用shell脚本编写,且是开源的,你也可以根据业务需求,做相应的调整,来安装自…

如何利用Featue对特定的文档库或列表添加listviewtoolbar上的button

名字有点长&#xff0c;实在想不出什么好名字。 我们经常会遇到一个问题&#xff0c;就是需要在某一个列表或者文档库视图画面的listviewtoolbar上添加一个按钮来做一些操作。比如说页面跳转&#xff0c;列表操作等。目前很多人都知道利用Feature来添加这个button&#xff0c;而…

第八课 RNN条件生成与Attention机制

文章目录1 RNN条件生成2 机器翻译2.1 V1:Encoder-Decoder2.2 V2:Attention-based Encoder-decoder2.3 V3&#xff1a;bi-directional encode layer2.4 V4&#xff1a;Residual Encode layer3 Attention3.1 self attention3.2 hierarchical attention4 图像生成文本4.1 问题引入…

第十四题: 以下代码的输出结果是?

第十四题: 以下代码的输出结果是&#xff1f; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class B { public static B t1 new B(); public static B t2 new B(); { System.out.println("构造块"); } static { Syst…

第一百二十三期:免费在线制图神器!不上水印支持中文版,GitHub标星已破1万2

又一免费制图神器来袭&#xff01;打开网页就能使用&#xff0c;支持中文版&#xff0c;也不会给你上水印。 作者&#xff1a;乾明 又一免费制图神器来袭&#xff01; 名为draw.io&#xff0c;打开网页就能使用&#xff0c;支持中文版&#xff0c;也不会给你上水印。 不只是…

常用javascript脚本

BS开发中常用的Javascript技术 一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 &#xff08;用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间&#xff0c;形如 (13:04:06) 2.2 短日期&#xff0c;形…

第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络

Webroot发布了年度恶意软件列表&#xff0c;展示了2019年最臭名昭著的网络安全威胁。从攻击次数最多的勒索软件和加密挖矿&#xff0c;到破坏最大的网络钓鱼攻击&#xff0c;显然&#xff0c;全球网络威胁正在变得更为先进且难以预测。 作者&#xff1a;kirazhou 勒索软件 在…

好久没发胡说八道的贴了,今天发一贴

看了老翅寒暑 [真实案例&#xff1a;给所有想要创业的朋友的一个管理方面的测试题]一贴http://www.cnblogs.com/BigTall/archive/2006/12/20/597896.html这是一个真实的事件&#xff0c;我把它转化为了一个测试题目&#xff0c;问过很多朋友&#xff0c;到目前为止我认为答满分…

N元语法模型的数据稀疏问题解决方法之一:Good-Turing平滑

转载自时空霹雳 在统计语言模型章节中&#xff0c;我们谈到了N元语法模型不可避免的一个问题&#xff0c;就是数据稀疏&#xff0c;其原因是大规模语料统计与有限语料的矛盾。根据齐普夫&#xff08;Zipf&#xff09;法则&#xff0c;我们能够推测知零概率问题不可避免。数据稀…

错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap

最近在使用eclipse编写java程序时遇到这样一个问题&#xff1a; 错误在类中找不到main方法&#xff0c;请将main方法定义为 public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application 看到这样的问题让我一头雾水&#xff0c;因为…

第十章 条件随机场CRF

文章目录1 条件随机场定义1.1 马尔科夫随机场1.1.1 用图模型表示概率1.1.3 三个马尔科夫性1.1.3 重点再看局部马尔科夫性1.2 马尔科夫随机场的因子分解1.3 条件随机场1.4 线性链条件随机场2线性链条件随机场的表示形式2.1 参数化形式2.2 简化形式2.3 矩阵形式3 条件随机场的概率…

第一百二十五期:程序员的自我救赎,使用Python开发性格分析工具

如此不均衡的贫富差距&#xff0c;各行业的领导者如何能管理好公司&#xff0c;让员工们既努力产出&#xff0c;又能安于现状呢?每个领导者必学的一门课程就是职场心理学。只有你充分了解员工心理与对应的行为表现&#xff0c;才能从容的掌控各类型的人员&#xff0c;从而达到…

笛卡尔乘积算法的体现

一个商品有多项属性&#xff0c;多项属性的组合就产生不同的商品型号如&#xff1a;衣服&#xff1a;颜色&#xff1a;红、绿尺寸&#xff1a;大、中、小产生的系列就有&#xff1a;红|大、红|中、红|小、绿|大、绿|中、绿|小如果商品的属性不至两个&#xff0c;则产生的系列会…

知识图谱基础

本系列是学习七月算法知识图谱课程的笔记。感觉自己完全就是一个托儿。前面七月算法机器学习&#xff0c;七月算法深度学习的笔记。现在又来了知识图谱课程的笔记。 文章目录1 why知识图谱2 知识图谱前世今生3 知识图谱相关技术4 知识图谱应用案例1 why知识图谱 没有知识图谱&…