昨天午饭时分,营长注意到Kaparthy小哥(特斯拉AI主管、马斯克红人、李飞飞高徒)的Twitter活跃了起来:
大意是说,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模型,其节点参数是可用的,模型的分类精度是通过评估单幅图像计算出来的,数值如下表:
关于如何下载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参观一圈?
精彩推荐
“GANs 之父”Goodfellow亲身传授:深度学习未来的8大方向和入门AI必备的三大技能
四个月速成全栈机器学习?这位黑人小哥三个半月就开始找工作了
什么!你竟然还不懂变分自编码机?这个16岁的OpenAI天才实习生讲得可透彻了
牛!他本科没毕业就进入Google Brain,还发表了最火的深度学习顶级论文...
13岁自学编程,16岁发布游戏被小扎看中,19岁成脸书最年轻工程师,如今跳槽谷歌只为了...
他在Google Brain实习了一年,总结出这么些心得
关于程序员转型AI这件事,三位老炮从产业、人才和实操跟你聊了这么些干货
如何跨领域成为一位人工智能工程师?