ncnn 载入insightface训练好的性别年龄识别模型 - sinat_31425585的博客 - CSDN博客

标签: | 发表时间:2019-05-15 18:12 | 作者:
出处:https://blog.csdn.net

1、模型转换

从insightface项目中下载mxnet模型: https://github.com/deepinsight/insightface/tree/master/gender-age/model

2、使用ncnn的模型转换工具mxnet2ncnn进行模型转换

      ./mxnet2ncnn model-symbol.json model-0000.params ag.param ag.bin

3、使用下面代码测试:

      #include "ncnn/net.h"
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"

#include <iostream>
#include <vector>

int main(int argc, char* argv[]) {
    cv::Mat img_src = cv::imread("test.png");
    if (img_src.empty()) {
        std::cout << "input image is empty." << std::endl;
        return -1;
    }
    ncnn::Net net;
    if (net.load_param("ag.param") == -1 ||
        net.load_model("ag.bin") == -1) {
        std::cout << "load ga model failed." << std::endl;
        return -1;
    }

    ncnn::Extractor ex = net.create_extractor();
    ncnn::Mat img_ncnn = ncnn::Mat::from_pixels_resize(img_src.data,
        ncnn::Mat::PIXEL_BGR, img_src.cols, img_src.rows, 112, 112);
    ex.input("data", img_ncnn);
    ncnn::Mat img_out;
    ex.extract("fc1", img_out);
    std::vector<float> out;
    for (int i = 0; i < img_out.w; ++i) {
        out.push_back(img_out[i]);
    }
    if (out[0] > out[1]) {
        std::cout << "female" << std::endl;
    } else {
        std::cout << "male" << std::endl;
    }

    int counts = 0;
    for (int i = 2; i < 102; ++i) {
        if (out[2 * i] < out[2 * i + 1]) {
            ++counts;
        }
    }
    std::cout << "age: " << counts << std::endl;
    return 0;


}

参考资料:

[1] https://github.com/Tencent/ncnn

[2] https://github.com/deepinsight/insightface

相关 [ncnn insightface 训练] 推荐:

基于insightface训练mobilefacenet的相关步骤及ncnn转换流程

- -
经多位网友的共同实验,原方案部分情况下迭代次数稍微不足,导致最终识别率略有小差异,为了相对容易获得论文的最佳结果,对训练方案进行简单更新,实际训练也可根据数据acc训练是否已稳定来判断lr下降的迭代次数:. 适当增大softmax迭代次数,4万-->12万;. 增大arcface第一级lr0.1的迭代次数,8万-->12万;.

ncnn 载入insightface训练好的性别年龄识别模型 - sinat_31425585的博客 - CSDN博客

- -
从insightface项目中下载mxnet模型:. 2、使用ncnn的模型转换工具mxnet2ncnn进行模型转换.

使用Mxnet进行图像深度学习训练工具 InsightFace - 使用篇, 如何一键刷分LFW 99.80%, MegaFace 98%. - 知乎

- -
开头先把论文和开源项目地址放一下:. InsightFace库是对我们上述论文中提出算法的开源实现. 其中不仅仅包括我们自己的算法, 也包括其他常见的人脸loss, 比如Softmax, SphereFace, AMSoftmax, CosFace, Triplet Loss等等. 除了代码实现以外, 我们还提供了打包对齐好的人脸训练数据供下载, 免除了一大堆数据准备的工作.

GitHub - Tencent/ncnn: ncnn is a high-performance neural network inference framework optimized for the mobile platform

- -
ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架. ncnn 从设计之初深刻考虑手机端的部署和使用. 无第三方依赖,跨平台,手机端 cpu 的速度快于目前所有已知的开源框架. 基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖.

树莓派NCNN环境搭建 | 异构 AI

- -
前言镜像已经做好了,传到百度网盘中了(请大家及时保存,不定期删除. https://pan.baidu.com/s/1fhiX86L8iL8tsLbsiVa6Wg密码: e64s. SD卡要求:至少16GB,板卡型号为树莓派3B+(其他型号未知). 本系列教程采用树莓派3B+开发板:. 1.4GHz 64位4核 ARM Cortex-A53 CPU.

Ncnn使用详解(2)——Android端 - DmrfCoder的博客 - CSDN博客

- -
本片文章基于你已经完成了 这篇文章的学习,主要介绍如何将写好的c代码应用到Android项目中. 系统:Ubuntu16.04 . 软件:Android Studio. 前期准备之 ndk安装. 在正式开始前我们需要先下载安装ndk,这里介绍一种简单高效的方式,打开Android Studio,然后依次点击File->Settings->Appearance&Behavior->System Settings->Android SDK,然后在SDK Tools下找到ndk,然后选中,点击apply就可以自动下载安装了,如图: .

Leetcode 编程训练

- - 酷 壳 - CoolShell.cn
Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google、微软、Facebook、Amazon之类的这些公司,基本上是应试教育的功利主义. 我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力.

MTCNN人脸及特征点检测--基于树莓派3B+及ncnn架构 - yuanlulu的博客 - CSDN博客

- -
本文尝试在树莓派3B+上用ncnn框架测试MTCNN. ncnn的基本编译和使用请参考《. 在树莓派3B+上编译ncnn并用benchmark和mobilenet_yolo测试》. mtcn-ncnn项目中下载mtcnn子目录,把这个目录放在最新的ncnn源码目录下. 修改ncnn最顶层的CMakeList.txt,增加对mtcnn的支持.

我的听力训练之路

- moz - 学习力就是竞争力
舍得上初中那会,基本谈不上什么听力训练,最多最多就是英语老师拿了个录音机让大家做听写,听的通常是单词.就算如此,舍得初中四年的英语听力训练加在一起不会超过两个小时.. 初中毕业后舍得上的是技校,学的是热处理专业,根本就没有英语这一科,哈哈.技校毕业就进了工厂,玩了三年后才觉得该学学英语了.于是买了个爱华录音机,买了一套新概念英语的磁带,就开始听起来了.那时候年轻贪玩,加上基础差,没有坚持下来..

训练免疫系统杀死癌症

- 微笑!?~ - Solidot
一年前,当化疗对白血病也无效时,65岁的William Ludwig签署协议参与了宾夕法尼亚大学的一项大胆的实验. 医生抽取出10亿T细胞——对抗病毒和肿瘤的白细胞——为T细胞加入能编程细胞去攻击癌细胞的新基因,然后这些修改过的细胞被重新滴入Ludwig的静脉. 他浑身发冷颤,然后体温上升,血压下降,最后他被医生送入重病特别护理室,向其家人发出去世警告.