【2021研电赛】集装箱编码识别器

本作品介绍参与极术社区的有奖征集|分享研电赛作品扩大影响力,更有重磅电子产品免费领取!

团队介绍

队伍名称:hello world-Dream
队长:小星
队员:晓晓,海象

作品简介

本作品基于卷积神经网络设计出一款集装箱编码识别器,该识别器可以实现高精度毫秒级运算。本文研究设计的是一整套集装箱箱号识别系统。算法部分主要包括箱号定位、箱号分割、箱号识别三大模块。系统拥有本地数据库,记录经过的集装箱箱号、经过时间等信息。为了便于用户进行前端操作,本文还设计了人机交互界面。同时,本文从稳定性和软件保密性角度考虑,进行了系统部署系统可以在Win32系统或是Linux系统下运行,全部程序使用Python3.7语言编写。

创新点总结如下:
1) 不同于目前传统的箱号区域定位算法,本文设计了深度学习模型进行箱号区域定位,相比于传统算法,不易受光照、阴影和箱号字符残缺等问题的影响,实时性更好,鲁棒性更强。
2) 针对目前利用倾斜校正和投影法进行字符分割实时性差的问题,本文将箱号按区域分成四大子区域,利用一系列形态学滤波、二值化处理和边缘检测方法等对未经倾斜校正的每一箱号子区域直接进行字符分割。实践证明,这种方案满足实时性要求。
3) 本系统从人机交互角度出发,设计了本系统专用的上位机。上位机可以实时显示摄像头捕捉的视频流,也支持从图片和视频录入箱号。并将识别到的箱号和时间等信息自动存入数据库。同时,上位机还可以对数据库中的数据进行条件查询(可以按录入时间、集装箱编号查询也支持一键查询全部信息)。

根据对集装箱箱号识别系统的功能需求分析,我们设计的箱号识别系统主要包括:算法部分和系统部署部分。算法部分和系统部署部分分别见图1-2和图1-3。算法部分包括箱号区域定位网络、箱号字符分割算法和箱号识别网络。出于对系统运行稳定性和程序保密性的考虑,我们采取三级部署,包括:本地客户端、中继服务器端、AI运算端。在程序设计中,各个算法部分尽量做成API形式,只考虑输入输出的格式,方便移植和扩展。
算法部分各子算法功能如下
1) 箱号区域定位网络。该网络用于确定箱号区域,网络的输入是摄像头获取的高清图片,输出是一张取自输入图片的仅带有箱号的图片。
2)字符分割算法。该算法主要由图像滤波、形态学操作和边缘检测算法组成,用于分割字符,输入是仅带有箱号的图片,输出是按顺序排好的单个字符。
3)箱号识别网络。该网络用于识别箱号字符,输入是排列好的一系列单个字符图片,输出是一串完整的箱号字符。

系统部署中各子部分功能如下:
1)摄像头端:用于获取实时图像,并将图片传输给本地客户端。
2)本地客户端:上位机运行于该端,主要用于接收来自摄像头的实时图像,并将图像传输给中继服务器端,同时负责接收一串箱号字符,并将箱号录入数据库,在需要时可以查询历史记录。
3)中继服务器端:主要是起到一个转发站的作用,将本地客户端获取的图像传给AI运算端,还有将AI运算端输出的箱号字符传输给本地客户端。
4) AI运算端:用于接收中继服务器端发来的图像,经过定位、分割和识别后,将箱号字符传输给中继服务器。算法部分全部运行于该端。
在这里插入图片描述

标准集装箱箱号由11位编码组成,包括三个部分:
1、第一部分由4位英文字母组成。前三位代码(Owner Code)主要说明箱主、经营人,第四位代码说明类型,通常以字母"U"表示集装箱,若为"J"表明该集装箱为集装箱配件,若为"Z"为拖车平板。列如CBHU开头的标准集装箱是表明箱主和经营人为中远集运。
2、第二部分由6位数字组成。是箱体注册码(Registration Code),用于一个集装箱箱体持有的唯一标识。
3、第三部分为校验码(Check Digit)由前4位字母和6位数字经过校验规则运算得到,用于识别在校验时是否发生错误。即第11位数字。
根据校验规则箱号的每个字母和数字都有一个运算的对应值。箱号的前10位字母和数字的对应值从0到Z对应数值为0到38,11、22、33不能对11取模数,所以要除去。

