ImageNet
"ImageNet改变了AI领域人们对数据集的认识,人们真正开始意识到它在研究中的地位,就像算法一样重要!"
ImageNet项目是一个用于视觉对象识别软件研究的大型可视化数据库,目前是一个超过15 million的图像数据集,大约有22,000类。这个项目是由李飞飞团队从2007年开始,耗费大量人力,通过各种方式(网络抓取,人工标注,亚马逊众包平台)收集制作而成,它作为论文在CVPR-2009发布。
当时人们还很怀疑通过更多数据就能改进算法的看法。深度学习发展起来有几个关键的因素,一个就是庞大的数据(比如说ImageNet),一个是GPU的出现,还有更优的深度模型,更好的优化算法。可以说数据和GPU推动了这些的产生,这些产生继续推动深度学习的发展。
ImageNet挑战赛
自2010年以来,ImageNet项目每年举办一次软件比赛,即ImageNet大规模视觉识别挑战赛(ILSVRC),到2017年后截止。
比赛项目包括:图像分类(Classification)、目标定位(Object localization)、目标检测(Object detection)、视频目标检测(Object detection from video)、场景分类(Scene classification)、场景解析(Scene parsing)
2012年在解决ImageNet挑战方面取得了巨大的突破,被广泛认为是2010年的深度学习革命的开始。2012-2015年期间在ImageNet比赛上提出的一些经典网络,包括AlexNet,ZFNet,OverFeat,VGG,Inception,ResNet。
Inception网络
Inception网络又叫做GoogLeNet。2012年AlexNet赢得ImageNet挑战赛后,直到GoogLeNet出来之前,主流的网络结构突破大致是网络更深(层数),但是纯粹的增大网络的缺点:1.参数太多,容易过拟合,若训练数据集有限;2.网络越大计算复杂度越大,难以应用;3.网络越深,梯度越往后穿越容易消失(梯度弥散),难以优化模型。Inception就是在这样的情况下应运而生。
Inception 网络是复杂的(需要大量工程工作)。它使用大量 trick 来提升性能,包括速度和准确率两方面。它的不断进化带来了多种 Inception 网络版本的出现。常见的版本有:
- Inception v1
- Inception v2 和 Inception v3
- Inception v4 和 Inception-ResNet
Inception具体原理参考https://my.oschina.net/u/876354/blog/1637819。
基于Inception-v3模型的图像分类器
谷歌在大型图像数据库ImageNet上训练好了一个Inception-v3模型,这个模型可以直接用来进行图像分类。
使用tensorflow提供的classify_image进行图像分类:
1.安装tensorflow环境,可以使用tensorflow提供的Docker镜像快速搭建环境:
//下载 # docker pull tensorflow/tensorflow:1.13.1-py3 //CPU版本 # docker pull tensorflow/tensorflow:1.13.1-gpu-py3 //GPU版本
//启动 # docker run -ti tensorflow/tensorflow:1.13.1-py3 bash |
2.在tensorflow环境下载示例代码执行
# wget https://github.com/tensorflow/models/blob/master/tutorials/image/imagenet/classify_image.py # python classify_image.py |
这个示例代码会下载训练好的Inception-v3模型,同时下载一张熊猫照片进行识别分类,下载目录在/tmp/imagenet/
- nception-2015-12-05.tgz:模型压缩包
- classify_image_graph_def.pb:训练好的Inception-v3模型
- imagenet_2012_challenge_label_map_proto.pbtxt
- imagenet_synset_to_human_label_map.txt:类别文件,共包含2万多种类别
- cropped_panda.jpg :熊猫图片
执行结果:
# python classify_image.py giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107) indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779) lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296) custard apple (score = 0.00147) earthstar (score = 0.00117) |
另外也可以训练自己的模型,参考https://www.jianshu.com/p/acb681e9b68a
参考
- https://baike.baidu.com/item/ImageNet/17752829?fr=aladdin
- https://www.cnblogs.com/liaohuiqiang/p/9609162.html
- http://baijiahao.baidu.com/s?id=1601882944953788623&wfr=spider&for=pc