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

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

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

yolov5项目地址:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行https://github.com/ultralytics/yolov5 ;

yolo5-face 的论文:

[2105.12931] YOLO5Face: Why Reinventing a Face Detector (arxiv.org)❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行https://arxiv.org/abs/2105.12931 ;yolov5-face的项目地址:

deepcam-cn/yolov5-face: YOLO5Face: Why Reinventing a Face Detector (https://arxiv.org/abs/2105.12931) (github.com)❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行https://github.com/deepcam-cn/yolov5-face ;


YOLOv5-face代码运行


第一步:下载yolo5-face

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

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

下载网址:

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

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

下载如下压缩包

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

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

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

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

这是单纯只有图片。

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论文里代码复现,实现运行

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

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

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

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

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

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

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

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

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

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

wideryolo下新建train文件夹。

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

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

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

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

    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论文里代码复现,实现运行

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

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

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

接着修改 val2yolo.py文件:

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

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

运行后,

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

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

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

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

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

运行后:

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

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

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

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

第四步:运行train.py

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

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

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

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

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

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

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

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

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

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

再次train.py

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

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

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

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

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

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

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

wandb init

然后打开弹出的网址:

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

打开后复制key

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

可以通过wandb看到标签。

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

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

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

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

20220408来记录结果了。

训练结果:

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

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

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

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

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

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

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

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

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

俩次训练对比:

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

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

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

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

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

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

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

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

修改参数,识别照片,

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

训练结果如图:

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

总结:

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 开始迭代循环backbone 与head 的配置。f ,n ,m ,args 分别代表着从哪层开始,模块的默认深度,模块的类型和模块的参数。

打包分享:

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

链接: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

Original: https://blog.csdn.net/weixin_44649780/article/details/123341719
Author: 夏天|여름이다
Title: ❀YOLOv5学习❀yolo5-face论文里代码复现,实现运行

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/519317/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球