一个TensorFlow的新模型,Kaparthy小哥用了都说好

一个TensorFlow的新模型,Kaparthy小哥用了都说好


昨天午饭时分,营长注意到Kaparthy小哥(特斯拉AI主管、马斯克红人、李飞飞高徒)的Twitter活跃了起来:


一个TensorFlow的新模型,Kaparthy小哥用了都说好


大意是说,Google一周前给TensorFlow增加的新模型NASNet让人很是兴奋。


NASNet的GitHub地址

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模型,其节点参数是可用的,模型的分类精度是通过评估单幅图像计算出来的,数值如下表:


一个TensorFlow的新模型,Kaparthy小哥用了都说好


关于如何下载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


一个TensorFlow的新模型,Kaparthy小哥用了都说好


Kaparthy小哥立刻表示,”干得漂亮!“


不过,TensorFlow有了新模型,PyTorch自然也不甘落后,几小时后,Remi Cadene就给出了该模型的Pytorch实现:


https://github.com/Cadene/pretrained-models.pytorch/blob/master/pretrainedmodels/nasnet.py


一个TensorFlow的新模型,Kaparthy小哥用了都说好


对于TensorFlow的原始代码,这两位小哥均表示太难读了,他们都是使用tensorboard工具才写好的新代码。


一个TensorFlow的新模型,Kaparthy小哥用了都说好


而计算机视觉全栈工程师、TenDozen创始人Jared则就此专门 @ Kaparthy小哥:我发现,绝大部分出自于论文的新模型,需要相当多的调教才能适用于工业级生产环境。但聊胜于无,至少我们现在是有了一个全新的模型。


一个TensorFlow的新模型,Kaparthy小哥用了都说好


从论文概念到实际部署,耗时不到4个月的NASNet,用时应当算是很短了。但是,鉴于Kaparthy小哥都说这代码很难,想必该模型距离部署到Tesla的自动驾驶平台,还是有一段路要走的。


另外,成功引起Kaparthy注意的那两位小哥,你们要不要来Tesla参观一圈?



精彩推荐


“GANs 之父”Goodfellow亲身传授:深度学习未来的8大方向和入门AI必备的三大技能

四个月速成全栈机器学习?这位黑人小哥三个半月就开始找工作了

什么!你竟然还不懂变分自编码机?这个16岁的OpenAI天才实习生讲得可透彻了

牛!他本科没毕业就进入Google Brain,还发表了最火的深度学习*论文...

13岁自学编程,16岁发布游戏被小扎看中,19岁成脸书最年轻工程师,如今跳槽谷歌只为了...

他在Google Brain实习了一年,总结出这么些心得

关于程序员转型AI这件事,三位老炮从产业、人才和实操跟你聊了这么些干货

如何跨领域成为一位人工智能工程师?


一个TensorFlow的新模型,Kaparthy小哥用了都说好