❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行

这篇博客详细记录了使用YOLOv5-face进行人脸识别的全过程,包括数据集的下载与转换、训练过程中的问题解决、训练参数调整以及训练结果展示。作者在训练过程中遇到了内存不足、缺少库文件等问题,并分享了解决方案。最终,作者通过GPU训练得到了较好的识别效果,并提供了训练权重文件和相关资源的下载链接。
摘要由CSDN通过智能技术生成

yolov5-face是基于yolov5基础上的人脸识别,

感兴趣的朋友可以先看看yolov5相关,yolov5没有论文,

yolov5项目地址:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)https://github.com/ultralytics/yolov5

 yolo5-face 的论文:

[2105.12931] YOLO5Face: Why Reinventing a Face Detector (arxiv.org)https://arxiv.org/abs/2105.12931yolov5-face的项目地址:

deepcam-cn/yolov5-face: YOLO5Face: Why Reinventing a Face Detector (https://arxiv.org/abs/2105.12931) (github.com)https://github.com/deepcam-cn/yolov5-face

**************************************************************************************************************

YOLOv5-face代码运行

**************************************************************************************************************

第一步:下载yolo5-face

(环境我用的是之前配置yolov5的同样环境)

第二步:下载数据集 widerface数据集。

下载网址:

WIDER FACE: A Face Detection BenchmarkFace detection is one of the most studied topics in the computer vision community. Much of the progresses have been made by the availability of face detection benchmark datasets. We show that there is a gap between current face detection performance and the real world requirements. To facilitate future face detection research, we introduce the WIDER FACE dataset, which is 10 times larger than existing datasets. The dataset contains rich annotations, including occlusions, poses, event categories, and face bounding boxes. Faces in the proposed dataset are extremely challenging due to large variations in scale, pose and occlusion. Furthermore, we show that WIDER FACE dataset is an effective training source for face detection. We benchmark several representative detection systems, providing an overview of state-of-the-art performance and propose a solution to deal with large scale variation. Finally, we discuss common failure cases that worth to be further investigated.http://shuoyang1213.me/WIDERFACE/

 下载如下压缩包

 解压缩到yolo5-face项目下data下新建的widerface文件夹下。

手动把WIDER_train,WIDER_test,WIDER_val,改成train,test,val.wider_face_split不变。(wider_face_split不下载也可以。)

这是单纯只有图片。 

https://drive.google.com/file/d/1tU_IjyOwGQfGNUvZGwWWM4SwxKp2PUQ8/view?usp=sharing

下载的是widerface图片的label.txt文件。

全部解压完事后,再去压缩retinaface_gt_v1.1,解压缩位置放到yolov5-face-master项目里data文件夹下新建的widerface文件夹下。

 这样的话就会直接放到对应的标签里。

(如果不手动改上面的test/train/val的话,压缩retinaface_gt_v1.1后,会多出test/train/val的文件夹)

 第三步:运行train2yolo.py和val2yolo.py

接着运行train2yolo.py和val2yolo.py文件,这俩个文件是把数据集转成yolo训练用的格式。

直接运行会出错,如图二,

(需要改变文件路径。一开始我找了train2yolo.py中没有读取和存储路径,以为写在retinaface2yolo.py中,然后就改变retinaface2yolo.py中103和104行,如图三,

换成自己的存放地址运行后在widerface文件夹train文件夹下出现照片对应的.txt文件。项目中没有要求运行retinaface2yolo.py,先略过。)

在data文件夹下新建widerfaceyolo文件夹,放widerface文件夹对应的yolo所需的文件。

wideryolo下新建train文件夹。

修改train2yolo.py文件:注释掉104-126行,修改读取路径和保存路径,如图:

 修改代码可复制,记得换成自己的保存路径:

    original_path = r'F:/YOLOv5projects/yolov5-face-master/data/widerface/train'
    save_path = r'F:/YOLOv5projects/yolov5-face-master/data/widerfaceyolo/train'

    aa = WiderFaceDetection(os.path.join(original_path, 'label.txt'))

运行train2yolo.py后,出现图五:

这时在widerfaceyolo文件夹下就有如图

(没细看代码,暂时觉得train2yolo.py和retinaface2yolo.py运行后结果一样,以后有机会看看,现在先忙着把程序运行出来。)

接着修改 val2yolo.py文件:

注释掉54-76行,修改到自己的读存取路径如图:

运行后, 

此时widerface文件夹下val下多了照片和.txt文件, 

这么写没有把.jpg和.txt文件分开,所以在val下新建2文件夹images和labels,改写代码

运行后:

 

这样子就是图片是图片,标签是标签啦。

(一开始的没有分类的图片和标签没有什么用啦,大家可以不做那一步,属于我绕路啦) 

第四步:运行train.py

 

出错  ImportError:TensorBoard 日志记录需要 TensorBoard 1.15 或更高版本

升级tensorboard后还是出错,参考博客后修改了widerface.yaml文件,还是出错

好像是版本的问题,卸载又重新安装了seaborn,还有scipy后,开始训练:

 提示没有找到数据集,应该是路径错误。因为widerface.yaml文件中有

down:bash data/scipts/get_voc.sh所以自动下载voc数据集。voc下载成功,但是还是出错。

以为是之前对数据有处理了俩次,导致不知道读取那一部分的数据,所以删掉那些没有分类的数据。

 再次train.py

提示没有models/common.py中没有SPPF,从yolov5项目中复制到刚才路径里SPP类的下面

 虽然有警告,但是可忽略。再再次运行train.py

wandb: 错误 api_key 未配置 (no-tty):调用 wandb.login(key=[your_api_key])

在 yolov5 遇到这个问题,需要重新设置一下wandb,在对应的环境终端输入如下代码:

wandb init

 然后打开弹出的网址:

  打开后复制key

在终端中输入(ctrl + v  在终端中不会出现你粘贴的东西),粘贴后 enter 就好。

然后选择创建一个新的还是远来已经创建好的,就可以:

 再再再次运行train.py,提示没有wider_val.txt文件,

(我从别的地方下载下来,放进去,有需要的可以私聊我)

 也因为是因为cpu训练,所以改小了epoch和batch-size(大家可不改)

 再再再再次运行train.py,提示没有足够的内存,我放弃用CPU训练了,打算看看google的免费GPU.

运行完后在run下会有日志还有一丢丢识别图,但是没有权重文件,也没有生成best.pt等。

同时也生成了wandb相关文件: 

 可以通过wandb看到标签。

 

 虽然没有训练完,但是有一个可以看到效果

 等我用GPU训练后再给大家看最终结果。

20220408来记录结果了。

训练结果:

 

 

 训练后,又修改训练权重,epoch=100,batch_size=32

 错误原因:是setuptools的版本问题,

原本setuptools==60.10.0改为pip installsetuptools==59.5.0

batch_size越大,所占运行空间内存越大

俩次训练对比:

 训练完事后,修改训练权重,改为摄像头,运行Detect_face.py,出错。

 不能识别摄像头,只能读取照片路径。

 只能识别单张照片。没有写循环,读取照片时候是单张,写入新的照片需要改名字,要不然会把之前的识别照片覆盖。

修改参数,识别照片,

训练结果如图:

总结:

 Batch_size小,所占运算内存就越小。这取决于CPU,GPU的运算能力。

一共有俩个权重,一个是yolov5-buzeface.pt,一个是yolo5s.pt,5s的效果更好。

Export.py和yolo.py是用于将模型装换为c++可调用的模型

Yolo.py for I(f,n,m,args)in enumerate始迭代循backbonehead的配置。fnmargs代表着从哪层开始,模的默深度,模型和模参数

打包分享:

项目,数据集,训练后的权重文件,还有加了注意力训练的权重文件。下载地址: 

链接:https://pan.baidu.com/s/1KHutnpJrRbqtSFfQdtmfZA?pwd=stjy 
提取码:stjy

yolo5-face+注意力机制

可以参考这几篇:

 ❀YOLO5学习❀基于yolo5-face结合注意力模型SE的数据实验_夏天|여름이다的博客-CSDN博客

 ❀YOLO5学习❀基于yolo5-face结合注意力模型CBAM的数据实验_夏天|여름이다的博客-CSDN博客

参考博客:

[1] YOLOv5Face YOLO5Face人脸检测论文及代码简析_cliu1_16的博客-CSDN博客_yolov5人脸检测

[2]

yoloV5-face学习笔记_m0_58348465的博客-CSDN博客_yolov5face

评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天|여름이다

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值