zoukankan      html  css  js  c++  java
  • CNN如何识别一幅图像中的物体

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

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

     

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

     

    人类是怎么做的呢?

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

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

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

    如下图所示:

     

    狗的眼睛

     

    狗的鼻子

     

    狗的毛发

     

    再进一步

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

     

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

     

    用来分类狗鼻子的鼻孔

     

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

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

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

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

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

     

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

     

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

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

  • 相关阅读:
    获取当前日期的年、月、日
    去掉后端返回过来的 % 且保留 2 位小数
    uni-app 长按复制
    rabbit——部署备份
    Mysql——查询语句备份
    Redis——常用命令
    luajit——编译运行lua
    Mac——无法退出移动硬盘解决办法
    Java——Function接口的使用
    Java——在运行mvn install或mvn package时跳过Test
  • 原文地址:https://www.cnblogs.com/fuhang/p/9263855.html
Copyright © 2011-2022 走看看