YOLO-v4 口罩识别

一、YOLO-v4概念

如果想要了解和认识yolo-v4的基本概念,首先要提的就是它的基础版本yolo-v1,对于yolo来说,最经典的算是yolo-v3。如果想要了解它的由来和历史的话,可以自行搜索。那么接下来,就先从yolo-v1入手各方面来介绍对比一下yolo-v4。

1、yolo-v1结构设计

原论文地址:https://tuzishenshi.lanzoui.com/iMMu2s92w4f

图1、网络结构图

yolov1网络结构图是由24个卷积层、2个全连接层构成,其作者也说过灵感来自用于图像分类的GoogLeNet模型,但是与GoogLeNet模型不同的是简单的使用了1×1简化层和3×3卷积层(类似M. Lin, Q. Chen, and S. Y an. Network in network. CoRR,abs/1312.4400, 2013. 2),可以在上图看到。

输入的图像为448448,经过以上的结构,输出的为77*1024的张量,是第7个图样。在激活函数上,最后一层输出时用了线性激活函数,其余层都使用的是Leaky Relu激活函数。

图2、Leaky Relu激活函数

YOLO相对于其他的(例如rcnn、fast-rcnn、faster-rcnn等)来说,它的优势就是YOLO设计实现了端到端的培训和实时速度,同时保持了较高的平均精度。具体的话就是将目标检测的各个部分统一为一个单一的神经网络,网络使用整个图像的特征来预测每个边界框。它还可以同时预测图像中所有类的所有边框。这意味着我们的网络对完整的图像和图像中的所有对象进行全局推理。

2、yolo-v1损失函数

图3、损失函数

3、yolo-v1和yolo-v4对比

yolo-v4说简单点就是对yolo-v3的改进,它的改进方法就是总结了几乎所有的检测技巧,又提出一点儿技巧,然后经过筛选,排列组合,挨个实验(ablation study)哪些方法有效。YOLOv4对深度学习中一些常用Tricks进行了大量的测试,最终选择了这些有用的Tricks:WRC、CSP、CmBN、SAT、 Mish activation、Mosaic data augmentation、CmBN、DropBlock regularization 和 CIoU loss。

YOLOv4在传统的YOLO基础上,加入了这些实用的技巧,实现了检测速度和精度的最佳权衡。实验表明,在Tesla V100上,对MS COCO数据集的实时检测速度达到65 FPS,精度达到43.5%AP。

二、yolo-v4源码

这个是从网络收集而来,自己已经跑通了,里面也有一些使用的方法,也就不啰嗦了,可以自己研究一下,跑一下口罩识别。

链接地址: https://pan.baidu.com/s/1ziNPRznNcfdGMCKWtB4xYQ 提取码: e939

三、口罩数据

我这里整理了一些数据集,一共有三个、我跑的是yolov4的第二个数据集。我会标注,可以先用我跑的这个,因为我跑通了。

链接地址:https://pan.baidu.com/s/1G1XLjK8Y3WNbRSf-1dwVgA 提取码: vvhv

四、处理数据

1、批量移动(删除)某格式的文件【父目录下所有文件】

 1 import os
2 import shutil
3
4 for parent, dirnames, filenames in os.walk('原目录'):
5 for fn in filenames:
6
7 if fn.lower().endswith('.xml'):
8 # os.remove(os.path.join(parent, fn)) ##这是删除文件的语句
9 shutil.copy(os.path.join(parent, fn),'目标目录') #这是移动的语句
10
11 #目录例子 D:\\学习文件\\YOLO\\数据\\xml (注意:双斜杠)

2、批量更改目录下某格式文件的名字【父目录下所有文件】

 1 import os
2
3
4 class BatchRenamePics(object):
5 """
6 批量命名目录下的所有图名[.jpg,.png]
7 命名格式:1-1,1-2...2-1,2-2...10-1,10-2...eg
8 """
9 def __init__(self, path):
10 # 设置起始路径path
11 self.path = path
12
13 def rename(self):
14 allfile = os.walk(self.path)
15 # j用于计数,统计有多少张照片被重命名
16 j = 0
17 # 遍历每一层目录,从上到下的顺序
18 for dirpath, dirnames, filenames, in allfile:
19 # 得到当前文件夹的名字tail
20 tail = os.path.split(dirpath)[1]
21 # i用于命名
22 i = 0
23 # 遍历filenames中的每一个文件
24 for each in filenames:
25 # 如果文件名是以.jpg或者.png结尾则认为是图片,可以自己添加其他格式的照片
26 if each.endswith('.jpg') or each.endswith('.png')or each.endswith('.xml'):
27 i += 1
28 j += 1
29 # 拼接完整的包含路径的文件名
30 scr = os.path.join(dirpath, each)
31 # 拼接新的完整的包含路径的文件名, tail是文件夹的名字
32 # dst = os.path.join(dirpath, tail + '-' + str(i) + '.jpg') ##这个是文件改格式
33 dst = os.path.join(dirpath, str(j) + '.jpg')
34 try:
35 # 重命名图片文件
36 os.rename(scr, dst)
37 print(scr + '--->' + dst)
38 except:
39 continue
40 else:
41 continue
42 print('累计重命名{}张图片'.format(j))
43
44 if __name__ == '__main__':
45 # 设置起始路径path
46 path = r'原目录'
47 # 创建实例对象
48 pics = BatchRenamePics(path)
49 # 调用实例方法
50 pics.rename()

