原
人脸检测:MTCNN的训练步骤和样本的处理
2018年04月20日 21:46:50
BigCowPeking
阅读数:335
<span class="tags-box artic-tag-box">
<span class="label">标签:</span>
<a data-track-click="{"mod":"popu_626","con":"MTCNN训练"}" class="tag-link" href="http://so.csdn.net/so/search/s.do?q=MTCNN训练&t=blog" target="_blank">MTCNN训练 </a>
<span class="article_info_click">更多</span></span>
<div class="tags-box space">
<span class="label">个人分类:</span>
<a class="tag-link" href="https://blog.csdn.net/wfei101/article/category/7014453" target="_blank">人脸检测 </a>
</div>
</div>
<div class="operating">
</div>
</div>
</div>
</div>
<article>
<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">
<div class="article-copyright">
版权声明:本文为博主原创文章,转载请注明出处,谢谢。 https://blog.csdn.net/wfei101/article/details/80024499 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-e2445db1a8.css">
<div class="htmledit_views">
<p style="background-color:rgb(255,255,255);">采用数据集:</p><p style="background-color:rgb(255,255,255);">人脸检测和人脸框回归:<a href="http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/" rel="nofollow" target="_blank">WIDER_FACE</a></p><p style="background-color:rgb(255,255,255);">特征点标定:<a href="http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html" rel="nofollow" target="_blank">Celeba</a></p><p style="background-color:rgb(255,255,255);">P-net:</p><p style="background-color:rgb(255,255,255);">P-net的任务是人脸检测和人脸框回归,所以该阶段仅需要使用WIDER FACE数据集。为什么没带特征点标定任务?P-net输入12*12的图像,图像太小,不适合做特征点标定,<span style="color:#ff0000;">我个人理解是loss函数根据人脸带不带关键点来训练的;其实widerface和celeb都是用了,第一阶段到第三阶段都使用;</span></p><p style="background-color:rgb(255,255,255);">(1)取候选窗,生成训练图片</p><p style="background-color:rgb(255,255,255);">下载的原始数据集并不能直接用于训练,而是在原始图像上截取候选框图像。随机截取候选框,根据IoU计算候选框所属类别,并将其resize到12*12大小,将resize后的候选框图像保存到对应的类别文件夹下。每个类别生成一个txt文档,存放图片路径以及对应的候选框位置信息。</p><p style="background-color:rgb(255,255,255);">根据IoU计算选择的候选框是属于negative(IoU<0.3)、positive(IoU>0.65)、part(0.4<IoU<0.65),三者的比例为3:1:1。其中positive和negative用于人脸检测,positive和part用于人脸框回归。</p><p style="background-color:rgb(255,255,255);">(2)生成imdb,训练数据</p><p style="background-color:rgb(255,255,255);">使用positive和negative类别中的图像生成人脸检测所需的数据cls.imdb</p><p style="background-color:rgb(255,255,255);">使用positive和part类别中的图像生成人脸框回归所需的数据roi.imdb</p><p style="background-color:rgb(255,255,255);">(3)构建网络和solver,开始训练</p><p style="background-color:rgb(255,255,255);">(4)使用生成的训练模型,生成难例样本,继续训练下一阶段的网络;都是微调网络;</p><div>P-net网络中是没有fc层的,不需要固定大小,R-net和O-net都是有fc层的,训练的输入必须的固定的;</div><p><br></p><p>测试时候:</p><p>1:做不同的Scale,先第一阶段和第二阶段的输出推荐窗口,只是分类和框的回归;在第三阶段之后才开始输出定位的结果;</p> </div>
</div>
<script>
(function(){
function setArticleH(btnReadmore,posi){
var winH = $(window).height();
var articleBox = $("div.article_content");
var artH = articleBox.height();
if(artH > winH*posi){
articleBox.css({
'height':winH*posi+'px',
'overflow':'hidden'
})
btnReadmore.click(function(){
articleBox.removeAttr("style");
$(this).parent().remove();
})
}else{
btnReadmore.parent().remove();
}
}
var btnReadmore = $("#btn-readmore");
if(btnReadmore.length>0){
if(currentUserName){
setArticleH(btnReadmore,3);
}else{
setArticleH(btnReadmore,1.2);
}
}
})()
</script>
</article>