AI学习者 · 2021年06月10日

深度学习-11.卷积的学习

本文转自:知乎
作者:djh

理解二维数组的卷积

比如说如下两个数组进行卷积Mr Mc 为数组A的行列数

我们计算下

C(2,2) = 1*1+1*0+1*1+0*0+1*1+1*0+0*1+0*0+1*1 = 4;

其实就是下面的六个数和右边的六个数相乘。

红色部分我们称之为卷积核。它对原始数据进行一定的处理。通常使用图像来做比喻会让人更明白。

我对数学研究不深所以拿别人的几种卷积核进行对比下。

通用的几种卷积核。(3*3)为例子

原始图像:

数据不变的卷积核。

代码如下:

 img = plot.imread("test.jpeg")
 nuclearNothing = np.array([[0,0,0],
                     [0,1,0],
                     [0,0,0]])
 nuclearNothingFilter = cv2.filter2D(img,-1,nuclearNothing)
 plot.imshow(nuclearNothingFilter)
 plot.show() 

效果

边沿检测的卷积核

代码如下:

nuclearNothing = np.array([[0,-1,0],
                     [0,1,0],
                     [0,0,0]])
 nuclearNothingFilter = cv2.filter2D(img,-1,nuclearNothing)
 plot.imshow(nuclearNothingFilter)
 plot.show() 

当然上面的是竖直方向的,下面的是水平方向的

nuclearNothing = np.array([[0,0,0],
                     [-1,1,0],
                     [0,0,0]])
nuclearNothingFilter = cv2.filter2D(img,-1,nuclearNothing)
plot.imshow(nuclearNothingFilter)
plot.show() 

图像锐化滤波器

我们拿一种举例

nuclearNothing = np.array([[0,-1,0],
                     [-1,5,-1],
                     [0,-1,0]]) 
nuclearNothingFilter = cv2.filter2D(img,-1,nuclearNothing)
plot.imshow(nuclearNothingFilter) 
plot.show() 

均值模糊

nuclearNothing = np.array([ [0,0.5,0],
                             [0.5,0,0.5],
                             [0,0.5,0]]) 
nuclearNothingFilter = cv2.filter2D(img,-1,nuclearNothing) 
plot.imshow(nuclearNothingFilter) 
plot.show() 

其他

关注我不迷路,目前只是一些入门级的小文章,后面会有AI系列文章推送。

https://github.com/yazone/ai_learning_path

http://weixin.qq.com/r/5y-Ty4PEcd4Orceo93r1 (二维码自动识别)

推荐阅读

更多嵌入式AI技术干货请关注嵌入式AI专栏。

-END-

推荐阅读
关注数
18834
内容数
1369
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息