GithubHelp home page GithubHelp logo

pixiesunky / mtcnn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cv9527/mtcnn-2

0.0 2.0 0.0 2.32 MB

基于caffe的mtcnn训练实现,可以训练一个自己的有效的目标检测算法,非常容易非常简单,并且有配套的纯c++版本的mtcnn-light

C++ 88.27% C 9.92% Batchfile 0.08% Python 1.73%

mtcnn's Introduction

mtcnn

基于caffe的mtcnn训练实现,非常容易非常简单,并且有配套的纯c++版本的mtcnn-light
该算法证实可以被用来做其他目标检测,效果非常好,效率也非常高

caffemodel_2_mtcnnmodel:

caffemodel文件转换为mtcnn-light支持的.h头文件类型的模型,可以直接丢进去替换编译就行了

mtcnn-light:

改进版本的mtcnn-light,配合训练程序,和转换程序,实现一整套的流程到最后部署

train:

训练过程所使用的程序和脚本

mtcnn-caffe:

一个caffe实现的简单,稳定有效的mtcnn版本


训练

1.基础问题
a.样本问题,mtcnn训练时,会把训练的原图样本,通过目标所在区域进行裁剪,得到三类训练样本,即:正样本、负样本、部分(part)样本
其中:
裁剪方式:对目标区域,做平移、缩放等变换得到裁剪区域
IoU:目标区域和裁剪区域的重合度

此时三类样本如下定义:
正样本:IoU >= 0.65,标签为1
负样本:IoU < 0.3,标签为0
部分(part)样本:0.65 > IoU >= 0.4,标签为-1

b.网络问题,mtcnn分为三个小网络,分别是PNet、RNet、ONet,新版多了一个关键点回归的Net(这个不谈)。
PNet:12 x 12,负责粗选得到候选框,功能有:分类、回归
RNet:24 x 24,负责筛选PNet的粗筛结果,并微调box使得更加准确和过滤虚警,功能有:分类、回归
ONet:48 x 48,负责最后的筛选判定,并微调box,回归得到keypoint的位置,功能有:分类、回归、关键点

c.网络大小的问题,训练时输入图像大小为网络指定的大小,例如12 x 12,而因为PNet没有全连接层,是全卷积的网络,所以预测识别的时候是没有尺寸要求的,那么PNet可以对任意输入尺寸进行预测得到k个boundingbox和置信度,通过阈值过滤即可完成候选框提取过程,而该网络因为结构小,所以效率非常高。


2.训练步骤
参考:https://github.com/dlunion/mtcnn/tree/master/train
一般训练几万次后,loss到0.0x的时候就可以接受了

记得在当前目录下创建models-12、models-24、models-48来迎接喜气招财哟~

3.使用阶段
将训练的caffemodel,复制到caffemodel_2_mtcnnmodel里面,编译执行他(代码写的必须3个网络同时存在,所以自己看情况改下),这时候产生的mtcnn_models.h,就是我们要的网络头文件,添加到mtcnn-light覆盖下就可以执行看效果了

引用:

https://github.com/kpzhang93/MTCNN_face_detection_alignment
https://github.com/Seanlinx/mtcnn
https://github.com/CongWeilin/mtcnn-caffe
https://github.com/AlphaQi/MTCNN-light
https://github.com/dlunion/CCDL

注意:

该mtcnn项目的计算方法,和mtcnn-light、和官方的mtcnn计算方法有区别,所以不能被通用,当然如果你修改下也是很容易就跟原版一样了,只是我修改的版本更加容易理解吧

mtcnn's People

Contributors

hopef avatar dlunion avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.