使用 TF-Slim 设计复杂网络

技术

picture.image


TF-Slim 是一个新的轻量的 TensorFlow 高级 API(tensorflow.contrib.slim),用于定义、训练、评估复杂模型。参考材料【1】包含几个广泛使用的 CNN 图像分类模型代码,可以利用提供的脚本从头训练一个模型,或者使用预训练的网络权值微调。TF-Slim 附带下载标准图像数据集、转换为 TensorFlow 原生 TFRecord 格式、使用 TF-Slim 数据读取队列等功能,可以很方便地在公开数据集上训练任意模型,包括 GoogLeNet【2】、Inception-v2【3】、Inception-v3【4】、Inception-v4【5】以及前两篇介绍的 MobileNet(用于移动和嵌入式视觉应用的 MobileNets)和 ShuffleNet(ShuffleNet——面向移动设备的极为高效的卷积神经网络)。

GoogLeNet 曾获得 ILSVRC 2014 比赛图像分类和目标检测项目冠军,其独特的 Inception 结构为多种尺寸卷积核同时作用于前一层的 feature maps,实现多尺度特征提取。GoogLeNet 随后有多次更新【2】【3】【4】【5】,分类准确率不断提升,甚至超过人类识别极限。TF-Slim 中已有的模型和分类准确率情况如下图所示:

picture.image

一般我们直接使用预训练好的模型在自己数据集上进行 finetune 即可。

今天我们以 Inception-V4【5】 作为研究对象,学习如何利用 TF-Slim 设计复杂模型。

使用 TF-Slim 时,在代码开头写入:

import tensorflow as tf

slim = tf.contrib.slim

这样后面直接使用 slim 就能调用其 API。

Inception-V4 的完整网络结构如下图所示(来自参考文献【5】)。

picture.image

这个图里面涉及到若干 building blocks,我们一个个来研究。

首先看 Inception-A 模块:

picture.image

对应的 TF-Slim 实现代码片段如下(摘自【6】):

picture.image

picture.image

接着看 Inception-B 模块:

picture.image

对应的 TF-Slim 实现代码片段如下(摘自【6】):

picture.image

picture.image

继续看 Inception-C 模块:

picture.image

对应的 TF-Slim 实现代码片段如下(摘自【6】):

picture.image

picture.image

可见 Inception-A/B/C 模块的网络超参数设置与论文中一致,共重复了 4 个 Inception-A 、7个 Inception-B、3 个 Inception-C。

其他模块(Stem、Reduction-A/B)读者可以自行对比下。

通过学习 TF-Slim 可以轻松地构建结构极其复杂的网络,能打消对新网络结构的“恐惧”感。

参考文献

【1】https://github.com/tensorflow/models/tree/master/slim

【2】 C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 1–9, 2015.

【3】S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In Proceedings of The 32nd International Conference on Ma- chine Learning, pages 448–456, 2015.

【4】C.Szegedy,V.Vanhoucke,S.Ioffe,J.Shlens,andZ.Wojna. Rethinking the inception architecture for computer vision. arXiv preprint arXiv:1512.00567, 2015.

【5】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

【6】 https://github.com/tensorflow/models/blob/master/slim/nets/inception\_v4.py


如果你觉得本文对你有帮助,请关注公众号,将来会有更多更好的文章推送!

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 GPU Scale-up 互联技术白皮书
近日,字节跳动正式发布基于以太网极致优化的 GPU Scale-up 互联技术白皮书,推出 EthLink 的创新网络方案,旨在为 AI 集群提供低延迟、高带宽的高速互联传输,满足 AI 应用对 GPU 之间高效通信的需求。这一举措标志着字节跳动在 AI 基础设施领域的突破,有望推动通用人工智能(AGI)和大语言模型(LLM)的进一步发展。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论