鱼C论坛

 找回密码
 立即注册
查看: 1192|回复: 0

[技术交流] 卷积神经网络从opencv说起

[复制链接]
发表于 2018-11-17 11:23:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        很长时间没发帖了。因为最近一直在研究tensorflow,而且论坛也不是太稳定。卷积神经网络是最近很流行的,至于历史就不多说了。它是模仿人的视觉神经发明的机器学习算法。人脑大概有1000亿个神经元,运算起来非常快。现在最多神经元的残差神经网络的神经元数应该也超不过1亿个,而且用电脑运行是相当慢的,大概需要好几天的时间训练,比普通的机器学习算法还要慢,如果像人脑那样还需很长一段路要走。这里不能不感叹大自然的伟大。
       
        既然这么慢为什么要还用它?因为它虽然训练起来慢可是准确率高,另外利用训练好的参数执行速度是很快的,现在成熟的一些机器领域都是利用训练好的参数去直接运行,比如无人驾驶汽车等。卷积神经网络因为是模仿的人眼所以对图片的辨识非常强,图片也是现在的主要的应用领域,opencv是一款非常好用的图片处理的第三方模块,最近又新出了python版本的opencv非常简单好用,所以我们在学神经网络前先要学习图片的处理技巧。

        如果我们只有视觉可以认为万物皆图像,目前我们学习的电脑对图片就是如此,电脑其实是把图片解析为一个3维的矩阵,第一维是图片的长度,第二维是宽度,第三维是颜色通道(红,绿,蓝),我们还是用代码解释一下:

        安装opencv非常简单,装完anaconda后,在windows菜单里启动anaconda navigator,进environment选项把opencv安装上就行了,如图:
assadas.png

        然后我们开始打开jupter notebook写代码:
  1. import cv2
  2. import numpy as np

  3. a=np.zeros((300,300,3),dtype=np.uint8)
  4. cv2.imshow('a.png',a)
  5. cv2.waitKey(0)
复制代码

        先初始化一个300*300*3初始值都是0的三维数组,用opencv的imshow方法解析成图片就是一张全黑的图片,因为0就代表没有任何颜色。
  1. b=np.zeros((300,300,3),dtype=np.uint8)+255
  2. cv2.imshow('a.png',b)
  3. cv2.waitKey(0)
复制代码

        以上代码是把所有数值都初始化为255,255就是把3个通道所有颜色都掺一起就变成全白色了。
  1. c=np.vstack((a,b))
  2. cv2.imshow('a.png',c)
  3. cv2.waitKey(0)
复制代码

        这就是把以上2个矩阵组合到一起了,就是一半黑一半白。
  1. a[:,:,0]=255
  2. cv2.imshow('a.png',a)
  3. cv2.waitKey(0)
复制代码

        opencv是按照蓝绿红的顺序来解析颜色的,以上代码是只把三通道的第一个通道的值改成255,就变成蓝色的了。

        这个帖子就是简单的解释一下图片的原理。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 20:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表