基于轻量级YOLOv5开发构建汉字检测识别分析系统

news2025/7/14 4:22:42

汉字检测、字母检测、手写数字检测、藏文检测、甲骨文检测在我之前的文章中都有做过了,今天主要是因为实际项目的需要,之前的汉字检测模型较为古老了还使用的yolov3时期的模型,检测精度和推理速度都有不小的滞后了,这里要基于yolov5轻量级的模型来开发构建新版的目标检测模型,首先看下效果图:

接下来简单看下数据集情况:

YOLO格式标注文件截图如下:

实例标注内容如下所示:

17 0.245192 0.617788 0.038462 0.038462
6 0.102163 0.830529 0.045673 0.045673
16 0.894231 0.096154 0.134615 0.134615
4 0.456731 0.524038 0.134615 0.134615
15 0.367788 0.317308 0.269231 0.269231

VOC格式数据标注文件截图如下:

实例标注内容如下所示:

<annotation>
    <folder>DATASET</folder>
    <filename>0ace8eaf-8e86-488b-9229-95255c69158c.jpg</filename>
    <source>
        <database>The DATASET Database</database>
        <annotation>DATASET</annotation>
        <image>DATASET</image>
    </source>
    <owner>
        <name>YMGZS</name>
    </owner>    
    <size>
        <width>416</width>
        <height>416</height>
        <depth>3</depth>
    </size>
    <segmented>0</segmented>
    
    <object>        
        <name>17</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>214</xmin>
            <ymin>302</ymin>
            <xmax>230</xmax>
            <ymax>318</ymax>
        </bndbox>
    </object>
    
    <object>        
        <name>16</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>210</xmin>
            <ymin>67</ymin>
            <xmax>229</xmax>
            <ymax>86</ymax>
        </bndbox>
    </object>
    
    <object>        
        <name>18</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>260</xmin>
            <ymin>7</ymin>
            <xmax>274</xmax>
            <ymax>21</ymax>
        </bndbox>
    </object>
    
    <object>        
        <name>10</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>121</xmin>
            <ymin>103</ymin>
            <xmax>143</xmax>
            <ymax>125</ymax>
        </bndbox>
    </object>
    
    <object>        
        <name>11</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>296</xmin>
            <ymin>289</ymin>
            <xmax>352</xmax>
            <ymax>345</ymax>
        </bndbox>
    </object>
    
    <object>        
        <name>0</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>56</xmin>
            <ymin>132</ymin>
            <xmax>196</xmax>
            <ymax>272</ymax>
        </bndbox>
    </object>
    
    <object>        
        <name>0</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>213</xmin>
            <ymin>142</ymin>
            <xmax>353</xmax>
            <ymax>282</ymax>
        </bndbox>
    </object>
    
</annotation>

因为是主打轻量级网络,这里选择了也是最为轻量级的n系列的模型,最终训练得到的模型文件不足4MB大小,网络结构图如下所示:

默认100次epoch的计算,结果目录如下所示:

【混淆矩阵】

【F1值曲线】

【PR曲线】

【训练日志可视化】

【batch计算实例】

可视化界面推理样例如下:

从评估指标结果上面来看检测效果还是很不错的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rabbitmq集群-普通模式

RabbitMQ的Cluster模式分为两种 普通模式镜像模式 1. 概念解释 1.1 什么是普通模式 普通集群模式&#xff0c;就是将 RabbitMQ 部署到多台服务器上&#xff0c;每个服务器启动一个 RabbitMQ 实例&#xff0c;多个实例之间进行消息通信。 此时我们创建的队列 Queue&#xf…

Android ANR trace日志如何导出

什么是ANR &#xff1f;上网搜索&#xff0c;一搜一大片&#xff0c;我就说个很容易识别的字眼&#xff0c;XXXAPP无响应 ANR trace日志如何导出&#xff1f;使用ADB命令&#xff1a; adb pull data/anr/trace.txt 你要存放的路径。查看ANR报错位置全局搜索你APP的包名&#x…

基于MATLAB的无线信道的传播与衰落(附完整代码与分析)

目录 一. 一般路径损耗模型 1. 1自由环境下路径损耗 1. 2 考虑实际情况 1.3 考虑阴影衰落 二. 代码仿真与理解 &#xff08;1&#xff09;函数文件 &#xff08;2&#xff09;函数文件 &#xff08;3&#xff09;主运行文件 三. 运行结果及理解 3.1 3.2 3.3 一. …

Nacos2.2.0多数据源适配oracle12C-修改Nacos源码

从2.2.0版本开始,可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应多数据源插件.本文档详细介绍一个多数据源插件如何实现以及如何使其生效。 文章目录一…

机器人运动|浅谈Time Elastic Band算法

前言在自主移动机器人路径规划的学习与开发过程中&#xff0c;我接触到Time Elastic Band算法&#xff0c;并将该算法应用于实际机器人&#xff0c;用于机器人的局部路径规划。在此期间&#xff0c;我也阅读了部分论文、官方文档以及多位大佬的文章&#xff0c;在此对各位大佬的…

git的使用整合

