使用yolov5进行多标签图像识别的步骤
如果一个完整的包裹有多少物品组成?在打包的之前需要对这些零件进行清点看有没有多了什么或者少了什么。一旦需要打包的东西太多,靠人工就很容易出错了。 如果借助深度学习,我们可以弄个普通的支架+摄像头来帮助打包人员进行清点。非常方便、快捷,相当于我在打包的时候机器帮我在旁边清点打包的物品,有了一个小助理。
准备系统硬件
整个系统的硬件构成,大概就是这个样子(请专注图的内容,忽略我拙劣的画工):
编辑切换为居中
添加图片注释,不超过 140 字(可选)
系统有一个支架、一个普通的usb摄像头、一台电脑。电脑肯定是已经有了,只需要再买个支架和一个usb摄像头就行了。支架就用普通的桌面俯拍支架就行,这东西很便宜,某宝上买加usb摄像头总共50左右。
系统有一个支架、一个普通的usb摄像头、一台电脑。电脑肯定是已经有了,只需要再买个支架和一个usb摄像头就行了。支架就用普通的桌面俯拍支架就行,这东西很便宜,某宝上买加usb总共50左右。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
好了,硬件准备完成,现在开始写代码。
软件
这个任务属于多标签图像识别,如果自己设计并实现识别模型太难了,不太现实。就网上找找看有没有合适的,花个把小时在搜索引擎、B站、Github上搜一下发现,现在大家都是用yolo来实现多标签图像识别,而且看看github上有开源的yolov5的代码,翻看一下readme写的还算详尽,把训练、使用、部署基本都说明白了。 然后B站上找一个点击量比较靠前的yolov5的使用说明,大概了解这个模型的使用流程。
准备自己的训练集;
训练yolov5;
给训练好的yolov5套一个pyqt的外壳,让它易于使用;
打包成exe文件,当然,自己用的话,第4步可以省略。
本文就只简要介绍前三个步骤的实现。
准备自己的训练集
这是个力气活。首先,你要在接近生产现场的环境拍摄尽量多的图片;然后,再给这些图片打上标签。 那拍摄多少图片才够呢?我在网上极其潦草的搜了一下,好像也没有定论。我就大胆猜了一下,如果识别的场景不太复杂的话,一个类别平均有50张照片应该能达到效果。也就是说,如果我们打包的东西有10种,那我拍摄200张照片应该足够。那怎么从50、10这两个数得到200这个数的呢?也是我的直觉瞎猜的,没有什么严谨的数学公式。后面效果不好再说吧。
方案确定好后,我还花差不多半天时间写了一个摄像头的拍照的应用。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
写好代码之后,又等了差不多两天时间*宝上网购的支架、摄像头才到货。迫不及待的连上电脑,调试了一下,摄像头拍照的应用顺利通过我自己的验收。
爱编程的高老师:Ubuntu+PyQt5开发摄像头拍照软件zhuanlan.zhihu.com
有了这个小应用的帮助,很快就完成了200张照片的拍摄。此外,在这个小小的程序里我还做了件画蛇添足的事情,就是我在网上胡乱搜索资料的时候发现别人构建的训练图片的长宽都是一样的,所以我把系统默认的640*480的摄像头图片给改成了512*512,后来发现好像也没有必要。
图片拍摄好,就是最无聊的手动打标签了,安装labelImg,然后启动,然后设置为自动保存标签结果、最后改成yolo的标签格式,就可以认真、细致的打标签了。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
在使用labelImg的时候还发生了一件非常乌龙的事情,“labelImg”倒数第三个“i”要大写。我安装完成后,使用命令"labelimg"调用labelImg的时候老是提示“command not found”,差点崩溃! 另外,在使用labelImg打标签的时候,要多使用快捷键提高效率。据说还有一些可以团队协作的打标签工具,我没有尝试。
训练模型
训练模型,需要一个显卡,看看网上动辄几千块的网卡,舍不得买。翻箱倒柜,发现以前的一台电脑上有一块750Ti的2G显卡,窃喜,训练yolov5的s模型应该够用。
训练过程还是比较简单的,就是一些参数文件的改写。只是2G的显卡太拉跨啦,batch_size设置为4,GPU就90%多的占用了。好在图片不多,200个epochs的训练,个把小时以就可以训练完成。200个epochs的训练完成后,mAP @0.5可以到99%,效果很满意,实在佩服yolo的作者。
PyQt5实现
有了模型,再做个UI就简单的多了,与前面写的摄像头拍照软件类似。 无非就是不停在摄像头中拿图,然后将拿到的图片送给模型识别,将识别到的物体清单用字符显示出来、同时将标注后的图片显示到图片框中,比较简单。
最终效果
上传视频封面
好的标题可以获得更多的推荐及关注者
使用yolov5进行多标签图像识别的步骤相关推荐
- 基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子)
基于语义分割Ground Truth(GT)转换yolov5目标检测标签(路面积水检测例子) 概述 许多目标检测的数据是通过直接标注或者公开平台获得,如果存在语义分割Ground Truth的标签文件 ...
- CVPR 2019 | 旷视研究院提出ML-GCN:基于图卷积网络的多标签图像识别模型
全球计算机视觉三大顶会之一 CVPR 2019 (IEEE Conference on Computer Visionand Pattern Recognition)将于 6 月 16-20在美国洛杉 ...
- 大数据标签获取处理步骤_大数据处理分为哪些步骤
具体的大数据处理方法确实有很多,但是根据笔者长时间的实践,总结了一个普遍适用的大数据处理流程,并且这个流程应该能够对大家理顺大数据的处理有所帮助.大数据来源广泛,应用需求和数据类型都不尽相同,不过最基 ...
- 总结使用labelimg打YOLOv5格式的标签过程中掉过的坑
文章目录 一.使用版本 二.图片命名格式 三.如何打标签? 四.训练yolo 整个过程真可谓是一把辛酸泪. 一.使用版本 我尝试过直接使用python版本,运行代码的,中途有一个Windows无法编译 ...
- yolov5/v7修改标签和检测框显示【最全】
<记录自己在使用yolov5遇到的一些问题>同时也供大家参考,如果对你们有帮助,希望大家可以给个点赞.收藏鼓励下,非常感谢! 以自带的一张图片作为示例,yolov5(6.1版本)的初始检测 ...
- YOLOv5添加注意力机制的具体步骤
本文以CBAM和SE注意力机制的添加过程为例,主要介绍了向YOLOv5中添加注意力机制的具体步骤 本文在此篇博客的基础上向YOLOv5-5.0版本代码中添加注意力机制 yolov5模型训练---使用y ...
- GHS 标签的制作步骤和模板下载
任何使用危险化学品的工作场所都需要更新化学标签,以反映OSHA 于 2012 年采用的化学品标签全球协调系统 (GHS) 标准.这些标签要求于 2016 年 6 月 1 日在美国成为强制性要求. GH ...
- CVPR19 基于图卷积网络的多标签图像识别模型 论文笔记
笔记 旷视研究院的研究员提出了如下模型,用于图像的多标签分类. 该模型与一般模型不一样的一点是,它的分类器是生成的,因此它有一个专门生成分类器的子网络. 网络主要由两部分构成 特征表示子网络,该网络由 ...
- 大数据标签获取处理步骤_基于大数据的用户深层标签挖掘方法与流程
本发明涉及大数据应用技术领域,尤其涉及一种基于大数据的用户深层标签挖掘方法. 背景技术: 用户画像建立的过程就是添加相应的标签,在数据挖掘领域称为标签化.标签是通过对用户信息分析而得到的高度精炼的特征 ...
最新文章
- 在Ubuntu 14.04 64bit上安装网易云音乐Linux版本(最新官方版)
- Linux文件查找工具的探索
- MySQL查询区分大小写
- Python.h: No such file or directory
- C# 常用正责表达式
- 计算各种图形的周长(接口与多态)_JAVA
- 安天移动安全:Janus高危漏洞深度分析
- python内置函数中的zip,max,min函数例子
- ActiveMQ-为什么需要消息中间件及优缺点
- 接口测试--ApiPost组成介绍
- 在 Python 中使用函数式编程的最佳实践!
- 剑指offer面试题[24]-二插搜索树的后序遍历序列
- 采用cookie简单实现文章顶/踩功能
- if a != None:
- 基于SpringBoot 学生成绩管理系统的设计与实现
- Android手机截图怎么做,手机截屏怎么弄,教您手机截图方法
- AcWing 4246. 最短路径和(反向建图+链式前向星+堆优化)
- LiveData 的基本使用
- 创建达梦到Oracle的DBLINK(OCI方式)
- JDK自带的Timer定时器实现每天24点修改数据
热门文章
- 设有6个有序表A、B、C、D、E、F,分别含有10、35、40、50、60和200个数据元素,各表中元素按升序排列。要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最
- C/C++中算法运行时间的三种计算方式(By 虚怀若谷)
- 【创业】如何产生一个足以成立公司的「创意」呢?
- Gin之JSON序列化
- 《陕西日报》深度报道神州信息汉滨区村集体经济+社区工厂工作经验
- 实验吧-让我进去【salt加密 哈希长度拓展攻击】
- 【CAE】优秀的开源有限元求解器
- 文件定时上传服务器,文件定时上传至服务器
- 微信壁纸小程序源码 自动采集小米壁纸
- 向AngularJS应用程序添加CSS动画