搜索
bottom↓
回复: 39

继续之前的计划开始做基于卷积神经网络的图像识别模块

  [复制链接]

出0入0汤圆

发表于 2017-1-10 01:09:30 | 显示全部楼层 |阅读模式
2017年就要开始步入一个新的领域了AI的植物神经之一:视觉。纠结了好久还是入了这个坑。2017年3月开始将在老师的实验室
做实习,主要工作是构建和训练卷积神经网络(CNN)来识别3D点云中的汽车,树,以及各种很gereral的物体。

一年前曾发过一个帖子计划做视觉识别的一个模块。
http://www.amobbs.com/thread-5635009-1-1.html?_dsign=031719a4
一直没有开工。主要是因为在知道了又CNN这个东西后觉得用传统的几何方法来做的识别都很low而牛逼的CNN又不会。经过一年
的各种零碎时间的应用了解了很多CNN的原理才敢跳这个坑。现在计划继续推动这个识别模块的进程。但是不同的是不再做双目
视觉和3D部分而是只做2D物体识别。算法方面使用CNN来做。下面具体来说说这个项目的实施细节。欢迎大家提意见拍砖。

硬件:
    FPGA+ARM架构, 先不用cyclone V soc 和zynq这类的。FPGA计划用我之前的核心板http://www.amobbs.com/thread-5568173-1-1.html
    ARM计划用Orange pi zero 之类的。 FPGA和ARM之间用Ethernet互连。摄像头输入到FPGA。
    整个模块由像orange pi zero那么大的PCB 4层叠堆起来: CMOS摄像头板。FPGA核心板。FPGA底板。orange pi zero板。

软件:
    FPGA上运行CNN的整体需要一些时间去写verilog代码。FPGA将识别结果和原始图片通过ethernet传给ARM。
    ARM上运行Linux系统。用Flask做一个视频流服务器向外界共享识别结果。
    CNN不用cafe和tensorflow等框架。因为想学东西还是要裸奔。再者CNN结构也不是很复杂。再者要用FPGA实现。
CNN:
    CNN 计划使用三层卷积层加3层全连接层。CNN的训练就不在模块上实现了。训练在PC上进行。将训练的结果权值部署在模块上
    这样就可以让这个模块上的CNN专职于识别特定类的物体。比如人脸,手写数字 und so weiter........
CNN训练:
    首先当然是要用BP算法。但是只用BP算法来训练整个网络有点太low了,也太慢而且效果不好。所以先采用层级式的无监督学习来
    初始化前三层卷积层的kernal。和全连接层。 卷积层的无监督学习要用到sparse coding的一些算法,现在我已经看了十几篇LeCun等人相关的
    论文感觉还不是很难。全连接层的无监督学习计划用autoencoder的算法来做。虽然没有看到有论文在CNN上这么干过但是觉得应该
    没有什么问题。当然无监督学习只是初始化了各权值的初始值,最后再用BP算法和有标签数据来做最后的整体微调。
时间进度:
    1月到3月基本闲所以计划3月初可以将卷积层的各kernel的sparse coding结果显示出来。
    3月到9月因为在实验室干的也和这个差不多所以进度也还是很快的。
    3月底可以对整个CNN网络训练微调。
    4月-5月-6月 verilog编码 这个就只能在家业余时间干了。
    7月-8月-9月 折腾ARM-linux上的一些碎事。
    9月后 FPGA ARM 联合调试。幸运的话10月底能看到第一个prototype。
性能预测:
    说白了CNN的训练计算量大, 但是CNN部署了之后计算量不是很大所以对之后实时识别(10fps)还是有信心的。
    识别准确度 因为要兼顾速度所以CNN的规模不能很大所以50%以上我觉得很好了。
不确定因素:
    1. 实验室工作太忙对这个失去兴趣。
    2. 有了更好的想法。
    3. FPGA内用定点计算代替浮点运算导致识别准确度降低。
   

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入442汤圆

发表于 2017-1-10 06:25:07 来自手机 | 显示全部楼层
lz你在读博?哪学校?话说我这所里学生沉迷于cnn,因为太好发论文了,我只是个做项目的,默默打酱油的项聘。

