C#使用轻量级深度学习模型进行车牌颜色识别和车牌号识别

看到这个文章时候请注意这个不涉及到车牌检测,这个仅仅是车牌颜色和车牌号识别,如果想涉及到车牌检测可以参考这个博客:[C#]winform部署yolov7+CRNN实现车牌颜色识别车牌号检测识别_c# yolo 车牌识别-CSDN博客

【训练源码】

https://github.com/we0091234/crnn_plate_recognition/tree/plate_color

车牌识别+车牌颜色用一个模型如图所示,右边是我们已经训练好的车牌字符识别模型,只需训练左边边颜色分支即可。模型结构:

训练颜色分支

  1. 下载车牌颜色数据集,或者准备自己的数据集

  2. 准备你训练好的车牌字符识别模型

  3. 训练

    python train_fix_color.py --weights saved_model/plate_rec.pth --train_path datasets/train  --val_path datasets/val --model_path color_model
    

    结果保存再color_model文件夹中

测试demo

python demo_plate_color.py --model_path saved_model/plate_rec_color.pth --image_path images/test.jpg

结果是:

导出onnx

python export.py --weights saved_model/plate_rec_color.pth --save_path saved_model/plate_rec_color.onnx  --simplify
onnx 推理
python onnx_infer.py --onnx_file saved_model/plate_rec_color.onnx  --image_path images/test.jpg

【界面展示】

【效果展示】

特别注意:双层车牌需要自己提前分割合并,就是把上下2行文字合并为一行图片然后推理就可以识别颜色,否则可能识别出来的颜色不对。

【测试环境】

vs2019 netframework4.7.2 opencvsharp4.8.0 onnxruntime1.16

【部分实现代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;

namespace FIRC
{
    public partial class Form1 : Form
    {
        Bitmap bmp = null;
       PlateManager pm = new PlateManager();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "图文件(*.*)|*.jpg;*.png;*.jpeg;*.bmp";
            openFileDialog.RestoreDirectory = true;
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
              
                if(bmp!=null)
                {
                    bmp.Dispose();
                }
                bmp = new Bitmap(openFileDialog.FileName);
                pictureBox1.Image = bmp;


            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if(pictureBox1.Image==null)
            {
                return;
            }
            Stopwatch sw = new Stopwatch();
            sw.Start();
            var result = pm.Inference(bmp);
            sw.Stop();
            this.Text = "耗时" + sw.Elapsed.TotalSeconds + "秒";
            textBox1.Text = "车牌颜色:" + result.CarColor + "\r\n车牌号:" + result.CarNumber;
      
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            pm.LoadWeights();

        }

        private void btn_video_Click(object sender, EventArgs e)
        {
           
         
        }
    }
}

【视频演示】

C#使用轻量级深度学习模型进行车牌颜色识别和车牌号识别_哔哩哔哩_bilibili测试环境:vs2019netframework4.7.2opencvsharp4.8.0onnxruntime1.16更多详细信息参考博文:, 视频播放量 4、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:C#使用OpenCvSharp实现黑白老照片上色,【SD】AI一键穿脱衣?别太邪恶了吧!兄弟们懂得都懂!,用C#部署yolov8的tensorrt模型进行目标检测winform最快检测速度,使用易语言调用opencv进行视频和摄像头每一帧处理,使用纯opencv部署yolov8目标检测模型onnx,将yolov8封装成一个类几行代码完成语义分割任务,基于onnx模型加密与解密深度学习模型保护方法介绍,将yolov5-6.2封装成一个类几行代码完成语义分割任务,使用C#部署openvino-yolov5s模型,易语言部署yolox的onnx模型https://www.bilibili.com/video/BV1jT421a7eP/

【源码下载】

https://download.csdn.net/download/FL1623863129/89453040

相关推荐
小陈phd1 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao2 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
ZHOU_WUYI6 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
如若1236 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
老艾的AI世界7 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK221517 小时前
机器学习系列----关联分析
人工智能·机器学习
Robot2517 小时前
Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速
人工智能·机器人·微信公众平台
浊酒南街8 小时前
Statsmodels之OLS回归
人工智能·数据挖掘·回归
畅联云平台8 小时前
美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
人工智能·物联网
加密新世界8 小时前
优化 Solana 程序
人工智能·算法·计算机视觉