最后,感谢大家对本文章的阅读,如果有什么问题,欢迎在下方留言,一起讨论,共同进步。

YOLO-v4 口罩识别的更多相关文章

  1. YOLO v1到YOLO v4(下)

    YOLO v1到YOLO v4(下) Faster YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向过程只用8.52 billion 运算,而VGG-16要30.69bi ...

  2. YOLO v1到YOLO v4(上)

    YOLO v1到YOLO v4(上) 一.  YOLO v1 这是继RCNN,fast-RCNN和faster-RCNN之后,rbg(RossGirshick)针对DL目标检测速度问题提出的另外一种框 ...

  3. YOLO V4 :win10+cpu环境的体验

    1.前言 Yolo V3已经体验了,接下来是V4版本. 关于V4版本,学术界褒贬不一.从工业界实际应用角度看,V4做了不少的优化,精度提升了10%,速度提升了12%.详细参见: <如何评价新出的 ...

  4. YOLO-V4 实现口罩识别(附加数据、数据批量处理程序)

    一.YOLO-v4概念 如果想要了解和认识yolo-v4的基本概念,首先要提的就是它的基础版本yolo-v1,对于yolo来说,最经典的算是yolo-v3.如果想要了解它的由来和历史的话,可以自行搜索 ...

  5. YOLO v4分析

    YOLO v4分析 YOLO v4 的作者共有三位:Alexey Bochkovskiy.Chien-Yao Wang 和 Hong-Yuan Mark Liao.其中一作 Alexey Bochko ...

  6. 目标检测中特征融合技术(YOLO v4)(下)

    目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...

  7. 目标检测中特征融合技术(YOLO v4)(上)

    目标检测中特征融合技术(YOLO v4)(上) 论文链接:https://arxiv.org/abs/1612.03144 Feature Pyramid Networks for Object De ...

  8. YOLO V4的模型训练

    1.YOLO V4模型训练的基本思路 所有机器学习涉及模型训练,一般都有训练集.验证集.测试集,因此需要准备数据集.有了数据集,再调用训练的算法,获取训练的结果.v3.v4模型训练方法相同. 2.YO ...

  9. darknet53 yolo 下的识别训练

    [目录] 一. 安装Darknet(仅CPU下) 2 1.1在CPU下安装Darknet方式 2 1.2在GPU下安装Darknet方式 4 二. YOLO.V3训练官网数据集(VOC数据集/COCO ...

随机推荐

  1. Jrebel、IDEA的激活与Springloaded使用

    又有很长一段时间没写了,这次这篇随笔主要是分享下Jrebel与IDEA的激活方法以及推荐下Jrebel的替代工具Springloaded. 先来说下Jrebel的激活方法吧,之前有同事遇到了Jrebe ...

  2. 通过busybox制作根文件系统详细过程

    我在之前的uboot通过NFS挂载ubuntu根文件系统中也有实现过根文件系统的制作,那只是在ubuntu官网已经做好的根文件基础上安装一些自己所需的软解而已.而使用busybox制作根文件系统可以自 ...

  3. 42、mysql数据库(函数)

    1.mysql中提供的内置函数: (1)数学函数: 1)ROUND(x,y): 返回参数x的四舍五入的有y位小数的值.x不可转换时返回0,x为null时返回null. 2)RAND(): 返回0到1内 ...

  4. MyBatis温故而知新-底层运行原理

    准备工作 public class MainClass { public static void main(String[] args) throws Exception { String resou ...

  5. Flyway:Spring Boot中使用Flyway来管理数据库版本

    Flyway简介 Flyway是一个简单开源数据库版本控制器(约定大于配置),主要提供migrate.clean.info.validate.baseline.repair等命令.它支持SQL(PL/ ...

  6. easyui的combobox的onChange事件的实现

    easyui的combobox的onChange事件的实现,直接上代码: <div style="display:inline;margin-left:15px;"> ...

  7. 安卓开发--探究碎片Fragment

    简述: 最近做开发的时候又遇到了Fragment,发现太久没写,都快忘了,就抓紧写个笔记(我太懒的了233) Fragment可以简单的看成迷你的活动,它和活动一样都有布局和生命周期,它可以嵌入活动之 ...

  8. Java 在Word中创建邮件合并模板并合并文本和图片

    Word里面的邮件合并功能是一种可以快速批量操作同类型数据的方式,常见的如数据填充.打印等.其中必不可少的步骤包括用于填充的模板文档.填充的数据源以及实现邮件合并的功能.下面,通过Java程序展示如何 ...

  9. 从新建文件夹开始构建UtopiaEngine(2)

    本篇序言 摸了两个月的鱼,又一次拾起了自己引擎的框架,开始完善引擎系统,如果非要用现实中的什么东西比喻的话,那么我们目前实现的框架连个脚手架都不是.把这项目这样晾着显然不符合本人的风格,而且要作为毕业 ...

  10. FTP服务—三种登录类型的配置方法

    目录 一.部署 二.配置vsftpd 1.匿名用户登录配置 2.系统用户登录配置 3.虚拟用户登录配置 1. 创建虚拟用户名单文件 2. 生成虚拟用户口令认证文件 3. 创建FTP根目录及虚拟用户映射 ...