前馈(向)网络之卷积神经网络的应用

2024-03-11 17:58

本文主要是介绍前馈(向)网络之卷积神经网络的应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图像识别:

卷积神经网络(CNN)

分类任务:C个类别

输入:图片,           

输出:类别标签,         

评估准则:准确率

图像识别与定位

输入:图片,         

输出:物体边界框(x,y,w,h)   

评估准则:交并准则

交并准则是预测值与真实值的交集的面积除去并集的面积,值大于0.5通常会认为是有效的定位

图像识别+定位:识别主体+定位

思路1:当作回归

当成一个回归的任务来解决定位的问题,识别问题就是一个分类任务

回归任务损失函数就是均方误差(MSE),分类任务损失函数用交叉熵损失!

step1:解决分类问题,搭建一个识别图像的神经网络(CNN),

step2:将卷积神经网络的尾部展开构建一个分类模块和回归模块,

因为卷积层,池化层是特征的抽取,激励层就是分线性变换,可以在尾部确定自己的任务!

step3:回归模块使用均方误差,在利用SGD进行学习,分类模块类似!

step4:预测阶段把两个模块拼接上,分别进行处理,

回归模块最后加在哪里?可以是最终的卷积层之后,可以是全连接层之后

对主体有更好的识别?规定好有k个组个成部分,做k个部分的回归即可

应用1:识别人的姿势?

每个人的组成部分是相同的,可以对k个关节做回归预测,然后再来进行姿势分类的问题!

思路2:借助图像窗口

类似刚才的回归,分类网络的思路,现在取所有大小不同的框,让框出现在不同的位置(这样的搜索太暴力了,会很慢),判定得分,按照得分高低对结果框做抽取和合并(策略:抽取一个框在根据分类的score得到框向哪边伸展更好,类似启发式的一种搜索框)

问题:用回归得分的过程,由于有全连接会变得很慢!

窗口的复用选择(优化):

用多层卷积层代替全连接层,引入可复用的小卷积核来进行回归/分类!

 

物体检测(实现还是使用tensorflow实现好的一套流程

边缘检测/选择性搜索----->R-CNN

选择性搜索候选框。来达到整个图片的所有物体的识别!

例如:N只猫

首先:对图片的像素点做一个自底向上的聚类(针对像素维度的分类),生成很多的候选集!

R-CNN

step1:构建一个卷积神经网络,自己做一个全连接层的修改,构建自己的任务目标

step2:对所有候选集用卷积层和池化层进行训练,取出第五个池化层的特征存储到硬盘上,然后做一个分类任务比如:使用SVM来进行分类

step3:bbox regression 回归得到滑窗位置的调整(方向的移动,缩放等等....)

问题:对所有子图单独送入神经网络抽取特征太耗费时间

R-CNN------->Fast R-CNN

对R-CNN的优化:

改进1:共享图窗,对卷积层进行一次前向计算,通过反卷积一定可以从第五层的池化层找到一些数值对应原图的某个区域,那么我就不需要对每个候选集都进行特征提取!

改进2:对SVM分类和Bbox reg回归用全连接层接上 逻辑回归和线性回归 变为 神经网络的多任务学习,只需要对损失函数log loss 和 MSE 加权 进行一个比例的调整即可!

改进3:Region of Interest Pooling(RIP)前两种改进只能对同比例大小图片进行处理,对于维度不同的子图,可以进行下采样的方法,把子图全都映射到一个比例大小上,策略:对图片的维度进行画格子变为指定维度的图片,然后对每个格子进行池化!不就可以了嘛!

对比图:

Fast R-CNN------->Faster-CNN

Fast R-CNN的问题:主要速度限制在子图候选集上(是用聚类来生成的,我能不能用神经网络来生成?)因为聚类是CPU来做的嘛,无法使用GPU加速!(适合于大型的矩阵运算和图像渲染...)

通过神经网络,RPN(Region Proposal Network)生成子图,

生成子图的策略:在图片上,取不同的中心点以不同的比例,不同的大小生成不同的候选集!比如:3个不同大小的比例,每个比例对应3个不同大小的候选框!(正方形,横的长方形,纵的长方形)

总结:two-stage的一个方法,一个stage是挑选候选框,另一个是对候选框做一个分类看是否有物体,做一个回归看候选框如何调整才好!

YOLO/SSD

Faster用于实时的检测场景中,也要7fps,是不够的,就此引出YOLO/SSD实时算法!

一步走(one-stage)算法:直接对输入图像应用算法并输出类别和相应的定位(YOLO系列)

策略:对图片进行画格子,然后确定B个中心点,每个中心点确定几个不同比例的子图,把他当成候选集,送入神经网络里然后进行训练!

 

图像分割中的语义分割

只对每个像素距离区域,进行预测类别,只关注像素的意思这就是头牛,而不管它的其他含义(比如几头什么什么样的牛......)

对像素点(pixel)维度去做分类的一个任务!

1.滑窗处理

类似于R-CNN的思路,还可以加上对应的优化的思路,就是这样!(不光可以用在物体检测,还可以用在语义分割上

2.全卷积神经网络

输入3*H*W维度的图像,经过卷积层处理,可以构建一个C个类别的Score:C*H*W的矩阵,输出得分类别最大的一个H*W维度的矩阵!(对像素点维度去做一个分类)

总结:全卷积网络所有的层都为卷积层!

但是会有一个问题,图片现在的精度很高,直接进行处理,很难去训练出来模型,所以需要优化!

3.下采样和上采样

下采样不难理解,因为你的池化层和卷积层就是做的这样的一个事情,所以说是可以做的,但是上采样呢?

上采样一般叫为转置卷积(Transpose Convolution)/反卷积

 

这篇关于前馈(向)网络之卷积神经网络的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/798592

相关文章

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Python Flask 库及应用场景

《PythonFlask库及应用场景》Flask是Python生态中​轻量级且高度灵活的Web开发框架,基于WerkzeugWSGI工具库和Jinja2模板引擎构建,下面给大家介绍PythonFl... 目录一、Flask 库简介二、核心组件与架构三、常用函数与核心操作 ​1. 基础应用搭建​2. 路由与参

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

C#通过进程调用外部应用的实现示例

《C#通过进程调用外部应用的实现示例》本文主要介绍了C#通过进程调用外部应用的实现示例,以WINFORM应用程序为例,在C#应用程序中调用PYTHON程序,具有一定的参考价值,感兴趣的可以了解一下... 目录窗口程序类进程信息类 系统设置类 以WINFORM应用程序为例,在C#应用程序中调用python程序

Java应用如何防止恶意文件上传

《Java应用如何防止恶意文件上传》恶意文件上传可能导致服务器被入侵,数据泄露甚至服务瘫痪,因此我们必须采取全面且有效的防范措施来保护Java应用的安全,下面我们就来看看具体的实现方法吧... 目录恶意文件上传的潜在风险常见的恶意文件上传手段防范恶意文件上传的关键策略严格验证文件类型检查文件内容控制文件存储