手把手教用自己的数据集训练一个MTCNN(Pytorch)

MTCNN项目地址:https://github.com/yeyupiaoling/Pytorch-MTCNN


前言

        网上大多都没有训练的项目,都是直接有的模型。就算有,网上大多数都是用widerface等数据集来训练MTCNN,但是由于不同的应用场景,官方训练出来的模型应用到实际存在一定偏差,下面主要介绍如何依葫芦画瓢实现用自己的数据集训练模型,无需基础。


一、MTCNN简介

转载:人脸识别经典网络-MTCNN(含Python源码实现)_mtcnn代码_Moresweet猫甜的博客-CSDN博客

        这里就不做概述了,大概知道他由三层PRO-NET组成,各个层的作用即可。我们该章主要是直接上手实操,理论的东西少。

二、准备自己的训练集

根据上述github项目readme所述,下载官方数据集后,dataset目录下应该有lfw_5590, net_7876,WIDER_train以及对应的标签trainImageList.txt,testImageList.txt和wider_face_train.txt。只需仿造齐格式即可。下面主要介绍关键点部分数据集的增加,bbox数据集方法相同

1.获取关键点数据集

         最原始的方法,人工标注。但是如果你有效果很好的模型,可以直接检测,将检测结果作为数据集。这里我懒且没有好的模型,我直接调用阿里云的人脸检测以及五官走位的API,网址如下:能力展示-阿里云视觉智能开放平台,调用API得到的数据为一串JSON格式的字符串,需要对他做一定处理,来过滤得到你所需要的人脸检测框以及关键点坐标,最重要的,记得仿照原数据集格式将路径放在数据集的第一位。过滤应该还是蛮简单的,这里就不贴代码了。这样子我们就得到了关键点数据集的标签文件。格式如下,(path,x1,x2,y1,y2,landmarks(x,y)*5)。这里图方便,我直接将路径也改为lfw_5590,后续只需要将图片放在lfw_5590下,并将标签数据增加至trainImageLis t以及testImageList(虽然二者有出入,但是我放进去的数据标注是一样的,我不知道testImageList的作用是什么,先这么做吧,有懂的大哥可以教我一下)。

2.开始训练

经过上述得到数据集以及将数据集迁移后,可以直接根据官方教程产生数据集然后开始训练。

时间可能比较长,可以修改train_PNet中的batch_size来加快(只要你能够带的动)。

cd /train_PNet
python generate_PNet_data.py
python train_PNet.py 

3. 过程中可能遇到的bug

在train_PNet过程中,我出现了Image is None 的报错,原因是解码后Image为None,查阅过后,总结原因大概如下

1. 图片路径错误,检查一下你trainImageList中的路径和你图片存放的路径

2. 图片后缀(我是这个原因),我原本图片为png,全部修改为jpg问题就得到了解决。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值