出0入0汤圆

 楼主| 发表于 2017-1-10 07:31:06 | 显示全部楼层
wye11083 发表于 2017-1-10 06:25
lz你在读博?哪学校?话说我这所里学生沉迷于cnn,因为太好发论文了,我只是个做项目的,默默打酱油的项聘 ...

lz  TU Chemnitz小硕一枚做完这一票才能毕业。

出0入0汤圆

发表于 2017-1-10 08:06:24 | 显示全部楼层
关注下,学习了      

出10入18汤圆

发表于 2017-1-10 08:25:41 来自手机 | 显示全部楼层
直接买个zynq开发板吧楼主,硬件太拖累了

出0入0汤圆

发表于 2017-1-10 08:42:04 | 显示全部楼层
qtechzdh 发表于 2017-1-10 08:25
直接买个zynq开发板吧楼主,硬件太拖累了

建议用这种方式,简化硬件架构,深耕算法!

出0入442汤圆

发表于 2017-1-10 10:24:51 来自手机 | 显示全部楼层
YFM 发表于 2017-1-10 07:31
lz  TU Chemnitz小硕一枚做完这一票才能毕业。

我卄,好流逼,我都不敢想德国是什么样的,那的人是不是特别认真?
你要把它实现到fpga里面,boss前一段看到一篇论文用的是XC7VX485T做的,于是买了一套7v的开发板。CNN核我记得应该是DSP占用非常厉害,你得找DSP超多、RAM比较大的片子。至于代码,你还是看看用matlab或hls生成吧,手写基本没有可能性--你2年能写个勉强能用的就不错了--光仿真都得数月时间,还不能保证大状态机的可靠性。

出0入442汤圆

发表于 2017-1-10 10:30:45 来自手机 | 显示全部楼层
YFM 发表于 2017-1-10 07:31
lz  TU Chemnitz小硕一枚做完这一票才能毕业。

还有,fpga实现32位浮点倒是不费太多功夫,只是精度也不够高。64位的就要考虑深流水线了,要不然跑不快--但是延时会变大,而且硬件要配合深流水线去做,难度会大幅增加

出0入0汤圆

 楼主| 发表于 2017-1-11 00:57:02 | 显示全部楼层
wye11083 发表于 2017-1-10 10:24
我卄,好流逼,我都不敢想德国是什么样的,那的人是不是特别认真?
你要把它实现到fpga里面,boss前一段 ...

FPGA实现不用写太多的状态机。我用SGDMA这种的描述符式的来控制数据流。所以卷积什么的实现就只用写一个通用的Avalon-ST加Avalon-MM模块然后就是多例化几个卷积模块。数据流用描述符来控制。描述符启动的时候ARM生成就好了。DSP确实需要比较多。RAM也是不过我FPGA核心板上的EP3C55够用了。发现一个很奇怪的事某宝上美时龙EP4CE75卖的比EP4CE55都便宜。

出0入0汤圆

 楼主| 发表于 2017-1-11 01:01:22 | 显示全部楼层
KunShan_a_dai 发表于 2017-1-10 08:42
建议用这种方式,简化硬件架构,深耕算法!

有一套Cyclone V soc的不过这个片子不好买。 所以先用我写的这个硬件方案做个样品出来。反正工作量大的全在FPGA端。问一下zynq 的xc7z020几十片的量现在多少钱能拿到?

出0入442汤圆

发表于 2017-1-11 01:34:41 来自手机 | 显示全部楼层
YFM 发表于 2017-1-11 00:57
FPGA实现不用写太多的状态机。我用SGDMA这种的描述符式的来控制数据流。所以卷积什么的实现就只用写一个 ...

卷积有现成的核?那样倒是可以简单多了。
至于报价,比如某家公司订了一大批ce75,那75的价很有可能会低很多--跟几个单就行了。美时龙?我看它评论不咋的,假货翻新货比较多。

出0入0汤圆

发表于 2017-1-11 06:31:27 来自手机 | 显示全部楼层
楼主这是要实现真实版疑犯追踪吗

出0入0汤圆

