您好,
会员登录 快速注册
退出 ( 条未读消息)
关于本站 意见反馈 首页

公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!
全部文章分类
  • 人工智能 >

  • 编程语言 >

  • WPF系列 >

  • ASP.NET系列 >

  • Linux >

  • 数据库 >

  • 嵌入式 >

  • WEB技术 >

  • PLC系列 >

  • 微服务与框架 >

  • 小宅DIY >

  • 学习资料 >

OpenCv基础 ANN车牌识别 yolov5车牌识别 指针式仪表识别 ROS系列 YOLO Halcon Detectron2 昇腾AI ChatGPT在线体验 英伟达JETSON ChatGLM ChatTTS FunASR 地平线 ByteTrack 魔搭社区 LangChain
C C# C++ Python Java Go
WPF
ASP.NET小功能 GPS定位系统-MVC GPS定位系统-VUE ASP.NET WebRTC
Linux Linux内核 Shell MakeFile
MySql SqlServer Oracle
STM8 STM32 51单片机
VUE入门 HTML JavaScript CSS layui镜像网站 ElementUi中文官网 element-plus 图标
三菱 欧姆龙 西门子 施耐德 松下 台达
IOTSharp IOTGateway ABP FRAMEWORK Docker
亚克力音响 编程仙途:智驭万法
面试题与技巧 Python入门技能树 微软C#教程
首页 编程之美 工具下载 全国就业 流量地图 文心一言
ANN车牌识别
车牌识别源码下载页 【车牌识别1】OpenCv ANN神经网络训练原理 【车牌识别2】如何制作ANN神经网络训练模板 【车牌识别3】ANN神经网络车牌识别
车牌识别源码下载页
【车牌识别2】如何制作ANN神经网络训练模板
激萌の小宅 小宅博客网 ANN车牌识别

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 1

    累计评价

OpenCv ANN神经网络训练原理 - (车牌识别1)


本章节视频讲解如下:



人工神经网络的演示(识别数字):


ANN卷积神经网络可视化原理:


       本章节给大家讲讲如何利用OpenCv进行神经网络的训练,考虑到训练时间会很长,我这里训练样本不会弄太多,训练的内容为英文字符、数字、以及部分简易的汉字,该训练为后面做OpenCv的车牌识别做准备。

       同样的,我这里会提供C#、C++、Python三个版本的训练方法,以及三种版本的训练时长对比、识别成功率对比的参考数据。方便大家对C#、C++、Python在神经网络的处理性能方面有个初步的认识。

       我们的调试平台为:VS2019 windows10 64位,各个语言的OpenCv版本信息如下:

语言
OpenCv版本
C#OpenCvSharp4 (4.5.3.20210817)
C++OpenCv-3.4.0、OpenCv-4.5.5
Pythonopencv-python (3.4.2.16)、opencv-python (4.5.5)

        在开始训练之前,我们首先需要准备一些训练用的图片,图片如下,目前训练的图片中没有汉字,所以我们目前只做数字和英文的识别,后面进行车牌识别时,我会以汉字为例子,教大家如何制作训练图片。

       训练库下载:车牌识别源码下载页

大家可以看到,在上图中,英文字符只有24个,少了“O”和“I”两个字母,因为这两个字母和数字“0”、“1”非常像,所以需要剔除,车牌里面好像也没有这两个字母。

       考虑到训练的时间特别长,我这里每组图片只制作了50张训练样本,理论上,训练样本数越多,识别的成功率就越高。


       不同电脑,训练时间可能会有些差异,估计也不会差太多,下面是我的电脑配置:


C#版本,训练与测试代码如下:

       由于OpenCvSharp3-AnyCPU找不到关于ANN_MLP的应用接口,所有改成OpenCvSharp4了。

       使用OpenCvSharp4需要安装两个库:OpenCvSharp4和OpenCvSharp4.runtime.win

       C#版本的训练结果如下:

从测试数据上看,C#版本的训练耗时时间为:

开始训练时间:2021/12/28 20:38:29

训练完成时间:2021/12/28 20:41:41

总耗时大约3分钟,这速度,比C++的42分钟,真的不是只快了一点点,不知道是不是C#的OpenCvSharp4在算法上做了优化。

        对训练结果进行识别测试,测试结果如下,有7张图片识别错误,成功率为:7/(34*50)*100%= 99.6%,和C++版本的基本一致。

        从测试结果上看,有7张图片未识别成功,7张图片如下:


C#版本完整代码如下:

车牌识别源码下载页


C++版本, 训练与测试


       C++版本的代码目前只测试过在OpenCv-3.4.0和OpenCv-4.5.5两个版本中运行过,识别成功率基本没太大差异。

       在C++版本中,我们首先需要先调用ANN_Drill函数来训练出我们的xml文件,当然了,这个训练只需要训练一次就够了,后面做车牌识别时,只需要调用xml文件即可,识别速度还是相当的快的。

训练过程如下。

训练过程中中间会卡在“./Image/Z/9_0.9727...”位置,此时就是漫长的等待了....

训练耗时如下。

开始时间:2021-12-07 20:59:45

完成时间:2021-12-07 21:43:24

总耗时大概42分钟。


训练的EnglishAndNumber.xml文件张这个样子


最后调用TestXml函数的测试结果如下:


从结果中可以看到,还是有一些图片识别失败了,一共有7张,如下:

从失败的图片中可以看出,这个训练图片用的好像也不是特别好,正常训练图片用的好,基本上能达到100%的识别成功率。


完整代码如下:

车牌识别源码下载页


Python版本, 训练与测试代码如下:

       Python版本相对前面C#和C++版本,数字+英文字母的识别成功率太低了,只有26%,如果只是单纯的识别数字,成功率能达到83%,但是如果采用C++的xml文件进行识别,成功率基本和C#的一致,这种情况,如果不是训练方法问题,那估计就是opencv的版本问题了,之前在调试时也出现过这种情况,某些版本的opencv神经网络识别成功率就非常低,如果是训练方法有问题,没理由数字识别能达到83%,加上英文字母后,就只剩下26%了。所以,我还是怀疑是opencv的版本问题,改天换个高版本的再试试。


Opencv3.4.2的训练过程如下:


Opencv4.5.5的训练过程如下:

QQ截图20220203135013.jpg


从结果上看,Python的训练时间也挺快的,Opencv3.4.2版本大概也只用了17秒的时候,Opencv4.5.5版本用了159秒左右,两个版本都比C++和C#都快了好几倍了,但是识别的成功率是真的不行。识别错误的图片如下,总共也才34*50=1700张图片,就有Opencv3.4.2版本有1256张识别失败,而Opencv4.5.5版本有1219张识别失败,Opencv4也就比Opencv3好了那么一点点。。。坑!


Opencv3.4.2和Opencv4.5.5通用完整代码如下

车牌识别源码下载页

车牌识别源码下载页
【车牌识别2】如何制作ANN神经网络训练模板

友情链接: CSDN激萌の小宅 95知识库 自考题库 罗分明个人网络博客 精益编程leanboot

小宅博客  www.bilibili996.com All Rights Reserved. 备案号: 闽ICP备2024034575号

网站经营许可证  福建省福州市 Copyright©2021-2025 版权所有

小宅博客
首页 智能家居 地图定位
公告:小宅博客网可以开发票了,需要发票的,去群里找群主哈!!

文章作者:激萌の小宅

促销:¥0

价格:¥0

配送方式: 购买后立即生效(如购买异常,请联系站长)
付款之后一定要等待自动跳转结束,否则购买可能会失败
  • 0 天

    有效期

  • 0

    总销量

  • 1

    累计评价

OpenCv ANN神经网络训练原理 - (车牌识别1)


本章节视频讲解如下:



人工神经网络的演示(识别数字):


ANN卷积神经网络可视化原理:


       本章节给大家讲讲如何利用OpenCv进行神经网络的训练,考虑到训练时间会很长,我这里训练样本不会弄太多,训练的内容为英文字符、数字、以及部分简易的汉字,该训练为后面做OpenCv的车牌识别做准备。

       同样的,我这里会提供C#、C++、Python三个版本的训练方法,以及三种版本的训练时长对比、识别成功率对比的参考数据。方便大家对C#、C++、Python在神经网络的处理性能方面有个初步的认识。

       我们的调试平台为:VS2019 windows10 64位,各个语言的OpenCv版本信息如下:

语言
OpenCv版本
C#OpenCvSharp4 (4.5.3.20210817)
C++OpenCv-3.4.0、OpenCv-4.5.5
Pythonopencv-python (3.4.2.16)、opencv-python (4.5.5)

        在开始训练之前,我们首先需要准备一些训练用的图片,图片如下,目前训练的图片中没有汉字,所以我们目前只做数字和英文的识别,后面进行车牌识别时,我会以汉字为例子,教大家如何制作训练图片。

       训练库下载:车牌识别源码下载页

大家可以看到,在上图中,英文字符只有24个,少了“O”和“I”两个字母,因为这两个字母和数字“0”、“1”非常像,所以需要剔除,车牌里面好像也没有这两个字母。

       考虑到训练的时间特别长,我这里每组图片只制作了50张训练样本,理论上,训练样本数越多,识别的成功率就越高。


       不同电脑,训练时间可能会有些差异,估计也不会差太多,下面是我的电脑配置:


C#版本,训练与测试代码如下:

       由于OpenCvSharp3-AnyCPU找不到关于ANN_MLP的应用接口,所有改成OpenCvSharp4了。

       使用OpenCvSharp4需要安装两个库:OpenCvSharp4和OpenCvSharp4.runtime.win

       C#版本的训练结果如下:

从测试数据上看,C#版本的训练耗时时间为:

开始训练时间:2021/12/28 20:38:29

训练完成时间:2021/12/28 20:41:41

总耗时大约3分钟,这速度,比C++的42分钟,真的不是只快了一点点,不知道是不是C#的OpenCvSharp4在算法上做了优化。

        对训练结果进行识别测试,测试结果如下,有7张图片识别错误,成功率为:7/(34*50)*100%= 99.6%,和C++版本的基本一致。

        从测试结果上看,有7张图片未识别成功,7张图片如下:


C#版本完整代码如下:

车牌识别源码下载页


C++版本, 训练与测试


       C++版本的代码目前只测试过在OpenCv-3.4.0和OpenCv-4.5.5两个版本中运行过,识别成功率基本没太大差异。

       在C++版本中,我们首先需要先调用ANN_Drill函数来训练出我们的xml文件,当然了,这个训练只需要训练一次就够了,后面做车牌识别时,只需要调用xml文件即可,识别速度还是相当的快的。

训练过程如下。

训练过程中中间会卡在“./Image/Z/9_0.9727...”位置,此时就是漫长的等待了....

训练耗时如下。

开始时间:2021-12-07 20:59:45

完成时间:2021-12-07 21:43:24

总耗时大概42分钟。


训练的EnglishAndNumber.xml文件张这个样子


最后调用TestXml函数的测试结果如下:


从结果中可以看到,还是有一些图片识别失败了,一共有7张,如下:

从失败的图片中可以看出,这个训练图片用的好像也不是特别好,正常训练图片用的好,基本上能达到100%的识别成功率。


完整代码如下:

车牌识别源码下载页


Python版本, 训练与测试代码如下:

       Python版本相对前面C#和C++版本,数字+英文字母的识别成功率太低了,只有26%,如果只是单纯的识别数字,成功率能达到83%,但是如果采用C++的xml文件进行识别,成功率基本和C#的一致,这种情况,如果不是训练方法问题,那估计就是opencv的版本问题了,之前在调试时也出现过这种情况,某些版本的opencv神经网络识别成功率就非常低,如果是训练方法有问题,没理由数字识别能达到83%,加上英文字母后,就只剩下26%了。所以,我还是怀疑是opencv的版本问题,改天换个高版本的再试试。


Opencv3.4.2的训练过程如下:


Opencv4.5.5的训练过程如下:

QQ截图20220203135013.jpg


从结果上看,Python的训练时间也挺快的,Opencv3.4.2版本大概也只用了17秒的时候,Opencv4.5.5版本用了159秒左右,两个版本都比C++和C#都快了好几倍了,但是识别的成功率是真的不行。识别错误的图片如下,总共也才34*50=1700张图片,就有Opencv3.4.2版本有1256张识别失败,而Opencv4.5.5版本有1219张识别失败,Opencv4也就比Opencv3好了那么一点点。。。坑!


Opencv3.4.2和Opencv4.5.5通用完整代码如下

车牌识别源码下载页