91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于mtcnn方法實現人臉對齊,人臉檢測,c++代碼實現。

資源截圖

代碼片段和文件信息

#include?“MTCNN.h“

//?compare?score
bool?CompareBBox(const?FaceInfo?&?a?const?FaceInfo?&?b)?{
return?a.bbox.score?>?b.bbox.score;
}
//?methodType?:?u?is?IoU(Intersection?Over?Union)
//?methodType?:?m?is?IoM(Intersection?Over?Maximum)
std::vector?MTCNN::NonMaximumSuppression(std::vector&?bboxes
float?thresh?char?methodType){
std::vector?bboxes_nms;
std::sort(bboxes.begin()?bboxes.end()?CompareBBox);

int32_t?select_idx?=?0;
int32_t?num_bbox?=?static_cast(bboxes.size());
std::vector?mask_merged(num_bbox?0);
bool?all_merged?=?false;

while?(!all_merged)?{
while?(select_idx? select_idx++;
if?(select_idx?==?num_bbox)?{
all_merged?=?true;
continue;
}

bboxes_nms.push_back(bboxes[select_idx]);
mask_merged[select_idx]?=?1;

FaceRect?select_bbox?=?bboxes[select_idx].bbox;
float?area1?=?static_cast((select_bbox.x2?-?select_bbox.x1?+?1)?*?(select_bbox.y2?-?select_bbox.y1?+?1));
float?x1?=?static_cast(select_bbox.x1);
float?y1?=?static_cast(select_bbox.y1);
float?x2?=?static_cast(select_bbox.x2);
float?y2?=?static_cast(select_bbox.y2);

select_idx++;
for?(int32_t?i?=?select_idx;?i? if?(mask_merged[i]?==?1)
continue;

FaceRect&?bbox_i?=?bboxes[i].bbox;
float?x?=?std::max(x1?static_cast(bbox_i.x1));
float?y?=?std::max(y1?static_cast(bbox_i.y1));
float?w?=?std::min(x2?static_cast(bbox_i.x2))?-?x?+?1;
float?h?=?std::min(y2?static_cast(bbox_i.y2))?-?y?+?1;
if?(w?<=?0?||?h?<=?0)
continue;

float?area2?=?static_cast((bbox_i.x2?-?bbox_i.x1?+?1)?*?(bbox_i.y2?-?bbox_i.y1?+?1));
float?area_intersect?=?w?*?h;

switch?(methodType)?{
case?‘u‘:
if?(static_cast(area_intersect)?/?(area1?+?area2?-?area_intersect)?>?thresh)
mask_merged[i]?=?1;
break;
case?‘m‘:
if?(static_cast(area_intersect)?/?std::min(area1?area2)?>?thresh)
mask_merged[i]?=?1;
break;
default:
break;
}
}
}
return?bboxes_nms;
}

void?MTCNN::Bbox2Square(std::vector&?bboxes){
for?(int?i?=?0;?i float?h?=?bboxes[i].bbox.x2?-?bboxes[i].bbox.x1;
float?w?=?bboxes[i].bbox.y2?-?bboxes[i].bbox.y1;
float?side?=?h>w???h?:?w;
bboxes[i].bbox.x1?+=?(h?-?side)*0.5;
bboxes[i].bbox.y1?+=?(w?-?side)*0.5;

bboxes[i].bbox.x2?=?(int)(bboxes[i].bbox.x1?+?side);
bboxes[i].bbox.y2?=?(int)(bboxes[i].bbox.y1?+?side);
bboxes[i].bbox.x1?=?(int)(bboxes[i].bbox.x1);
bboxes[i].bbox.y1?=?(int)(bboxes[i].bbox.y1);

}
}

std::vector?MTCNN::BoxRegress(std::vector&?faceInfo?int?stage){
std::vector?bboxes;
for?(int?bboxId?=?0;?bboxId FaceRect?faceRect;
FaceInfo?tempFaceInfo;
float?regw?=?faceInfo[bboxId].bbox.y2?-?faceInfo[bboxId].bbox.y1;
regw?+=?(stage?==?1)???0?:?1;
float

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????20814??2018-08-27?21:33??MTCNN\MTCNN.cpp
?????文件????????2667??2018-08-27?21:32??MTCNN\MTCNN.h
?????目錄???????????0??2018-08-27?21:33??MTCNN\

評論

共有 條評論