人臉檢測識別一直是圖像算法領域一個主流話題。
前年SeetaFace開源了人臉識別引擎,一度成為熱門話題。
雖然后來SeetaFace又放出來 2.0版本,但是,我說但是。。。
沒有訓練代碼,想要自己訓練一下模型那可就犯難了。
雖然可以閱讀源碼,從前向傳播的角度,反過來實現訓練代碼,
但是誰有那個閑功夫和時間,去折騰這個呢?
有的時候還是要站在巨人的肩膀上,你才能看得更遠。
而SeetaFace不算巨人,只是當年風口上的豬罷了。
前年,為了做一個人臉項目,也是看遍了網上各種項目。
林林總總,各有優劣。
不多做評價,很多東西還是要具體實操,實戰才能見真知。
有一段時間,用SeetaFace的人臉檢測來做一些小的演示demo,
也花了一點小時間去優化它的算法。
不過很明顯我只是把他當成玩具看待。
畢竟不能自己訓練模型,這是很大的詬病。
直到后來深度學習大放異彩,印象最深刻莫過于MTCNN。
Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks
大合照下,人臉圈出來很準確,壯觀了去,這是第一印象。
上圖,大家感受一下。
CNN的有三個網絡結構。
Stage1: Proposal Net
Stage2: Refine Net
Stage3: Output Net
具體算法思路就不展開了。
我對MTCNN感興趣的點在于,
MTCNN的思路可以拓展到各種物體檢測和識別方向。
也許唯一缺少的就是打標好的數據,
而標注五個點,足夠用于適配大多數物體了。
符合小而美的理念,這個是我比較推崇的。
所以MTCNN是一個很值得品味的算法。
github上也有不少MTCNN的實現和資源。
基于mxnet基于caffe基于ncnn等等。。。
很明顯,mxnet和 caffe不符合小而美的理念。
果斷拋棄了。
ncnn有點肥大,不合我心。
所以,我動了殺氣。。
移除NCNN與mtcnn無關的層,
梳理ncnn的一些邏輯代碼。
簡單做了一些適配和優化。
砍掉一些邊邊角角。
不依賴opencv等第三方庫。
編寫示例代碼完成后,還有不少工作要做,
不過第一步感覺已經符合我的小小預期。
完整示例代碼:
#include "mtcnn.h"#include "browse.h"#define USE_SHELL_OPEN#ifndef nullptr#define nullptr 0#endif#if defined(_MSC_VER)#define _CRT_SECURE_NO_WARNINGS#include #else#include#endif#define STB_IMAGE_STATIC#define STB_IMAGE_IMPLEMENTATION#include"stb_image.h"http://ref:https://github.com/nothings/stb/blob/master/stb_image.h#define TJE_IMPLEMENTATION#include "tiny_jpeg.h"http://ref:https://github.com/serge-rgb/TinyJPEG/blob/master/tiny_jpeg.h#include #include "timing.h"char saveFile[1024];unsignedchar *loadImage(const char *filename, int *Width, int *Height, int *Channels) { return stbi_load(filename, Width, Height, Channels, 0); }void saveImage(const char *filename, int Width, int Height, int Channels, unsigned char *Output) { memcpy(saveFile + strlen(saveFile), filename, strlen(filename)); *(saveFile + strlen(saveFile) + 1) = 0; //保存為jpg if (!tje_encode_to_file(saveFile, Width, Height, Channels, true, Output)) { fprintf(stderr, "save JPEG fail.
"); return; }#ifdef USE_SHELL_OPEN browse(saveFile);#endif}void splitpath(const char *path, char *drv, char *dir, char *name, char *ext) { const char *end; const char *p; const char *s; if (path[0] && path[1] == ':') { if (drv) { *drv++ = *path++; *drv++ = *path++; *drv = '
主站蜘蛛池模板:
女子叉开腿让男子桶免费软件|
秋霞最新高清无码鲁丝片|
欧美卡1卡2卡三卡2021精品|
色呦呦人人视频|
一区二区三区国产|
www伊人网|
簧片在线观看|
日本动漫henta videos|
亚洲精品久久久WWW游戏好玩
|
我的好妈妈BD免费观看|
曰本少妇高潮久久久久久|
德国美女密密麻麻浓毛|
久久精品电影久久电影大全|
日本三级按摩推拿按摩|
伊人久久大香线蕉综合亚洲|
成人在线精品视频|
久久日本片精品AAAAA国产|
涩涩电影网|
中文字幕亚洲欧美日韩2o19|
国产精品久久久久久52AVAV|
免费网站在线观看国产v片|
亚洲成在人线视频|
抽插妇女疯狂视频|
理论片87福利理论电影|
胸太大被男同桌吃好爽|
拔擦拔擦8X永久华人免费播放器
|
好男人免费观看在线高清WWW
|
久久国产亚洲电影天堂|
忘忧草日本在线WWW日本|
9420高清免费观看在线大全|
国产亚洲精品网站在线视频
|
日本19禁啪啪吃奶大尺度|
野花日本大全免费高清完整版|
古代荡女丫鬟高H辣文纯肉|
美女大BXXXXN内射|
亚洲午夜久久久久久久久电影网|
高h gl肉文|
皮皮色狼网|
2022久久精品国产色蜜蜜麻豆|
精品国产乱码久久久久久软件
|
干极品美女|