一个TensorFlow的新模型,Kaparthy小哥用了都说好
Posted AI科技大本营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个TensorFlow的新模型,Kaparthy小哥用了都说好相关的知识,希望对你有一定的参考价值。
昨天午饭时分,营长注意到Kaparthy小哥(特斯拉AI主管、马斯克红人、李飞飞高徒)的Twitter活跃了起来:
大意是说,Google一周前给TensorFlow增加的新模型NASNet让人很是兴奋。
https://github.com/tensorflow/models/tree/master/research/slim/nets/nasnet
这个代码分析起来比较难,但实现出来的模型是相当好用的,它在速度和准确度之间的取舍之道令人印象深刻。
看到此处,营长顿感此模型定是高手所为。
果不其然,在TensorFlow的GitHub页面,Google是这么说的:
该目录所包含的是NASNet模型的代码,这个模型出自Zoph等人的论文:Learning Transferable Architectures for Scalable Image Recognition(通过学习可迁移结构实现具有可扩展性的图像识别任务)。
该目录的nasnet.py文件,包含有三种不同配置的NASNet模型实现。其中NASNet-A是基于CIFAR-10数据集的模型,而另外两个模型则是NASNet-A基于ImageNet数据集的变体。
看来要查查"Learning Transferable Architectures for Scalable Image Recognition"这篇论文,一查才知道论文作者是Google Brain的四位大牛Barret Zoph, Vijay Vasudevan, Jonathon Shlens, Quoc V. Le。其中Quoc V. Le还是吴恩达的得意门生。
该论文于7月21日提交的初版,10月25日刚刚更新第二版,目测是为该TensorFlow模型的上线做准备。
该模型的使用介绍详述如下:
预训练模型
在ILSVRC-2012-CLS图像分类数据库上训练出来的两个NASNet-A模型,其节点参数是可用的,模型的分类精度是通过评估单幅图像计算出来的,数值如下表:
关于如何下载NASNet-A_Mobile_224模型节点参数,命令行代码如下所示,NASNet-A_Large_331模型的下载方式与之类似。
CHECKPOINT_DIR=/tmp/checkpoints
mkdir ${CHECKPOINT_DIR}
cd ${CHECKPOINT_DIR}
wget https://storage.googleapis.com/download.tensorflow.org/models/nasnet-a_mobile_04_10_2017.tar.gz tar -xvf nasnet-a_mobile_04_10_2017.tar.gz
rm nasnet-a_mobile_04_10_2017.tar.gz
在TF-Slim图像分类库中得到更多关于如何将NASNet模型与自己项目相结合的信息:
https://github.com/tensorflow/models/blob/master/research/slim/README.md
要在设备上运行这些模型,需要在移动端上安装Tensorflow
https://www.tensorflow.org/mobile/
使用该模型进行推断的代码样例
测试NASNet模型—一个移动端的ImageNet模型
DATASET_DIR=/tmp/imagenet
EVAL_DIR=/tmp/tfmodel/eval
CHECKPOINT_DIR=/tmp/checkpoints/model.ckpt
python tensorflow_models/research/slim/eval_image_classifier \
--checkpoint_path=${CHECKPOINT_DIR} \
--eval_dir=${EVAL_DIR} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=imagenet \
--dataset_split_name=validation \
--model_name=nasnet_mobile \
--eval_image_size=224 \
--moving_average_decay=0.9999
测试NASNet模型—一个大型的ImageNet模型
DATASET_DIR=/tmp/imagenet
EVAL_DIR=/tmp/tfmodel/eval
CHECKPOINT_DIR=/tmp/checkpoints/model.ckpt
python tensorflow_models/research/slim/eval_image_classifier \
--checkpoint_path=${CHECKPOINT_DIR} \
--eval_dir=${EVAL_DIR} \
--dataset_dir=${DATASET_DIR} \
--dataset_name=imagenet \
--dataset_split_name=validation \
--model_name=nasnet_large \
--eval_image_size=331 \
--moving_average_decay=0.9999
很快,就有人觉得TensorFlow的官方部署方法太笨了,Teahoon Lee立刻贴上了自己前一天刚刚优化出来的方法:
https://github.com/taehoonlee/tensornets/blob/master/tensornets/nasnets.p
y
Kaparthy小哥立刻表示,”干得漂亮!“
不过,TensorFlow有了新模型,PyTorch自然也不甘落后,几小时后,Remi Cadene就给出了该模型的Pytorch实现:
https://github.com/Cadene/pretrained-models.pytorch/blob/master/pretrainedmodels/nasnet.py
对于TensorFlow的原始代码,这两位小哥均表示太难读了,他们都是使用tensorboard工具才写好的新代码。
而计算机视觉全栈工程师、TenDozen创始人Jared则就此专门 @ Kaparthy小哥:我发现,绝大部分出自于论文的新模型,需要相当多的调教才能适用于工业级生产环境。但聊胜于无,至少我们现在是有了一个全新的模型。
从论文概念到实际部署,耗时不到4个月的NASNet,用时应当算是很短了。但是,鉴于Kaparthy小哥都说这代码很难,想必该模型距离部署到Tesla的自动驾驶平台,还是有一段路要走的。
另外,成功引起Kaparthy注意的那两位小哥,你们要不要来Tesla参观一圈?
精彩推荐
以上是关于一个TensorFlow的新模型,Kaparthy小哥用了都说好的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow:您如何在模型训练期间实时监控 GPU 性能?
TensorFlow新文档发布:新增CLPDTensor...最先进的模型已就绪
Tensorflow Eager Execution - 计算顺序模型两层之间的梯度