git的下载和安装暂时不论述了&#xff0c;将git安装后会自动配置环境变量&#xff0c;所以环境变量也不需要配置。 一、初始化配置 打开git bash here(使用linux系统下运行的口令)&#xff0c;弹出一个类似于cmd的窗口。 &#xff08;1&#xff09;配置属性 git config --glob…

【LLVM系列】基本文件格式和 CFG 生成指令

一、基本文件格式 参考博客&#xff1a;llvm 文件转换图 .c 文件&#xff0c;c语言源代码。.bc 文件&#xff0c;llvm字节码的二进制形式&#xff08;binary code&#xff09;。.ll 文件&#xff0c;llvm字节码的文本形式。.s 文件&#xff0c;机器汇编代码。.out 文件&#…

操作系统-整理

进程 介绍 进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间&#xff0c;不同进程通过进程间通信来通信。由于进程占据独立的内存&#xff0c;所以上下文进程间的切换开销&#xff08;栈、寄存器、虚拟内存、文件句柄等&#xff09;比较大&#…

第十三章:Java反射机制

第十三章&#xff1a;Java反射机制 13.1&#xff1a;Java反射机制概述 Java Reflection ​ Reflection(反射)是被视为动态语言的关键&#xff0c;反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法。 ​ 加…

Spring Boot 实现多文件上传

文件上传 Spring Boot代码 代码结构&#xff1a; Controller层 package com.yqifei.upload.controller;import io.swagger.annotations.Api; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile;import javax.serv…

ETL --事实表

每一个事实表通过表的粒度来定义。事实表的粒度是事件度量的定义。我们必须至始至终按照度量如何在 现实世界中理解来规定事实表的粒度。 所有的事实表包含了一组关联到维表的外键&#xff0c;而这些维表提供了事实表度量的上下文。大多数的事实表还 包括了一个或者多个数值型…

小樽C++ 多章⑧ (贰) 指针与数组

目录 1.C中数组变量名某些情况可以看成是指针 2.C语言的scanf 输入语句&#xff0c;printf 输出语句 3.用指针来当动态数组 小樽C 多章⑧ (壹) 指针变量https://blog.csdn.net/weixin_44775255/article/details/129031168 小樽C 多章⑧ (叁) 指针与字符串、(肆) 函数与指针…

GitLab 凭借什么连续 3 年上榜 Gartner 应用程序安全测试魔力象限?听听 GitLab 自己的分析

本文来源&#xff1a;about.gitlab.com 作者&#xff1a;Sandra Gittlen 译者&#xff1a;极狐(GitLab) 市场部内容团队 应用程序安全测试&#xff08;AST&#xff09;对于应用程序研发来说&#xff0c;是一个正在快速发展并且十分重要的领域。DevOps 方法论提到&#xff1a;需…

Java基础之《dubbo(1)—dubbo基础入门》

一、为什么要使用dubbo 1、dubbo是什么 dubbo是一个分布式服务框架&#xff0c;致力于提供高性能和透明化的RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。 2、dubbo有何特点 &#xff08;1&#xff09;远程通讯&#xff1a;提供透明化的远程方法调用&#xff0c;提供…

入门JAVA第十七天 Oracle的JDBC技术

一、数据库JDBC技术学习内容与方法 1.1 学习内容 &#xff08;1&#xff09; Oracle数据库 目前最好的关系型数据库。 基本的CRUD命令 SQL语句。select(R),update(U),delete(D),insert(C) &#xff08;2&#xff09; MySQL数据库 中小型项目非常好用的关系型数据库。 灵活&…

【零基础入门前端系列】—浮动(十八)

【零基础入门前端系列】—浮动&#xff08;十八&#xff09; 一、浮动的定义 float属性定义元素在哪个方向&#xff0c;以往这个属性总应用于图像&#xff0c;使得文本围绕在图像的周围&#xff0c;不过在CSS中&#xff0c;任何元素都可以浮动&#xff0c;浮动的元素会生成一…

【Git】P5 Git 远程仓库(3)pull 发生冲突

pull 发生冲突冲突在什么场景下发生&#xff1f;为什么要先 pull 再 push构建一个冲突场景初始开始操作&#xff1a;程序员2&#xff1a;程序员1&#xff1a;程序员2&#xff1a;发生冲突&#xff1a;查看冲突&#xff1a;解决冲突&#xff1a;冲突在什么场景下发生&#xff1f…

[手写OS]动手实现一个OS 之 准备工作以及引导扇区

[手写OS]动手实现一个OS之第一步-环境以及引导扇区 环境准备 一台可用计算机&#xff08;linux我不知道&#xff0c;我用的Windows&#xff09;汇编编译器NASM一个方便的软盘读写工具VirtualBox 汇编编译器NASM 官网地址&#xff1a;https://www.nasm.us/pub/nasm/snapshot…

java 中的equals()示例代码

Java中的equals()是十分重要的&#xff0c;和要区别开来简述public booleanequals(Object obj)作用&#xff1a;判断其他的对象是否和该对象相等其比较规则为&#xff1a;当参数obj引用的对象与当前对象为同一个对象时&#xff0c;就返回true,否则返回false.简单示例equals()方…

代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

打卡第22天&#xff0c;平衡二叉树&#xff0c;难&#xff0c;难&#xff0c;难。 今日任务 235.二叉搜索树的最近公共祖先701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点 235.二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百…