专栏首页相约机器人RoomNet - 一个轻量级的ConvNet(700 KB)

RoomNet - 一个轻量级的ConvNet(700 KB)

卷积神经网络对房屋/公寓的不同房间的图片进行分类,在1839幅图像上具有88.9%的验证准确度。

GitHub链接

https://github.com/ironhide23586/RoomNet

完整演示文稿

https://github.com/ironhide23586/RoomNet/raw/master/documentation/RoomNet%20Presentation.pptx

这是一个自定义神经网络,我将输入图像分类为以下6个类之一(按其类ID的顺序) -

  • 后院
  • 浴室
  • 卧室
  • 前院
  • 厨房
  • 客厅

建筑

建筑模块

完整的网络架构

开箱即用的推论

infer.py中的优化推理代码。请参阅main方法中调用classify_im_dir方法的短代码。

训练

  • 输入图像尺寸= 224 x 224(试用300 x 300,600 x 600)
  • Softmax交叉熵损失与L2权重标准化一起使用
  • 学习率从0(最初)到0.3(间歇性地接近训练结束)变化。每个块后放置辍学图层。
  • 批量标准化移动装置和变量在受到辍学训练时被冻结
  • Adam Optimizer使用指数学习率衰减。
  • 最初使用BatchNorm移动装置/ vars的批量计算进行训练。通过训练网,通过禁用此计算并在训练期间使用冻结手段/变量来跟随此。导致验证准确率立即上升10%。
  • 批量大小从8(从开始)到45(向训练结束)变化为-8-> 32-> 40-> 45
  • 异步数据读取器采用基于队列的架构设计,即使批量较大,也可在训练期间实现快速数据I / O.

转换为推理优化版本

  • 从Tensorflow图中丢弃所有反向传播/训练相关的计算节点。
  • 模型大小从~2 MB减少到~800 KB。
  • network.py包含定义名为“RoomNet”的模型的类
  • 输出是一个excel文件,将每个图像路径映射到其标签。还可以将输入目录拆分为与类名对应的目录,并自动填充相应目录中的相关图像。

训练环境

  • 在拥有8GB GPU内存的NVIDIA GTX 1070笔记本级GPU上使用Tensorlfow + CUDA 10.0 + cuDNN进行的训练
  • 使用的计算系统是Alienware m17 r4。
  • 使用的CPU是Intel Core i7 - 6700HQ,具有8个逻辑内核,基本速率为2.6 GHz(turbo boost至~3.3 GHz)
  • 从头开始到达最佳模型的训练步骤数量为157,700。
  • 花在训练上的时间 - 约48小时

以前的方法尝试过

  • 尝试训练最终密集的NASnet移动,但准确度从未超过60%。
  • 尝试与InceptionV3一样,但收敛太长了。

表现图

验证准确性

验证分类F-Score

验证分类精度

验证分类回忆

本文分享自微信公众号 - 相约机器人(xiangyuejiqiren),作者:代码医生

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 重回榜首的BERT改进版开源了,千块V100、160GB纯文本的大模型

    BERT 自诞生以来就展现出了卓越的性能,GLUE 排行榜上前几名的模型一度也大多使用 BERT。然而,XLNet 的横空出世,打破了 BERT 的纪录。不过,...

    代码医生工作室
  • 用fastai和Render进行皮肤癌图像分类

    在构建和部署模型以对皮肤病变图像进行分类时,将逐步进行。完成后用户可以将图像上传到网站,模型将对皮肤病变进行分类。

    代码医生工作室
  • 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训练模型

    旗下顶级AI实验室腾讯优图,对外开源了腾讯首个医疗AI项目——深度学习预训练模型MedicalNet。

    代码医生工作室
  • 超级强大的vim配置(vimplus)

    最近在重新配置Vim,也在GitHub上找了三个star和fork数目很高的方案,在这里分享给大家: https://github.com/amix/vimr...

    _gongluck
  • vim 乱码

    用户2657851
  • iOS之手把手教你学会使用sqlite,并应用于实际开发

    小蠢驴打代码
  • Caffe学习系列(23):如何将别人训练好的model用到自己的数据上

    http://www.cnblogs.com/denny402/p/5137534.html

    bear_fish
  • 零基础html5+div+css+js网页开发教程第005期 hbuilder网站开发环境搭建

    欢迎小伙伴继续观看网页开发教程。该教程是基础有简单计算机基础,但是却没有网页开发基础的同学使用的。如果您毫无计算机基础,对于本教程的使用还是会有一点的难度。

    刘金玉编程
  • Linux下批量重命名文件名为数字索引编号(0~N.xxx)的方法

    在处理一些数据集的时候,我们经常会碰到数据集的文件名是按时间戳(time stamp),或者其他方式命名的文件,比如下图所示:

    用户1148525
  • TCPDump + Wireshark 抓包分析数据学习

    TCPDump简介:TCPDump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑...

    用户7557625

扫码关注云+社区

领取腾讯云代金券