背景:这几天找了几个二分类的网络,准备对一些算法进行集成,集成之前决定先把代码跑通。
几个算法是Inception系列的InceptionV3,InceptionV4,Inception_Resnet_V2,之前也试过用VGG19作为backbone(主干网络)来进行迁移训练,简单来说做的事情就是使用在imagenet等数据集上训练过的网络,改变最后的分类层来进行训练。

迁移训练/学习,有几种方式:
一:全部训练,将所有网络层放开,加上后面的分类层一起做反向传播训练,每次整个网络的所有参数要改变一次。
二:将前面的网络部分冻结起来,不改变其参数,只训练最后几个分类层,由于前面的网络在大规模的数据集上训练过了,拥有了一定捕捉特征的能力,所以对于足够的提取特征能力,再次分类就足够了。

但是进行学习最好的方式是将几种办法复合起来,首先将所有层都放开进行训练,这样能够让模型对我们自己的数据样本有一个适应的过程,个人理解的是,我们自己的样本中有一些特征不易捕捉,原来的网络中并未捕捉到,所以将前面的网络层进行开放,进行特征的补充学习。之后再将前面的网络层冻结,针对我们的数据进行训练,让后面的分类层能够更好地对我们自己地数据进行分类,最终提升精度。

这是在网络是否开放训练上做的文章,与之不同的是在数据上做的文章。
这里举一个浙大一个实验室做对身份证人脸识别的例子,他们的训练是这样的:首先使用现有的大量人脸数据集(其中包括全世界的人种)进行训练,第二步使用网络搜集的亚洲面孔进行训练,最后才是使用现有的身份证素材进行训练,这样一个过程对于缺乏数据的状况也是一个好的解决办法。
在训练过程中调参(学习率等)我并不擅长,因为还是做的太少,下一步要逐渐感受一下调参。

下面写一下TFBOY这几天使用tensorflow的slim的感受。
本人路子比较野,对官方的文档或者说明比较抗拒,因为首先是用不习惯,其次是阅读能力比较差,还是比较喜欢CSDN上的网友一步步细致教学,所以做什么东西就会先去搜教程,跟着做一遍,之后再自己摸索。

对我来说,跟keras简洁的集成相比,slim的使用难度要大一些,因为要修改的地方比较多,很多代码封装得比较复杂,同时模型也是不像keras一样直接封装.h5这样简洁明了,而是先是需要加载文件夹中带的构建模型的代码,之后使用自己下载的参数权重(.ckpt文件)加载进去进行训练。
但是对于我这个学习阶段的人来说是好处比较多的,不像keras的代码封装得很死,slim的代码都是开放的,参数之类的都写得明明白白,之后使用shell文件启动训练,观看日志,启动restful服务等一系列流程虽然稍微复杂,但也让人比较安心,弄懂了这些内部的机制,对于tf的理解会比较加深,同时构建工程组织代码的功力会明显提高,所以接下来的日子里要好好研读这些代码,会有一个阶段性的进步。
同时还有一个问题就是今天在使用keras的时候报了一个错误,是在与训练模型顶部构建新的分类层的时候产生的,报错的原因是:先前加载的预训练模型构建的各层使用的是原生的keras.layers进行构建的,而之后在添加分类层的时候,竟然不可以使用tf下的keras进行构建,看样子还需要对版本进行一些调整才能使用(没办法只能使用原本机器的CPU训练。。。训练专用机的环境不敢乱动)

鉴于这些,keras实在是有些不友好了,但是有人说过,封装的好的东西,灵活性上一定会有局限的,这也是取舍吧。

暂时使用的几种都是进行分类的网络,还没有进行到物体检测部分的网络,如果要进行物体检测,就不能单纯使用slim现有的功能进行了,接下来要做的是一个图像分割的网络,同样的,准备先跑通,之后再补充细节。

明天准备做和活体检测有关的工作。
一条路是活体检测的sdk,部署一下试一试怎么样。
另一条路是看网上有教程自己做一个试试好了。
然后是UNET试着去跑一个出来。

