当前位置: 首页 > 编程日记 > 正文

【Dlib】使用dlib_face_recognition_resnet_model_v1.dat无法实现微调fune-tuning

1、问题描述

dlib官方使用resnet训练人脸识别,训练了300万的数据,网络参数保存在dlib_face_recognition_resnet_model_v1.dat中。
测试中识别lfw数据时,准确率能达到99.13%,但是在识别自己的数据时,准确率有点低,想在此基础上使用自己的数据经行微调。
经过一番瞎搞,最终失败了(本人是个AI小白)。

2、原因分析

原因是训练网络和测试网络不一样,dlib_face_recognition_resnet_model_v1.dat中保存的是测试网络的序列化参数。
训练网络和测试网络的代码实现如下

template <template <int,template<typename>class,int,typename> class block, int N, template<typename>class BN, typename SUBNET>
using residual = add_prev1<block<N,BN,1,tag1<SUBNET>>>;template <template <int,template<typename>class,int,typename> class block, int N, template<typename>class BN, typename SUBNET>
using residual_down = add_prev2<avg_pool<2,2,2,2,skip1<tag2<block<N,BN,2,tag1<SUBNET>>>>>>;template <int N, template <typename> class BN, int stride, typename SUBNET> 
using block  = BN<con<N,3,3,1,1,relu<BN<con<N,3,3,stride,stride,SUBNET>>>>>;template <int N, typename SUBNET> using res       = relu<residual<block,N,bn_con,SUBNET>>;
template <int N, typename SUBNET> using ares      = relu<residual<block,N,affine,SUBNET>>;
template <int N, typename SUBNET> using res_down  = relu<residual_down<block,N,bn_con,SUBNET>>;
template <int N, typename SUBNET> using ares_down = relu<residual_down<block,N,affine,SUBNET>>;// ----------------------------------------------------------------------------------------template <typename SUBNET> using level0 = res_down<256,SUBNET>;
template <typename SUBNET> using level1 = res<256,res<256,res_down<256,SUBNET>>>;
template <typename SUBNET> using level2 = res<128,res<128,res_down<128,SUBNET>>>;
template <typename SUBNET> using level3 = res<64,res<64,res<64,res_down<64,SUBNET>>>>;
template <typename SUBNET> using level4 = res<32,res<32,res<32,SUBNET>>>;template <typename SUBNET> using alevel0 = ares_down<256,SUBNET>;
template <typename SUBNET> using alevel1 = ares<256,ares<256,ares_down<256,SUBNET>>>;
template <typename SUBNET> using alevel2 = ares<128,ares<128,ares_down<128,SUBNET>>>;
template <typename SUBNET> using alevel3 = ares<64,ares<64,ares<64,ares_down<64,SUBNET>>>>;
template <typename SUBNET> using alevel4 = ares<32,ares<32,ares<32,SUBNET>>>;// training network type
using net_type = loss_metric<fc_no_bias<128,avg_pool_everything<level0<level1<level2<level3<level4<max_pool<3,3,2,2,relu<bn_con<con<32,7,7,2,2,input_rgb_image>>>>>>>>>>>>;// testing network type (replaced batch normalization with fixed affine transforms)
using anet_type = loss_metric<fc_no_bias<128,avg_pool_everything<alevel0<alevel1<alevel2<alevel3<alevel4<max_pool<3,3,2,2,relu<affine<con<32,7,7,2,2,input_rgb_image>>>>>>>>>>>>;

训练网络net_type和测试网络anet_type的主要却别是,affine代替了bn_con(用固定仿射变换代替批量标准化)

如果将dlib_face_recognition_resnet_model_v1.dat并行化到net_type上运行时会报错,然后崩溃

terminate called after throwing an instance of 'dlib::serialization_error'what():  An error occurred while trying to read the first object from the file dlib_face_recognition_resnet_model_v1.dat.
ERROR: Unexpected version 'affine_' found while deserializing dlib::bn_.Aborted (core dumped)

