最近在研究人脸识别,随便看了点opencv就开始搞代码,网上也有很多大牛研究的代码,十几行到几十甚至几百行不等,简单实现人脸识别也不难。但实现效果往往不佳且不稳定。然后就想着把卷积神经网络也加进去一起训练,发现网上也有许多大牛做了相关的内容,把别人的代码粘过来跑一跑,结果报各种错误,各种问题,看了看代码,发现自己好像跟完全没接触过卷积神经网络一样,好吧,自己之前也确实是只接触了几天,然后就渐渐被我全部遗忘了。报的各种错误自己也解决不了,网上解决方法也比较多,说的最多的就是各种版本冲突问题,各种更新conda,换tensorflow版本等等,结果发现都没用,也没有找到真正能解决我问题的方法,既然这样,那就稳扎稳打的自己研究解决吧。呜呜呜呜,好难~~~~~~~~~
——————————————————————————————————————————————
巴拉巴拉半天,进入正题
——————————————————————————————————————————————
卷积神经网络(CNN)入门
1 什么是卷积神经网络(CNN)?
CNN(Convolutional Neural Network)——卷积神经网络,人工神经网络(Neural Network,NN)的一种,其它还有RNN、DNN等类型,而CNN就是利用卷积进行滤波的神经网络。换句话说,CNN就是卷积加神经网络。网上关于CNN的资料非常多,度娘一搜一大堆,良莠不齐,有不少资料过于艰深,对于刚入行的小白来说一上来看这种资料会迷失方向,产生极强的挫折感,有可能会让你失去学习的信心和兴趣。以下是部分关于CNN讲的不错的资料:
2 卷积神经网络详解
这篇是知乎上专栏作者张觉非的文章,有兴趣的可以直接去看原文:卷积神经网络简介,想做大佬们的搬运工。
2.1 卷积
我们在2维上说话。有两个的函数 f(x, y) 和 g(x, y)。f 和 g 的卷积就是一个新的的函数。通过下式得到:
这式子的含义是:遍览从负无穷到正无穷的全部 s 和 t 值,把 g 在 位置上的值乘上 f 在 (s, t) 位置上的值之后“加和”(积分意义上)到一起,就是为 c 在 (x, y) 位置上的值。说白了卷积就是一种“加权求和”。以 (x, y) 为中心,把 g 距离中心 位置上的值乘上 f 在 (s, t) 的值,最后加到一起。把卷积公式写成离散形式就更清楚了:
如果g表示一幅 100×100 大小的灰度图像,g(x,y)取值 [0, 255] 区间内的整数,是图像