tensorflow的slim调用预训练模型的权重进行迁移学习的一些感触相关推荐

  1. 10个预训练模型开始你的深度学习(计算机视觉部分)

    2019-09-24 21:04:41 作者:PRANAV DAR 编译:ronghuaiyang 导读 对于希望学习算法或尝试现有框架的人来说,预训练的模型是一个很好的帮助.由于时间限制或计算资源的 ...

  2. PaddleHub--飞桨预训练模型应用工具{风格迁移模型、词法分析情感分析、Fine-tune API微调}【一】

    相关文章: 基础知识介绍: [一]ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀.的博客-CSDN博客_ernie模型 百度飞桨:E ...

  3. 屏蔽预训练模型的权重。 只训练最后一层的全连接的权重。_权重/参数初始化...

    一.参数初始化的重要性 参数初始化又称为权重初始化(weight initialization)或权值初始化.深度学习模型训练过程的本质是对weight(即参数 W)进行更新,这需要每个参数有相应的初 ...

  4. 二、预训练模型预测(Datawhale组队学习)

    文章目录 安装配置环境 ImageNet预训练图像分类模型预测单张图像-英文 载入预训练图像分类模型 图像预处理 执行图像分类预测 预测结果分析 ImageNet预训练图像分类模型预测单张图像-中文 ...

  5. 屏蔽预训练模型的权重。 只训练最后一层的全连接的权重。_轻量化 | 如何让笨重的深度学习模型在移动设备上跑起来?看它!...

    概述​ 卷积神经网络依靠神经网络中数以千万计的网络参数共同参与计算,存在网络结构复杂,运算量大,速度慢的缺点,并且很难移植到嵌入式设备中.随着网络模型层数越来越深,参数越来越多,减少他们的大小和计算损 ...

  6. 【机器学习】Tensorflow.js:我在浏览器中实现了迁移学习

    ⭐️ 本文首发自 前端修罗场(点击加入),是一个由资深开发者独立运行的专业技术社区,我专注 Web 技术.答疑解惑.面试辅导以及职业发展.现在加入,私聊我即可获取一次免费的模拟面试机会,帮你评估知识点 ...

  7. 教程丨一文入门图像预训练模型

    作者:Dr. Dataman 译者:刘媛媛 过去三十年来,研究学者在图像识别算法和图像数据集方面做了许多工作,积累了宝贵的知识经验.如果你对图像训练感兴趣,但又不知道从何开始.那么,我希望这篇文章可以 ...

  8. 【深度学习】一文入门图像预训练模型

    作者:Dr. Dataman 译者:刘媛媛 过去三十年来,研究学者在图像识别算法和图像数据集方面做了许多工作,积累了宝贵的知识经验.如果你对图像训练感兴趣,但又不知道从何开始.那么,我希望这篇文章可以 ...

  9. Paddle预训练模型应用工具PaddleHub

    Paddle预训练模型应用工具PaddleHub • 本文主要介绍如何使用飞桨预训练模型管理工具PaddleHub,快速体验模型以及实现迁移学习.建议使用GPU环境运行相关程序,可以在启动环境时,如下 ...

最新文章

  1. 通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域
  2. oc5480十六进制_oc 数据类型 | 学步园
  3. 如何查看进程的运行路径
  4. 变长参数模板 和 外部模板
  5. imsi序列号_IPhone 获取IMSI序列号
  6. 7-107 汉诺塔的非递归实现 (25 分)
  7. PX4代码解析(5)
  8. android手机分享app,Android Pie如何快捷分享文件至特定App
  9. UnityShader19:渲染纹理(上)之截屏功能实现
  10. 兔子mq框架_春天兔子MQ
  11. python樱桃小丸子_appium+python自动化框架搭建
  12. 年轻人求知欲让我想办CPU设计免费培训
  13. MaterialImageLoading
  14. AS星尘粒子系统 初识2
  15. java opencv 之人脸识别
  16. html小票表格制作,菜单小票模板word
  17. centos双网卡不能同时工作解决
  18. [MAR DASCTF明御攻防赛]enjoyit_1
  19. JS 三级联动之 省市县。
  20. HTML基础之表单提交

热门文章

  1. 在中国,混哪个“圈子”最有“钱”途?
  2. 王者荣耀扫码登录教程,扫码登录王者荣耀怎么弄?
  3. 怎样安装linux中文字体,Linux安装中文字体
  4. 【十分钟读懂系列】之什么是SLF,PSL,MLF,SLO?
  5. springmvc 采用MultipartResolver进行文件上传
  6. 论文解读4 STRM《Spatio-temporal Relation Modeling for Few-shot Action Recognition》少镜头动作识别 CVPR2022
  7. 【回归预测-FNN预测】基于粒子群优化前馈网络实现对婚姻和离婚数据回归预测附matlab代码
  8. 你需要了解的群体重测序都在这里(一)
  9. Megacli格式化显示脚本
  10. 数据采集—数据采集技术