箱号校验规则
第N位的箱号对应值再分别乘以2^(N-1) (N=1,2,3………10)
例如:箱号为CBHU3202732的集装箱它的第1位代码为C
它的代码值=代码的对应值×2(1-1)=13×20=13×1=13。
类推第2位代码为B
它的代码值=代码的对应值×2(2-1)=12×21=12×2=24以此类推得到箱号前10位代码的代码值。将前10位的代码值乘积累加后对11取模
箱号为CBHU3202732的集装箱前10位箱号的代码累加值=4061,取11的模后为2,就是这个箱号第11位的识别码的数值。
以此类推,就能得到校验码。
A=10 B=12 C=13 D=14 E=15 F=16 G=17 H=18 I=19 J=20 K=21 L=23 M=24 N=25 O=26 P=27 Q=28 R=29 S=30 T=31 U=32 V=34 W=35 X=36 Y=37 Z=38
对11取模后当余数等于11时候就会出现两位10余码,所以对应码就取消了11的倍数,比如11,22,33等,但是运算下来还是有这种11倍数余码。
如果校验码出现10,说明你取11模的时候没有判断出现2位余码,遇到10就后面添加减去10,最后校验是0就是标准校验码。
集装箱号是在每个集装箱箱体两侧标示的全球唯一的编号。
例如:TEXU36052311(1)表示1个标准集装箱;
TEXU3605231
2(3)表示2个集装箱,折合为3个标准集装箱,
其中一个箱号为TEXU3605231。
在多于一个集装箱的情况下,其余集装箱编号打印在备注栏或随附清单上。
1) 集装箱号都由4个英文字母和6个阿拉伯数字以及1个效验码组成;
例如: TRLU166324
2)计算效验码时,把4个英文字母 转化成相应的数字
(A=10,B=12,C=13,D=14,E=15,F=16… Z=38)其中去掉11,22,33三个数;
3)4个英文字母 转化成4个相应的数字,加上6个阿拉伯数字,这样共得到10个数字,把每个数字乘以2的位数减一次方求和再除11,取其余数,即得核对号;
例如: TRLU166324-2 (T=31 R=29 L=23 U=32)
S=312^0 + 292^1 + 232^2 + 322^3 + 12^4 + 62^5 + 62^6 + 32^7 + 22^8 + 42^9

算法介绍

算法部分各子算法功能如下:
1) 箱号区域定位网络。该网络用于确定箱号区域,网络的输入是摄像头获取的高清图片,输出是一张取自输入图片的仅带有箱号的图片。
2) 字符分割算法。该算法主要由图像滤波、形态学操作和边缘检测算法组成,用于分割字符,输入是仅带有箱号的图片,输出是按顺序排好的单个字符。
3) 箱号识别网络。该网络用于识别箱号字符,输入是排列好的一系列单个字符图片,输出是一串完整的箱号字符。

在这里插入图片描述

定位网络设计:
在这里插入图片描述

箱号定位算法采用基于CNN的轮廓识别技术,定位算法的设计采用CNN架构,自主学习轮廓的信息,自主找出轮廓位置。
在这里插入图片描述

作品创新

  1. 支持图像和视频输入以及录像输入
  2. 采用自主研发的神经网络架构
  3. 合理的人机交互界面
  4. 高精度低延时

技术流程图

在这里插入图片描述

实物图

在这里插入图片描述

未来展望

(1)由于集装箱图片获取渠道限制以及人力的不足,本文仅对有限数量的字符进行了识别,但是集装箱箱号有很多,所以后续可以从多渠道获取集装箱图片或视频,对更多类别的字符进行识别。
(2)本文设计的上位机以及数据库中虽然有重量信息,但是由于硬件条件限制,并没有把真正的地磅数据接口与系统进行连接,后续可以考虑加入地磅信息。
(3)本文在进行箱号识别时,采用定位-分割-识别的算法架构,这主要是因为制作单个字符定位的数据集需要大量人力和时间成本,我们不具备这两个条件。后续可以研究将定位、分割和识别融合在一起的架构,实现端到端的识别

更多研电赛作品请查看2021年研电赛获奖作品合集

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进程控制2——进程等待

在上一小节中我们介绍了进程的创建(fork)与退出(main函数的return与exit函数) 并且要有一个意识,进程退出的时候只有三种情况: 1.进程退出,结果正确 2.进程退出,结果不正确 3.运行异…

详细创建Prism架构wpf项目

方案一&#xff1a; 1.创建一个普通wpf项目 2、安装NuGet包&#xff1a;Prism.DryIoc 3、App.xaml.cs中: 将原本的父类Application改为&#xff1a;PrismApplication&#xff0c;并且实现抽象类 CreateShell方法中写上&#xff1a;”return Container.Resolve<MainWindow>…

2010年5月27日Go生态洞察:I/O中Go的热门问答

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【教程】多进程下载百度旋转验证码图片-制作数据集

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 效果展示&#xff1a; 直接上代码&#xff0c;开箱即用&#xff08;当然selenium库自己装一下&#xff09;&#xff1a; import os import time import requests from selenium import webdriver from selenium.…

基于Skywalking的全链路跟踪实现

在前文“分布式应用全链路跟踪实现”中介绍了分布式应用全链路跟踪的几种实现方法&#xff0c;本文将重点介绍基于Skywalking的全链路实现&#xff0c;包括Skywalking的整体架构和基本概念原理、Skywalking环境部署、SpringBoot和Python集成Skywalking监控实现等。 1、Skywalki…

用中文编程工具编写的代码实现如图所示效果,请分享一下用你所学的编程语言写下这个代码,大家一起交流学习

用中文编程工具编写的代码实现如图所示效果&#xff0c;请分享一下用你所学的编程语言写下这个代码&#xff0c;大家一起交流学习 编程要求如图&#xff1a;在输入框里输入行数&#xff0c;随便输入多少&#xff0c;点击按钮&#xff0c;即刻显示如图所示效果&#xff0c;下一…

