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

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/

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第1张图片

 下载如下压缩包

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第2张图片

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

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第3张图片

这是单纯只有图片。 

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

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

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第4张图片

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

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

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

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

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第5张图片

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

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

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

wideryolo下新建train文件夹。

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第6张图片

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第7张图片

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

    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后,出现图五:

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第8张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第9张图片

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

接着修改 val2yolo.py文件:

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第10张图片

运行后, 

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第11张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第12张图片

运行后:

 ❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第13张图片

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第14张图片

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

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

第四步:运行train.py

 ❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第15张图片

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

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第16张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第17张图片

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

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

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第18张图片

 再次train.py

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第19张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第20张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第21张图片

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

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

wandb init

 然后打开弹出的网址:

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第22张图片

  打开后复制key

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第23张图片

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

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第24张图片

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

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第25张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第26张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第27张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第28张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第29张图片

 可以通过wandb看到标签。

 ❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第30张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第31张图片

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

20220408来记录结果了。

训练结果:

 ❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第32张图片

 

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第33张图片

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

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

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

俩次训练对比:

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第34张图片

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第35张图片

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第36张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第37张图片

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

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第38张图片

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

修改参数,识别照片,

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第39张图片

训练结果如图:

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第40张图片

总结:

 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代表着从哪层开始,模的默深度,模型和模参数

打包分享:

❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行_第41张图片项目,数据集,训练后的权重文件,还有加了注意力训练的权重文件。下载地址: 

链接:https://pan.baidu.com/s/1xzjUIc8lbRtWN4NqSLCs6A 
提取码:wclb

yolo5-face+注意力机制

可以参考这几篇:

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

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

 

参考博客:

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

[2]

(1条消息) yoloV5-face学习笔记_m0_58348465的博客-CSDN博客_yolov5face

你可能感兴趣的:(❀YOLO学习❀,❀人脸识别❀,深度学习,计算机视觉,神经网络)