发表于 2017-1-11 08:04:40 | 显示全部楼层
YFM 发表于 2017-1-11 01:01
有一套Cyclone V soc的不过这个片子不好买。 所以先用我写的这个硬件方案做个样品出来。反正工作量大的全 ...

   这种片子几十上百颗量的价格基本和零售差不多,
年前单颗价位在140$左右

出0入0汤圆

发表于 2017-1-11 08:24:47 | 显示全部楼层
TU Chemnitz  楼主牛逼...

出0入0汤圆

发表于 2017-1-11 09:34:59 | 显示全部楼层
膜拜楼主

出20入62汤圆

发表于 2017-1-11 10:10:50 | 显示全部楼层
膜拜楼主+1

出0入0汤圆

发表于 2017-1-11 19:04:34 来自手机 | 显示全部楼层
好流弊的样子,感觉非常厉害

出0入0汤圆

发表于 2017-1-11 21:49:36 来自手机 | 显示全部楼层
不明觉厉

出0入0汤圆

发表于 2017-1-11 22:09:54 | 显示全部楼层
膜拜楼主

出0入0汤圆

发表于 2017-1-12 09:18:00 | 显示全部楼层
膜拜大神

出0入0汤圆

发表于 2017-1-12 10:17:40 | 显示全部楼层
哈哈,最近也在研究CNN和RNN,在PC上已经实现了,用的是谷歌的开源AI神器tensorflow,写的代码不多,训练的时候用上了GPU,运行还是很快的。

出0入0汤圆

发表于 2017-1-12 12:52:01 来自手机 | 显示全部楼层
3层卷积太浅了。做不了什么好玩东西。现在是流行深度网络。看看谷歌的inception模型吧。开源的。连权重都给免费用。fpga够呛。模型一般有几百兆。一次算下来很多浮点计算的。应该用gpu算。不然实在太慢了。

出0入0汤圆

 楼主| 发表于 2017-1-13 04:27:06 | 显示全部楼层
kutf 发表于 2017-1-12 12:52
3层卷积太浅了。做不了什么好玩东西。现在是流行深度网络。看看谷歌的inception模型吧。开源的。连权重都给 ...

多层那种是识别复杂物体的而且输出层可以区分1000多个不同物体类的规模当然大。3层卷积层,人脸,数字,字母,螺丝,垫圈,电阻电容等各种低深度图像特征的都可以识别,比如我3层能很好的识别车轮但是要识别整车就需要4层5层了,因为车轮和其他部件一起构成汽车。我做这个本来就是为了识别这些小东西的。再者3层都实现了4层5层也不会很难。但可能就要祭出胡工的EP4SGX530 开发板了。

出0入0汤圆

 楼主| 发表于 2017-1-13 04:31:56 | 显示全部楼层
wye11083 发表于 2017-1-11 01:34
卷积有现成的核?那样倒是可以简单多了。
至于报价,比如某家公司订了一大批ce75,那75的价很有可能会低 ...

卷积核可以自己写,做成可配置卷积大小和Avalon总线形式的,到时候就是在总线上多挂几个的事情了。这种事情之前做数字信号处理的时候干过。只可惜当时只有EP2C8,95%资源使用率,主频都降到40MHz去了。

出0入0汤圆

 楼主| 发表于 2017-1-13 04:33:11 | 显示全部楼层
KunShan_a_dai 发表于 2017-1-11 08:04
这种片子几十上百颗量的价格基本和零售差不多,
年前单颗价位在140$左右 ...

这一颗都顶我一个核心板的价格了

出0入442汤圆

发表于 2017-1-13 05:55:20 来自手机 | 显示全部楼层
YFM 发表于 2017-1-13 04:27
多层那种是识别复杂物体的而且输出层可以区分1000多个不同物体类的规模当然大。3层卷积层,人脸,数字, ...

话说我这有人貌似用cnn做人脸识别,这玩意貌似不靠谱吧,毕竟cnn检测效率很高,但是识别率也特低了。去年年初时一同事测时转10圈能识别出10个人,现在不知啥情况。你觉得呢?还是说cnn不适用识别只适用分类定性检测?

出0入0汤圆

发表于 2017-1-13 08:55:33 | 显示全部楼层
kutf 发表于 2017-1-12 12:52
3层卷积太浅了。做不了什么好玩东西。现在是流行深度网络。看看谷歌的inception模型吧。开源的。连权重都给 ...

请教下,谷歌的inception模型在哪里可以找到,麻烦给我一个连接,谢谢!

出0入0汤圆

发表于 2017-1-15 00:07:43 | 显示全部楼层
mark82 发表于 2017-1-13 08:55
请教下,谷歌的inception模型在哪里可以找到,麻烦给我一个连接,谢谢!

有可能需要fq,具体步骤和使用方法可以看看这个github页面
https://github.com/tensorflow/models/tree/master/inception

# download the Inception v3 model
curl -O http://download.tensorflow.org/m ... 3-2016-03-01.tar.gz
tar xzf inception-v3-2016-03-01.tar.gz

出0入0汤圆

发表于 2017-1-15 00:10:37 | 显示全部楼层
YFM 发表于 2017-1-13 04:27
多层那种是识别复杂物体的而且输出层可以区分1000多个不同物体类的规模当然大。3层卷积层,人脸,数字, ...

3层是识别图片中有没有轮子?还是找到轮子具体在图片的位置?如果是后者,3层感觉有点少了。3层一般必须有conv2d, max_pool, fc,这已经是3层了。

出0入0汤圆

 楼主| 发表于 2017-1-15 07:13:42 来自手机 | 显示全部楼层
kutf 发表于 2017-1-15 00:10
3层是识别图片中有没有轮子?还是找到轮子具体在图片的位置?如果是后者,3层感觉有点少了。3层一般必须 ...

[[conv+ReLU]*L+pool]*M+FC*N 三层指的是L等于3且M等于1 或者L等于1且M等于3。也就是3层卷积层。至于FC一般都是3层也就是N等于3。3层卷积层只能够很好的分类轮子这类简单构成的物体。

出10入0汤圆

发表于 2017-1-15 08:59:15 来自手机 | 显示全部楼层
好强大,关注中!!!

出0入0汤圆

发表于 2017-9-22 09:53:03 | 显示全部楼层
挺高深的,我还要学习很多啊

出0入0汤圆

发表于 2017-9-22 11:03:27 | 显示全部楼层
我这边论文也有这种题目,回头碰运气看会不会选上

出0入0汤圆

发表于 2019-7-17 18:03:21 | 显示全部楼层
又来看一遍 还是觉得牛逼

出0入0汤圆

发表于 2019-8-23 09:53:07 | 显示全部楼层
请教一下楼主,下图的这个咋个来的?能否讲解一二?谢谢了,前排听课。。。。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2019-8-23 12:55:41 | 显示全部楼层
gracialee 发表于 2019-8-23 09:53
请教一下楼主,下图的这个咋个来的?能否讲解一二?谢谢了,前排听课。。。。

...

这就是一个元素的卷积啊,每个格子里的值和卷积核对应格子的值相乘,然后在加起来

出0入91汤圆

发表于 2019-8-23 13:14:16 | 显示全部楼层
gracialee 发表于 2019-8-23 09:53
请教一下楼主,下图的这个咋个来的?能否讲解一二?谢谢了,前排听课。。。。

...

就是卷积运算

出0入0汤圆

发表于 2019-8-23 15:58:38 | 显示全部楼层
Scarlette 发表于 2019-8-23 12:55
这就是一个元素的卷积啊,每个格子里的值和卷积核对应格子的值相乘,然后在加起来 ...

小白一枚,问这个就是想知道15咋个来的,谢谢。。。

出0入0汤圆

发表于 2019-8-23 16:57:19 | 显示全部楼层
本帖最后由 avrwoo 于 2019-8-23 16:58 编辑
gracialee 发表于 2019-8-23 15:58
小白一枚,问这个就是想知道15咋个来的,谢谢。。。


1*2+2*0+3*1+
0*0+1*1+2*2+
3*1+0*0+1*2=15

其实是数学上的内积运算

出0入0汤圆

发表于 2019-8-23 20:56:05 | 显示全部楼层
avrwoo 发表于 2019-8-23 16:57
1*2+2*0+3*1+
0*0+1*1+2*2+
3*1+0*0+1*2=15

谢谢。1024
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 20:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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