《009.Springboot+vue之进销存管理系统》

《009.Springbootvue之进销存管理系统》 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatisredis; 前台&#xff1a;vueElementUI; [2]功能模块展示&#xff1a; 1.用户管…

什么是MES管理系统生产建模

随着科技的飞速发展&#xff0c;智能制造已成为制造业的新常态。MES生产管理系统作为支撑智能制造的核心技术之一&#xff0c;在推动制造业转型升级中发挥着至关重要的作用。而MES管理系统生产建模&#xff0c;作为MES管理系统的关键环节&#xff0c;对于实现数字化、智能化的生…

电脑风扇控制软件 Macs Fan Control Pro mac中文版功能介绍

Macs Fan Control mac是一款专门为 Mac 用户设计的软件&#xff0c;它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度&#xff0c;以提高设备的散热效果&#xff0c;减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温…

C#解析XML并反序列化为Model的方法

虽然现在json大行其道&#xff0c;但是xml格式依旧占据着广阔的编程世界&#xff0c;不管光伏锂电激光卫星汽车等等工业领域&#xff0c;基本上都是以xml为主&#xff0c;广大的.NET开发人员有很多被xml折磨的都要转java了&#xff0c;这篇小作文就来玩一种迅速完成xml到model的…

rancher或者其他容器平台使用非root用户启动jar

场景&#xff1a; java程序打成镜像&#xff0c;在rancher上运行&#xff0c;默认是root账户&#xff0c;发现hdfs或者hive不允许root账户操作&#xff1b;所以打算用费root账户启动jar&#xff0c;使其具有hive和hdfs的操作权限。 Dockerfile entrypoint.sh 思路就是上面这样…

【Spring】@Component组件

大前提&#xff1a; 添加了相关的约束文件以及注解支持 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:…

LibreOJ - 2874 历史研究 (回滚莫队)

回滚莫队就是在基础莫队的前提下&#xff0c;用更多的增加操作代替了减操作。 分成两种情况 1、一个询问的整个区间都在一个块儿里&#xff1b;这种情况直接暴力求即可&#xff0c;因为在一个块儿里&#xff0c;时间复杂度不会高。 2、一个询问的整个区间不在一个块儿里&#…

有效降低数据库存储成本方案与实践 | 京东云技术团队

背景 随着平台的不断壮大&#xff0c;业务的不断发展&#xff0c;后端系统的数据量、存储所使用的硬件成本也逐年递增。从发展的眼光看&#xff0c;业务与系统要想健康的发展&#xff0c;成本增加的问题必须重视起来。目前业界普遍认同开源节流大方向&#xff0c;很多企业部门…

汽车驾驶智能座舱太阳光模拟器老化试验

一、太阳光模拟器老化试验目的 太阳光模拟器氙光灯老化试验是一种常用的材料老化测试方法&#xff0c;通过模拟自然光照条件下的老化过程&#xff0c;评估材料的耐光性能和耐候性能其主要目的有: 1.评估材料在长时间暴露于自然光照条件下的耐久性能: 2.比较不同材料的耐光性…

vue使用websocket与springboot通信

WebSocket是HTML5下一种新的协议&#xff0c;它实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的 在很多项目中&#xff0c;都要用到websocket&#xff0c;使得前端页面与后端页进行实时通信&#xff0c;例如&#xff0c;实时查询…

vscode设置pycharm中的项目路径和debug方法

真大佬在这 真大佬在这 必须给大佬star 命令行运行&#xff1a; export PYTHONPATH:pwd:/home/bennie/bennie/bennie_project/AI_Lab python main.py 当关闭此命令行时&#xff0c;临时路径会清除&#xff0c;可以将上述export的整条语句&#xff0c;加入~/.bashrc中 该命令中…

使用Ruby编写通用爬虫程序

目录 一、引言 二、环境准备 三、爬虫程序设计 1. 抓取网页内容 2. 解析HTML内容 3. 提取特定信息 4. 数据存储 四、优化和扩展 五、结语 一、引言 网络爬虫是一种自动抓取互联网信息的程序。它们按照一定的规则和算法&#xff0c;遍历网页并提取所需的信息。使用Rub…

自动驾驶算法(八):基于概率图算法的路径规划--以PRM为例以及路径规划算法总结

目录 1 概率路线算法简介 2 代码解析 3 路径规划算法总结 1 概率路线算法简介 它属于采样算法里面的一类。主要步骤分为两步&#xff1a; 1.构建概率路线图 (1)随机采样点 (2)将新采样点和距离小于阈值的 采样点连接产生图 2.在图上寻找路径 (1)Dijkstra算法…

大数据中经常使用的指令:

1、Hadoop&#xff1a; 1、关闭Hadoop集群的安全模式&#xff1a; hdfs dfsadmin -safemode leave#查看集群的模式的状态&#xff1a; hdfs dfsadmin -safemode get 2、启动、关闭Hadoop集群&#xff1a; start-all.sh stop-all.sh 3、停止yarn中进程的命令&#xff1a; yar…