从错误打印可以看出dlib_face_recognition_resnet_model_v1.dat中保存的是affine_,即测试网络。

在dlib官方demo:dnn_metric_learning_on_images_ex.cpp中有

anet_type testing_net = net;

说明 训练网络net_type 可以自动转换成 测试网络anet_type
原因是dlib源码中有bn_转affine_的代码

    class affine_{public:template <layer_mode bnmode>affine_(const bn_<bnmode>& item)...

将dlib_face_recognition_resnet_model_v1.dat并行化到测试网络anet_type上可以正常运行,如果能将测试网络anet_type转化成训练网络net_type,就可以实现了。
本人小白,还没有找到方法。。。

相关文章:

Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结

最近有对一个Windows应用程序少许维护和修改。修改之后要发布新的exe安装文件&#xff0c;打包exe文件时&#xff0c;遇到了很头疼的问题&#xff0c;还好最后解决了&#xff0c;记录一下。 Visual Studio版本&#xff1a;Visual Studio 2017 Visual Studio 2017 打包插件 新建…

NET也有闭包

NET也有闭包在.NET中&#xff0c;函数并不是第一级成员&#xff0c;所以并不能像JavaScript那样通过在函数中内嵌子函数的方式实现闭包&#xff0c;通常而言&#xff0c;形成闭包有一些值得总结的非必要条件&#xff1a; 嵌套定义的函数。 匿名函数。 将函数作为参数或…

【opencv】ubuntu14.04上编译opencv2.4

参考博客 https://blog.csdn.net/c406495762/article/details/62896035 1、安装依赖库 sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install libv4l-0 libv…

1024块TPU在燃烧!BERT训练从3天缩短到76分钟 | 技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;“Jeff Dean称赞&#xff0c;TensorFlow官方推特支持&#xff0c;BERT目前工业界最耗时的应用&#xff0c;计…

牵引力教育设计总监解密9大2018潮流UI设计趋向

作为一名紧跟时代潮流的UI设计师&#xff0c;设计的风格一定要紧跟上最新的设计趋势&#xff0c;因为更为有效且颇具趣味的响应式图标必将得到关注。同时&#xff0c;鲜艳丰富的色彩&#xff0c;精彩纷呈的插图设计都会博得用户眼球。这样你的设计更容易获得更多人的认可与热爱…

Android媒体相关开发应用程序接口

翻译自&#xff1a;http://developer.android.com/guide/topics/media/index.html MediaAndroid框架支持各种普通media类型的编解码&#xff0c;因此你可以很容易地把音频&#xff0c;视频和图片整合到你的应用程序中。通过使用MediaPlayer的接口&#xff0c;你可以播放各种音视…

Facebook开源图嵌入“神器”:无需GPU,高效处理数十亿级实体图形 | 极客头条...

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑编译 | Major、一一出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;有效处理大规模图对于促进人工智能的研究和应用至关重要&#xff0c;但特别是在工业应用中的图&…

【opencv】ubuntu14.04上编译opencv-4.0.1 + opencv_contrib-4.0.1

1、要求 编译器版本&#xff1a;c11 cmake版本&#xff1a;3.5.1 2、安装camke 2.1 官网下载&#xff1a;https://cmake.org/download/ 选择&#xff1a;Linux x86_64 cmake-3.14.1-Linux-x86_64.sh 2.2 安装&#xff1a; 将cmake-3.14.1-Linux-x86_64.sh拷贝考ubuntu中&…

软件开发文档模板 (学习)

1 可行性研究报告   可行性研究报告的编写目的是&#xff1a;说明该软件开发项目的实现在技术、经济和社会条件方面的可行性&#xff1b;评述为了合理地达到开发目标而可能先择的各种方案&#xff1b;说明论证所选定的方案。 可行性研究报告的编写内容要求如下&#xff1a; …

Unix数据中心主宠儿

曾几何时UNIX一直是除个人电脑之外的领域中应用最为广泛的操作系统&#xff0c;并且为现代操作系统的成型奠定了基础&#xff0c;可以说UNIX的历史就像应用程序本身一样耐人寻味。UNIX的过去回首1983年&#xff0c;肯.托马森和D.里奇由于对操作系统发展史以及UNIX操作系统应用所…

【AI】基本概念

1、什么是人工智能 人工智能&#xff08;AI&#xff09;是通过研究、开发&#xff0c;来找到用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的综合性的科学技术。其表现为&#xff0c;让计算机系统通过机器学习等方式&#xff0c;来获得可以履行原本只有依…

在浏览器中进行深度学习:TensorFlow.js (四)用基本模型对MNIST数据进行识别

2019独角兽企业重金招聘Python工程师标准>>> 在了解了TensorflowJS的一些基本模型的后&#xff0c;大家会问&#xff0c;这究竟有什么用呢&#xff1f;我们就用深度学习中被广泛使用的MINST数据集来进行一下手写识别的操作。 MINST数据集 MINST是一组0到9的手写数字…

不止临床应用,AI还要帮不懂编程的医生搞科研

近日&#xff0c;推想科技发布 AI 学者科研平台 InferScholar Center&#xff0c;该平台为更多的医生提供零门槛的 AI 科研能力&#xff0c;让医生可以快速将深度学习、影像组学以及文本数据处理相关的前沿技术应用到自己的临床科研实践中&#xff0c;他们将为平台上的医疗科研…

rhel6Inode详解

在Linux文件系统中&#xff0c;很多人对Inode都不太明白&#xff0c;今天我就和大家一起来分享一下我对Inode的认识&#xff0c;如果有理解错误的地方&#xff0c;请大家多多批评指点。在上一篇一天一点学习Linux之认识文件系统中&#xff0c;在最后给出了一张EXT3文件系统结构…

争论不休的TF 2.0与PyTorch,到底现在战局如何了? | 技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | Jeff Hale译者 | Jackey编辑 | Jane出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;【导语】 TensorFlow 2.0 和 PyTorch 1.0 陆续发布后&#xff0c;…

struts2实验2:struts2.xml action中* ,{}以及${}

p.s 关键在于struts.xml中的匹配&#xff0c;使用* ,{}以及${}可以让代码更加简洁清晰 代码核心思路 在struts.xml中通过路由(url)去指定控制逻辑的Action中的方法,例如 <package name"admin" namespace"/admin" extends"struts-global">&…

【Ubuntu】dpkg-deb -c :查看deb文件中的内容

1、dpkg-deb -c :查看deb文件中的内容 $ dpkg-deb -c packageeg&#xff1a; $ dpkg-deb -c sogoupinyin_2.2.0.0108_amd64.deb drwxr-xr-x root/root 0 2018-04-18 16:50 ./ drwxr-xr-x root/root 0 2018-04-18 16:50 ./etc/ drwxr-xr-x root/root …

捕获Camera并保存图片到本地(照相功能) -samhy

Flex博文 捕获Camera并保存图片到本地(照相功能) -samhy作者:admin 日期:2010-07-12字体大小: 小 中 大捕获Camera并保存图片到本地(照相功能)这几天对Camera类进行了一下规整&#xff0c;并利用JPGEncoder类实现了照相的功能,代码如下&#xff1a; XML/HTML代码import flash.m…

【C++】模板函数的声明和定义必须在同一个文件中

1、问题描述 习惯性的将函数的定义和实现&#xff0c;分别写在头文件和源文件&#xff08;.cpp&#xff09;中。今天也按照这个习惯实现了一个模板函数。然后编译时报错 ... error: undefined reference to ...2、原因分析 c中模板的声明和定义不能分开。C中每一个对象所占用…

基于AWS-ELK部署系统日志告警系统

前言 运维故障排障速度往往与监控系统体系颗粒度成正比&#xff0c;监控到位才能快速排障 在部署这套系统之前&#xff0c;平台所有系统日志都由GraylogZabbix&#xff0c;针对日志出现的错误关键字进行告警&#xff0c;这种做法在运维工作开展过程中暴露出多个不足点&#xff…

《周志华机器学习详细公式推导版》发布,Datawhale开源项目pumpkin-book

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑来源 | Datawhale&#xff08;ID&#xff1a;Datawhale&#xff09; 如果让你推荐两本国内机器学习的入门经典作&#xff0c;你会推荐哪些呢&#xff1f;相信大家同我一样&#xff…

JVM内存泄漏检测与处理

JVM内存泄漏检测与处理&#xff08;JVM Memory Leak detection and handling&#xff09; JVM垃圾回收机制的原则和方法 JVM垃圾回收中一个基本原则是对象没有被引用或则引用其它对象&#xff0c;换句话说当一个对象在heap 中是隔离(isolation)状态的时候&#xff0c;垃圾回收器…

【Dlib】dlib和opencv的互转

一、dlib::matrix转换成cv::Mat 1、注意事项&#xff1a; 1&#xff09;将dlib::matrix转成BGR格式后&#xff0c;再转换成cv::Mat&#xff0c;因为cv::Mat中是按照BGR顺序存储 2&#xff09;注意最后添加的cv::Mat::clone()函数&#xff0c;因为dlib::toMat(tmp)返回的mat数…

原创 人物志|山东省临沭县 - 一位身残志坚的奋斗青年 - 吴忠军

原创 人物志|山东省临沭县 - 一位身残志坚的奋斗青年 - 吴忠军 02972018-04-29 16:15:27 人物志|山东省临沭县 - 一位身残志坚的奋斗青年 - 吴忠军 齐鲁晚报 2018年04月29日 2018年4月29日&#xff0c;山东省临沂市临沭县&#xff0c;一位年轻的小伙子。吴忠军&#xff0c;山东…

百度SLG拿下前锤子科技CTO钱晨,还要合并小鱼在家? | 极客头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑整理 | 一一出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;2016 年 7 月&#xff0c;锤子科技前 CTO 钱晨从该公司退休的消息被证实&#xff0c;关于其离职的…

【Dlib】dlib实现深度网络学习之 input层

1、 dlib::input 模板类&#xff0c;深度神经网络的简单输入层&#xff0c;它将某种图像作为输入并将其加载到网络中。 这是一个基本的输入层&#xff0c;它只是简单地将图像复制到一个张量中。 注意&#xff1a;dlib::input只支持输入dlib::matrix和dlib::array2d类型&#x…

首发 | 13篇京东CVPR 2019论文!你值得一读~ 技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑编者按&#xff1a;计算机视觉和模式识别大会 CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;作为人工智能领域计算机视觉方向的重要学术会议…

Windows 活动目录(AD)服务器系统升级到2012之活动目录角色迁移(三)

4.5迁移服务器角色到AD20121. 打开powershell&#xff0c;使用命令迁移服务器角色到AD2008输入命令Ntdsutil输入命令Roles输入命令Connections输入命令Connect to server AD2012&#xff0c;连接AD2012控制器输入命令QUIT输入Transfer infrastructure master命令&#xff0c;转…

《星际争霸2》引擎技术解析

就在SIGGRAPH大会刚结束之后&#xff0c;AMD和暴雪在AMD官方网站上放出了《星际争霸II》的官方技术文档&#xff0c;通过游戏引擎技术的展示让星际迷们感受到越来越多的惊喜。画面优化给CPU带来考验着色方面&#xff0c;在使用原型的基础上利用3D Studio MAX让程序员对整体效果…

回顾与展望:大热的AutoML究竟是什么? | 技术头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑来源 | 第四范式编者按&#xff1a;AutoML&#xff08;Automatic Machine Learning&#xff0c;自动机器学习&#xff09;旨在研究在没有专业知识的情况下使用的低门槛甚至零门槛的…