資源簡介
基于 MXNet C 框架的 CPU 實時人臉識別 pipeline
代碼片段和文件信息
#pragma?once
#include?“mtcnn.hpp“
#include?“comm_lib.hpp“
#include?
void?nms_boxes(std::vector&?input?float?threshold?int?type?std::vector&output)
{
std::sort(input.begin()?input.end()
[](const?face_box&?a?const?face_box&b)?
{
return?a.score?>?b.score;
});
int?box_num?=?input.size();
std::vector?merged(box_num?0);
for?(int?i?=?0;i {
if?(merged[i])
continue;
output.push_back(input[i]);
float?h0?=?input[i].y1?-?input[i].y0?+?1;
float?w0?=?input[i].x1?-?input[i].x0?+?1;
float?area0?=?h0*w0;
for?(int?j?=?i?+?1;j {
if?(merged[j])
continue;
float?inner_x0?=?std::max(input[i].x0?input[j].x0);
float?inner_y0?=?std::max(input[i].y0?input[j].y0);
float?inner_x1?=?std::min(input[i].x1?input[j].x1);
float?inner_y1?=?std::min(input[i].y1?input[j].y1);
float?inner_h?=?inner_y1?-?inner_y0?+?1;
float?inner_w?=?inner_x1?-?inner_x0?+?1;
if?(inner_h?<=?0?||?inner_w?<=?0)
continue;
float?inner_area?=?inner_h*inner_w;
float?h1?=?input[j].y1?-?input[j].y0?+?1;
float?w1?=?input[j].x1?-?input[j].x0?+?1;
float?area1?=?h1*w1;
float?score;
if?(type?==?NMS_UNION)
{
score?=?inner_area?/?(area0?+?area1?-?inner_area);
}
else
{
score?=?inner_area?/?std::min(area0?area1);
}
if?(score>threshold)
merged[j]?=?1;
}
}
}
void?regress_boxes(std::vector&?rects)
{
for?(unsigned?int?i?=?0;i {
face_box&?box?=?rects[i];
float?h?=?box.y1?-?box.y0?+?1;
float?w?=?box.x1?-?box.x0?+?1;
box.x0?=?box.x0?+?w*box.regress[0];
box.y0?=?box.y0?+?h*box.regress[1];
box.x1?=?box.x1?+?w*box.regress[2];
box.y1?=?box.y1?+?h*box.regress[3];
}
}
void?square_boxes(std::vector&?rects)
{
for?(unsigned?int?i?=?0;i {
float?h?=?rects[i].y1?-?rects[i].y0?+?1;
float?w?=?rects[i].x1?-?rects[i].x0?+?1;
float?l?=?std::max(h?w);
rects[i].x0?=?rects[i].x0?+?(w?-?l)*0.5;
rects[i].y0?=?rects[i].y0?+?(h?-?l)*0.5;
rects[i].x1?=?rects[i].x0?+?l?-?1;
rects[i].y1?=?rects[i].y0?+?l?-?1;
}
}
void?padding(int?img_h?int?img_w?std::vector&?rects)
{
for?(unsigned?int?i?=?0;?i {
rects[i].px0?=?std::max(rects[i].x0?1.0f);
rects[i].py0?=?std::max(rects[i].y0?1.0f);
rects[i].px1?=?std::min(rects[i].x1?(float)img_w);
rects[i].py1?=?std::min(rects[i].y1?(float)img_h);
}
}
void?process_boxes(std::vector&?input?int?img_h?int?img_w?std::vector&?rects)
{
nms_boxes(input?0.7?NMS_UNION?rects);
regress_boxes(rects);
square_boxes(rects);
padding(img_h?img_w?rects);
}
int?make_round(float?num)
{
int?a?=?int(num);
float?b?=?num?-?a;
if?(int(10?*?b)?!=?5)
{
return?round(num);
}
else
{
if?(a?%?2?==?0)
return?a;
else
return?a?+?1;
}
}
void?generate_bounding_box(const?float?*?confidence_data?int?confidence_size
const?float?*?reg_data?float?scale
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-06-23?16:42??mxnet-insightface-cpp-master\
?????文件?????????754??2019-06-23?16:42??mxnet-insightface-cpp-master\CMakeLists.txt
?????文件????????4365??2019-06-23?16:42??mxnet-insightface-cpp-master\README.md
?????文件????????4311??2019-06-23?16:42??mxnet-insightface-cpp-master\README_zh.md
?????文件??????586684??2019-06-23?16:42??mxnet-insightface-cpp-master\demo.jpg
?????目錄???????????0??2019-06-23?16:42??mxnet-insightface-cpp-master\feature_model\
?????文件?????4115182??2019-06-23?16:42??mxnet-insightface-cpp-master\feature_model\model-0000.params
?????文件??????107943??2019-06-23?16:42??mxnet-insightface-cpp-master\feature_model\model-symbol.json
?????文件???????25885??2019-06-23?16:42??mxnet-insightface-cpp-master\features.xm
?????目錄???????????0??2019-06-23?16:42??mxnet-insightface-cpp-master\image\
?????文件???????22062??2019-06-23?16:42??mxnet-insightface-cpp-master\image\Howard.jpg
?????文件???????10026??2019-06-23?16:42??mxnet-insightface-cpp-master\image\Leonard.jpg
?????文件???????58652??2019-06-23?16:42??mxnet-insightface-cpp-master\image\Pacino.jpg
?????文件???????46066??2019-06-23?16:42??mxnet-insightface-cpp-master\image\Penny.jpg
?????文件???????29099??2019-06-23?16:42??mxnet-insightface-cpp-master\image\Rajesh.jpg
?????文件???????16849??2019-06-23?16:42??mxnet-insightface-cpp-master\image\Sheldon.jpg
?????文件???????28869??2019-06-23?16:42??mxnet-insightface-cpp-master\image\daliu.jpg
?????文件???????40810??2019-06-23?16:42??mxnet-insightface-cpp-master\image\duanyihong.jpg
?????文件???????34977??2019-06-23?16:42??mxnet-insightface-cpp-master\image\fanye.jpg
?????文件???????67052??2019-06-23?16:42??mxnet-insightface-cpp-master\image\stephanie-sun.jpg
?????文件???????51787??2019-06-23?16:42??mxnet-insightface-cpp-master\image\yanzi_1.jpg
?????文件???????28700??2019-06-23?16:42??mxnet-insightface-cpp-master\image\yanzi_2.jpg
?????目錄???????????0??2019-06-23?16:42??mxnet-insightface-cpp-master\include\
?????目錄???????????0??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\
?????目錄???????????0??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\dmlc\
?????文件???????11286??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\dmlc\any.h
?????文件????????3262??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\dmlc\array_view.h
?????文件????????6862??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\dmlc\ba
?????文件???????33014??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\dmlc\blockingconcurrentqueue.h
?????文件????????1144??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\dmlc\build_config.h
?????文件????????2069??2019-06-23?16:42??mxnet-insightface-cpp-master\include\include\dmlc\common.h
............此處省略132個文件信息
評論
共有 條評論