CNN如何识别一幅图像中的物体

让我们对卷积神经网络如何工作形成更好直观感受。我们先看下人怎样识别图片,然后再看 CNNs 如何用一个近似的方法来识别图片。

比如说,我们想把下面这张图片识别为金毛巡回犬。

一个需要被识别为金毛巡回犬的图片

人类是怎么做的呢?

一种做法是我们识别狗的特定部位,例如鼻子,眼睛,毛发。我们把图片分成小片,识别小片,然后把这些结合在一起,得到一个狗的概念。

这种情况下,我们可以把图片分成下列组合:

  • 一个鼻子
  • 两只眼睛
  • 金色毛发

如下图所示:

狗的眼睛

狗的鼻子

狗的毛发

再进一步

再进一步来说,我们如何确定鼻子在哪呢?一个金毛巡回犬的鼻子可以看出是一个椭圆形,有两个黑洞在里面。因此,一种辨别巡回犬鼻子的方法是把它分割更小的区域,寻找黑洞(鼻孔)和椭圆的曲线。如下所示:

一个可以用来确定鼻子的曲线

用来分类狗鼻子的鼻孔

广义上来说,这就是 CNN 的学习方式。它学习识别基本的直线,曲线,然后是形状,点块,然后是图片中更复杂的物体。最终 CNN 分类器把这些大的,复杂的物体综合起来识别图片。

在我们的例子中,层级关系是:

  • 简单的形状,如椭圆,暗色圆圈
  • 复杂的物体(简单形状的组合),例如眼睛,鼻子,毛发
  • 狗的整体(复杂物体的组合)

有了深度学习,我们不需要设定 CNN 来识别特定的特征。相反,CNN 通过正向和反向传播,自己学习识别上述物体。

尽管我们从来没有让 CNN 寻找特定的特征信息,但是它识别图片的能力却好的惊人!

对狗图片每一层 CNN 可能识别物体的示意图

CNN 可能有几层网络,每个层可能捕获对象抽象层次中的不同级别。第一层是抽象层次的最底级,CNN 一般把图片中的较小的部分识别成简单的形状,例如水平、竖直的直线,简单的色块。下一层将会上升到更高的抽象层次,一般会识别更复杂的概念,例如形状(线的组合),以此类推直至最终识别整个物体,例如狗。

再次强调,CNN 是自主学习。我们不需要告诉 CNN 去寻找任何直线、曲线、鼻子、毛发等等。CNN 从训练集中学习并发现金毛巡回犬值得寻找的特征。

原文地址:https://www.cnblogs.com/fuhang/p/9263855.html

时间: 2024-12-11 02:05:01

CNN如何识别一幅图像中的物体的相关文章

opencv 模板匹配,在图像中寻找物体

使用模板匹配在图像中寻找物体 模板匹配 模板匹配就是用来在大图中找小图,也就是说在一副图像中寻找另外一张模板图像的位置: opencv中用 cv.matchTemplate() 实现模板匹配. 模板匹配的原理其实很简单,就是不断地在原图中移动模板图像去比较,有6种不同的比较方法,详情可参考:TemplateMatchModes 1. 平方差匹配CV_TM_SQDIFF:用两者的平方差来匹配,最好的匹配值为0 2. 归一化平方差匹配CV_TM_SQDIFF_NORMED 3. 相关匹配CV_TM_

OpenCV,计算两幅图像的单应矩阵

平面射影变换是关于其次3维矢量的一种线性变换,可以使用一个非奇异的$3 \times 3$矩阵H表示,$X' = HX$,射影变换也叫做单应(Homography).计算出两幅图像之间的单应矩阵H,那么应用这个关系可以将一个视图中的 所有点变换到另一个视图中. 上图,最右边图像是将最左边图像进行了一次射影变换,变换到中间图像视图后的图像. 使用OpenCV可以调用库函数findHomography计算两幅图像的单应矩阵,其声明如下 Mat findHomography(InputArray sr

pencv_contrib里的Text(自然场景图像中的文本检测与识别)

