| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 图像识别(一)| 从像素说起 -> 正文阅读 |
|
[人工智能]图像识别(一)| 从像素说起 |
目录
第一个网络,就从玩烂的、作为各大AI芯片厂商性能标杆的Resnet50开始。个人水平有限,文中如有错误,欢迎留言指正。 希望能写满25篇吧。 像素要实现图像识别,最离不开的,就是像素。 其实我们都知道,图像是由像素组成的。 (一张1080p的图片,我们可以更容易辨别出图像中的物体是山还是水。这是因为更多的像素会给眼睛更丰富的图片细节)
当我们去看一张图片时,我们绝对不是盯着某一个像素或某几个像素看,而是看了整个图像的大部分区域,或者说,大部分像素! 因为只有看到了大部分的图片,才能知道图中是座山。 正所谓,聚沙成山! 绝不是少了一粒沙,山就不是山,多了一粒沙,就变成了山。 上图哆啦A梦,虽然不是很清晰,像素点数也很少,但一眼望去,依然可以分清是哆啦A梦,甚至,用手捂住一半的图像,依然可以。 像素局部性这是因为人们对于图像信息的识别,是建立在对像素局部性分析的基础上的。 所谓局部性,通俗点说,就是眼睛或大脑会将相邻的像素或大片的像素连接起来分析,从而组合成嘴巴,然后是耳朵,最后是哆啦A梦。 神经网络识别图片大致就是这样的原理。它模拟的,就是人们看到图片之后的信息处理过程。 当我们盯着一个图片看时,我们首先会获取到图片的细节特征。 比如哆啦A梦红色的大嘴巴。 但是如果仅仅盯着大嘴巴,又反而让人有一种“只缘身在此山中”的感觉。 因此还需要看一下图像的轮廓。 于是,眼睛看图片大致有以下两个过程:
两个过程获取的信息叠加。 Bingo,看清楚了,是哆啦A梦! 那么神经网络是否可以模拟这种瞳孔放大、缩小的方式呢? 很幸运,可以! (卷积:convolution)
人们通过调整卷积核的大小,来达到瞳孔张开、缩小的目的。 并且大量的实验和论文表明,卷积这一针对图像局部性识别的算法,可以非常有效的模拟人眼识别物体的过程。 关于卷积算法以及卷积核的设计,后面会专门写几篇文章来聊聊。因为卷积这一算法,在图像处理领域,实在是,太重要了啊! 色彩分量RGB回到像素这一话题。 你有没有想过,为什么一张图片会是彩色的。 学过摄影的小明同学可能这时会回答:因为图片是由RGB三种颜色来表示的,每个像素实际是不同的R/G/B分量的叠加,混合起来,就表示成了不同的颜色。 回答正确。 (三张分别表示R/G/B分量的图片,合成一张彩色图片)
那么,如果让计算机来处理图片,他又是如何知道色彩和轮廓的呢? 其实对于计算机来说,一张图片只是一堆数据,计算机是无法知道这堆数据代表的是什么。 这就需要人为的给这堆数据一种表示方法,让计算机知道,哦,这1/3的数据是红色分量,这1/3的是蓝色分量 这些数据(像素)组合起来,可能代表的是个“帽子”。 怎么做 数据在计算机的存储中,最常见的存储方式是连续存储的。 比如C语言,定义一个数组,那么数组在内存中的位置是连续的。
内存怎么理解,它就是一排连着的门牌号的公寓宿舍。 门牌号为101里面住着的,是data的第一个数据0。门牌号102里面住着的,是data的第二个数据1,...,以此类推。 (女贞路4号)
这个时候,计算机根本就不关心数据是啥,计算机用到的时候,就把数据从内存对应的地址中取出来用。 如何取数据 这就需要人们为数据存储设计一种格式,告诉计算机,这堆数据大概是什么样的。只有这样,通过这种人为约定的方式,计算机才能正确的取到R分量或者B分量。 对于一张图片来说,最常见的两个参数是长和宽,一般用H(height) 和 W(width) 来表示,那么RGB三个分量,看作是3个通道(channel),一般用 C 来表示。 如此一来,一张长宽分别是224像素*224像素的RGB图像,就可以用 HWC = [224, 224, 3]来表示。两张类似的图片就用 NHWC = [2, 224, 224, 3]表示,其中N代表图片张数。 (一张图片的抽象数据表示)
虽然这样表示不太利于人们的直观理解,但是计算机处理这种数据是十分方便的。 在目前主流的深度学习框架中,对于图片的数据格式,基本都支持了NHWC或NCHW这种数据摆放格式。 说到底,都是为了更高效地进行图片数据的处理和运算。 总结一下今天就先开个头,从像素说起,说到了像素具有局部连接性的,人眼识别图像也是通过获取像素的局部连接性信息来完成的。 幸运的是,卷积这一算法,可以很好的模拟这一过程。 最后,为了使计算机更高效的处理图片数据,引出NHWC的图片数据表示方法, 所以,之后我们说图片,不仅仅局限于图片的长和宽,还多了一个维度信息,那就是channel。 One More Thing熟悉OpenCV或者计算机视觉的同学,可能对于上面的RGB分量中的女神很熟悉。没错,在很多的教程中,这位女神不止一次的出场。 这位女士名叫 Lena。 电气电子工程师学会图像处理汇刊 (IEEE Transactions on Image Processing)主编曾在1996年1月出版的一期中解释道,Lena的流行,因为她是一张好的测试图片,其中包含了很多细节,平滑区域,阴影和纹理。 ?我最近开通了个人微信公众号:董董灿自述 | 我是一个攻城狮 分享人工智能知识和见解,欢迎关注。 同时,也欢迎关注我的同名知乎账号:董董灿是个攻城狮 - 知乎 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:51:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |