shannon2014 发表于 2018-7-9 10:58

一款基于STM32H7的机器视觉开发平台

<div class='showpostmsg'>去年差不多这个时候吧,开始琢磨自己毕业设计的问题,其实导师的方向太随意,没有一个明确的目标,因此自己十分苦恼。后来无意中看到了一段无人机目标跟踪的视频,遂萌生了在Cortex-M嵌入式平台上同时实现机器视觉与控制的想法。说实话,自己在一定程度上是一个“性能强迫症”,STM32出的片子从L4到F7(那时候还没有H7)都有用过,且基本有新款就会入手试一试,因此觉得这么个想法有一定的可行性。网上资料一搜,居然给我发现了openmv这么一个神奇的小玩意:
这么个小模块用F4和F7做核心,跑mircopython,有个qt做的上位机,可以实现好多机器视觉的功能,包括色彩识别啦、人脸识别啦、各种滤波啦、各种其他特征识别啦等等等等。当时心里十分激动,一看价格我去单单一个小板子就要400多,更不提其他拓展板了,一个wifi模块的板子要200多,简直欺负我等学生党。无奈技术价值千金,所以还是忍痛买了一块,到手调试,跑了几个example,看着一行行简单的python实现出各种效果,虽说十分方便快捷,但心里总是有种说不出来的感觉。


此内容由EEWORLD论坛网友shannon2014原创,如需转载或用于商业用途需征得作者同意并注明出处

</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

shannon2014 发表于 2018-7-9 11:03

这是什么样一种感觉呢:也没做什么就莫名奇妙跑出了这么个效果,控制吧这板子性能又没有余量,只能和外界通讯,外界来实现控制。
就在那个时候,就有了自己做一款机器视觉板子的想法,起初也只是为了毕设考虑,想着早点弄出来毕业奔向人生的下一站。
然而,人生就像一块巧克力,你永远不知道下一颗是什么滋味。人工智能爆火、STM32H7发布、CMSIS-NN发布。这三件事情,就这么改变了我毕业设计的走向。
像个文艺青年一样絮絮叨叨了这么多,下面就是我要说的正经事情了。

shannon2014 发表于 2018-7-9 11:12

H7出来后,我根据openmv学习和其他自己做过的乱七八糟的项目经验,设计了一款机器视觉开发板:
1、采用DVP接口的摄像头,配合H7的DCMI接口实现图像采集;
2、H7内部高达1MB的200M-400M时钟RAM实现各种图像处理(采用openmv的图像处理源码);
3、板载四旋翼飞行控制必需的传感器,配合机器视觉实现飞行控制;
4、板载SPI高速WIFI模块,实现图传。
5、一块LCD用于用户调试。
6、后续着重研究CMSIS-NN这款神经网络库,目标是做一个人流量分析系统。

上面就是我的开发板的雏形啦,我把它叫做Turing机器视觉开发板,第一版有很多不足的地方,比如说sensor的时钟固定啊不方便更换、wifi模块用的RAK439极其难用、LCD没有专门的接插件杜邦线接出很丑等等。幸运的是,第二版已经修改了这些问题:后续我会陆续在这里发布这块板子软件开发的教程,也是我为这块板子写的文档,希望大家多多支持!

huo_hu 发表于 2018-7-9 11:46

最近也在弄H7,楼主可否把图像处理指标公布一下,帧率分辨率应用效果

shannon2014 发表于 2018-7-9 12:57

huo_hu 发表于 2018-7-9 11:46
最近也在弄H7,楼主可否把图像处理指标公布一下,帧率分辨率应用效果

还是看具体算法的 比如说我用ov7725单做采集 240160分辨率可以到100多fps 换一个算法比如说aprltag识别可能就只有20fps

shannon2014 发表于 2018-7-9 12:58

还有就是比如CMSIS-NN识别cifar库的帧率大概在15fps 总之就是具体帧率跟具体应用有关

okhxyyo 发表于 2018-7-9 13:56

@@rcsn @残雪 可以跟他们两个交流一下哦~我记得他们 也有玩来着

freebsder 发表于 2018-7-9 16:59

这种残货做vision就是类似通用mcu干高速信号处理,虽然勉强能跑,可一点不能用。类似做信号处理要找dsp一样,做视觉和学习,还是要找专用处理器,比如带有硬件卷积加速、多核核心比如GAP8,或者更高的大平台比如nxp的视觉处理k32v等。实在嫌贵就在pc上折腾吧,好歹现在的cpu处理点小数据集还是不会花费多少时间。论坛里早2年就有人玩openmv,问问 @RCSN,@皈依 ,反正我看他们除了把板子改改跑跑例程,其他没见玩出什么名堂。。。

shinykongcn 发表于 2018-7-9 17:22

@RCSN @皈依 召唤一下,例程跑完该下一步了:lol:lol

shannon2014 发表于 2018-7-9 18:23

freebsder 发表于 2018-7-9 16:59
这种残货做vision就是类似通用mcu干高速信号处理,虽然勉强能跑,可一点不能用。类似做信号处理要找dsp一样 ...

哈哈我拿CNN做人流量分析 可能真不叫什么名堂吧

huo_hu 发表于 2018-7-9 18:33

本帖最后由 huo_hu 于 2018-7-9 18:42 编辑

图像处理的应用类别很多,运动跟踪颜色识别形状识别...每种应用都有若干特殊的条件,比如运动识别云台运动需要图像拼接树木的摇摆光线的变化都会对效果有影响,图像处理如果目标单一且条件明确在低端的mcu或fpga上做针对性的优化才有应用的可能,如果要作成万能型只能高端平台才转的起来.usb3.0接口就足以拖死大部分mcu了.
针对性的设计才是嵌入式的核心所在.

freebsder 发表于 2018-7-9 18:52

shannon2014 发表于 2018-7-9 18:23
哈哈我拿CNN做人流量分析 可能真不叫什么名堂吧

算了吧,就算用arm给的神经网络库,大概300*300 pixel尺寸,一秒钟大概10张图片,就算简化的手写mnist标准60000张图片不知道要train到什么时候,这还不考虑epoch。训练之后得到的params拿来跑跑你以为的cnn model这才是mcu这种层级的东西可以处理的level。你以为xxxmv/opencv里面给的例子拿来就跑这就是全部工作量?不过是把训练后得到的params给你跑例子罢了,这种level连调参侠都算不上,跑参侠是合适的。

freebsder 发表于 2018-7-9 19:10

本帖最后由 freebsder 于 2018-7-9 19:11 编辑

估摸着你也才毕业或者即将毕业,我就最后关于这玩意多说几句,表介意:做硬件的总是觉得自己做块板子出来跑这跑那才能体现水平。实则这个话题中95%是硬件之外的工作,剩下5%才是前面版主说的那些具体到某个运行时的内容。为什么这么说?你可以翻看任何一本关于这个话题的教程或者课本,试着寻找里面关于硬件的话题比例。这个话题中的硬件处理只不过是辅助,如同没有fft算法的出现就不会有dsp的出现,有gpu可以加速数据处理可没有gpu并不影响cnn,sgd等东西的表达。没有其他意思,归结成一句就是在这个问题上如果把精力放在mcu此等硬件上应该是十分白痴的行为。 这句话我也对 @RCSN 他们说过。

huo_hu 发表于 2018-7-9 19:39

如果已知目标是个红色球问题就能简单得多,如果不限定范围对焦又会变成麻烦事,脱离实际的算法堆叠那还是写论文算了.

freebsder 发表于 2018-7-9 20:27

搞单片机的总归是搞单片机的。预处理的过程拿出来说自己的工作有多重要,不否认这个过程,所以上面我说的95%和硬件无关。这就是打了个平型关整个东洋鬼子都是你赶出去的。也就这样了。

huo_hu 发表于 2018-7-10 10:00

H7有个dmamux,不知道摄像头dcmi同时送内存和lcd能不能实现

shannon2014 发表于 2018-7-10 13:42

huo_hu 发表于 2018-7-10 10:00
H7有个dmamux,不知道摄像头dcmi同时送内存和lcd能不能实现

若是提lcd直接上ltdc用dma2d控制rgb屏幕就行了

shannon2014 发表于 2018-7-10 13:44

freebsder 发表于 2018-7-9 18:52
算了吧,就算用arm给的神经网络库,大概300*300 pixel尺寸,一秒钟大概10张图片,就算简化的手写mnist标 ...

你这理解也是厉害 能在单片机上训练?这明显是直接给你跑训练好的网络的 年底32的cubemx.ai都要出了前一段时间一个展会st已经展出了人流量识别分析男女的实时demo,我真的不明白我想做一个东西您这出来对我一通冷嘲热讽图个什么

shannon2014 发表于 2018-7-10 13:45

freebsder 发表于 2018-7-9 19:10
估摸着你也才毕业或者即将毕业,我就最后关于这玩意多说几句,表介意:做硬件的总是觉得自己做块板子出来跑 ...

如果是按您这个道理 单片机到目前为止也没什么发展的必要了 反正有gpu有cpu 单片机老老实实做点简单控制就行 性能干嘛那么强劲 统统上51好了 你单片机就老老实实做单片机的事情 您这说了这么一堆我不知道你官媒关注过openmv的销量和市场

shannon2014 发表于 2018-7-10 13:47

freebsder 发表于 2018-7-9 19:10
估摸着你也才毕业或者即将毕业,我就最后关于这玩意多说几句,表介意:做硬件的总是觉得自己做块板子出来跑 ...

最后说一句 如果我在论坛发个帖也都是这样子来指点江山的 我就没什么发的动力了 其他一堆讨论基础问题的帖子您怎么不去指点说着xx问题书上都有自己去看呢?
页: [1] 2
查看完整版本: 一款基于STM32H7的机器视觉开发平台