平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake Issue说明:最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景图像中的文本检测与识别)模块. 原因: 解决办法: 目录: 一.下载地址汇总(OpenCV+OpenCV_contrib+CMake)二.中间遇到的Issue汇总三.主要参考链接 1)Win10+VS2017编译opencv3.2.0和opencv_contrib3.2.0来调用text模块——https://

红外目标图像中阈值分割方法的比较与研究

红外目标图像中阈值分割方法的比较与研究   摘要:本文主要以红外图像目标检测技术为背景,在图像阈值分割中以最大熵准则及遗传算法为基础,研究了一维最大熵值法(KSW法)及基于遗传算法的KSW熵法单阈值.双阈值等三种不同的阈值分割方法,并通过实验仿真验证了它们的性能及差异.实验结果表明:基于遗传算法的KSW熵法的双阈值分割方法,可以用于红外型目标检测系统中,并取得良好效果,为了验证其是否具有普适性,在其它科学领域如:沿海码头等方向也做了相应的仿真实验,结果较为满意. 关键词:红外目标检测:阈值分割:

相机位姿估计3:根据两幅图像的位姿估计结果求某点的世界坐标

关键词:相机位姿估计,单目尺寸测量,环境探知 用途:基于相机的环境测量,SLAM,单目尺寸测量 文章类型:原理说明.Demo展示 @Author:VShawn @Date:2016-11-28 @Lab: [email protected] 目录 <相机位姿估计0:基本原理之如何解PNP问题> <相机位姿估计1:根据四个特征点估计相机姿态> <相机位姿估计1_1:OpenCV:solvePnP二次封装与性能测试> <相机位姿估计2:[应用]实时位姿估计与三维重建相

C语言中将0到1000的浮点数用强制类型转换的方式生成一幅图像

搞过计算机图像的人都知道,图像中的每一个像素通常为一个整型数,它可以分成4个无符号的char类型,以表示其RGBA四个分量.一幅图像可以看做是一个二维整型数组.这里我会生成一个float数组,其数组大小为1000000,刚好1000*1000,数组内的浮点数的数值范围在0到1000.0之间,呈等差数组排列,相邻两数的差为0.001.然后将其每一个浮点数强制转化成一个整型数或三个unsigned char型,以决定像素的RGB三个通道分量,看看其生成的图像是什么样子. 前几天写了一篇文章是在C语言

计算两幅图像的重叠区域

http://www.cnblogs.com/dwdxdy/p/3232331.html 随笔- 87  文章- 0  评论- 81 [OpenCV学习]计算两幅图像的重叠区域 问题描述:已知两幅图像Image1和Image2,计算出两幅图像的重叠区域,并在Image1和Image2标识出重叠区域. 算法思想: 若两幅图像存在重叠区域,则进行图像匹配后,会得到一张完整的全景图,因而可以转换成图像匹配问题. 图像匹配问题,可以融合两幅图像,得到全景图,但无法标识出在原图像的重叠区域. 将两幅图像都

【OpenCV学习】计算两幅图像的重叠区域

问题描述:已知两幅图像Image1和Image2,计算出两幅图像的重叠区域,并在Image1和Image2标识出重叠区域. 算法思想: 若两幅图像存在重叠区域,则进行图像匹配后,会得到一张完整的全景图,因而可以转换成图像匹配问题. 图像匹配问题,可以融合两幅图像,得到全景图,但无法标识出在原图像的重叠区域. 将两幅图像都理解为多边形,则其重叠区域的计算,相当于求多边形的交集. 通过多边形求交,获取重叠区域的点集,然后利用单应矩阵还原在原始图像的点集信息,从而标识出重叠区域. 算法步骤: 1.图像

opencv笔记(二十三)——寻找以及绘制一幅图像的轮廓

我们常常需要对一幅图像做轮廓的查找,尤其是在做物体的检测与识别的时候. 一般的步骤就是先使用canny方法来得到一幅图像的边缘情况.然后使用findContours方法来得到边缘图像的轮廓.最后使用drawContours方法来绘制轮廓. canny我们都很清楚它的使用方法了. 这里简单地说一下findContours和drawContours void findContours(InputOutputArray image, OutputArrayOfArrays contours, Outp