一、比赛介绍
移动互联网时代的开启使得图片的获取与分享越来越容易,图片已经成为人们交互的重要媒介。如何根据据图像的视觉内容为图像赋予一个语义类别(例如,教室、街道等)是图像场景分类的目标,也是图像检索、图像内容分析和目标识别等问题的基础。但由于图片的尺度、角度、光照等多样性以及场景定义的复杂性,场景分类一直是计算机视觉中的一个挑战性问题。
本次比赛从400万张互联网图片中精选出8万张图片,分属于80个日常场景类别,例如航站楼、足球场等。每个场景类别包含600-1100张图片。本次比赛要求参赛选手根据图片场景数据集建立算法,预测每张图片所属的场景类别,组委会将通过计算参赛者提交预测值和场景真实值之间的误差确定预测正确率,评估所提交的预测算法。
二、赛题与数据
移动互联网时代的开启使得图片的获取与分享越来越容易,图片已经成为人们交互的重要媒介。如何根据图像的视觉内容为图像赋予一个语义类别(例如,教室、街道等)是图像场景分类的目标,也是图像检索、图像内容分析和目标识别等问题的基础。但由于图片的尺度、角度、光照等因素的多样性以及场景定义的复杂性,场景分类一直是计算机视觉中的一个挑战性问题。
本次比赛从400万张互联网图片中精选出8万张图片,分属于80个日常场景类别,例如航站楼、足球场等。每个场景类别包含600-1100张图片。本次比赛要求参赛选手根据图片场景数据集建立算法,预测每张图片所属的场景类别,组委会将通过计算参赛者提交预测值和场景真实值之间的误差确定预测正确率,评估所提交的预测算法。详细的场景类别id和中英文名称见表格1。[1][2][3]
数据集分为训练(70%)、验证(10%)、测试A(10%)与测试B(10%)四部分。
训练标注数据包含照片id和所属场景类别标签号。训练数据文件与验证数据文件的结构如下所示:
[
{
"image_id":"5d11cf5482c2cccea8e955ead0bec7f577a98441.jpg",
"label_id": 0
},
{
"image_id":"7b6a2330a23849fb2bace54084ae9cc73b3049d3.jpg",
"label_id": 11
},
...
]
我们提供场景类别标号与场景中英文名称对照,文件结构如下:
label id | Chinese label | English label |
---|---|---|
0 | 航站楼 | airport_terminal |
1 | 停机坪 | landing_field |
2 | 机舱 | airplane_cabin |
选手需以JSON格式提交预测结果。提交结果应包含照片id与所属的场景类别标号,以置信度递减的顺序提供三个预测分类的标签号。提交结果文件格式示例如下:
[
{
"image_id":"a0563eadd9ef79fcc137e1c60be29f2f3c9a65ea.jpg",
"label_id": [5,18,32]
},
{
"image_id":"b5a9a726c9d752d8ac1c722182512d33e66a6f88.jpg",
"label_id": [6,33,35]
},
...
]
三、数据集和基线模型百度云下载
官网下载数据需要报名参赛,不过现在比赛已经结束了,因此这里附上数据集和基线模型百度云下载,供大家学习和交流使用。
链接:https://pan.baidu.com/s/14m4gCIf6DzTPY2yTm-JJ5Q
密码:j0zv
四、数据集介绍
1.分别解压 ai_challenger_scene_train_20170904.zip ai_challenger_scene_validation_20170908.zip ai_challenger_scene_test_a_20170922.zip 这三个文件
2.打开ai_challenger_scene_train_20170904这个文件夹,如下图,里面我们主要会用到scene_train_images_20170904这个文件夹
里面包含了53,879张训练图片,一共3.5G
随便打开一张,模型就是学习后判断这个图片属于80个场景类中的哪一类
3.打开scene_train_annotations_20170904.json 这个文件夹,建议大家下载Notepad++,很方便的文本编辑神器。
(百度百科:Notepad++是 Windows操作系统下的一套文本编辑器有完整的中文化接口及支持多国语言编写的功能(UTF8技术)。
附上下载链接,很容易,不需要破解,直接傻瓜式下一步安装即可,
链接: https://pan.baidu.com/s/1wSAEDV4OQWHETnjlgS3I7Q
密码:oufq
而在如Ubuntu等Linux系统下是没有Notepad++这个软件的,取而代之的是Notepad qq,这个可以通过终端输入下面的命令进行下载,很方便:
sudo add-apt-repository ppa:notepadqq-team/notepadqq
sudo apt-get update
sudo apt-get install notepadqq
如下图,右键scene_train_annotations_20170904.json这个文件夹,选择打开方式,Notepad qq:
如上图,我们可以看到,整个训练集的标签放在一个list里,然后每个样本的标签都是一个dict,例如:
{"image_url":"https://n1-q.mafengwo.net/s1/M00/6B/72/wKgBm04Wc5WzFXU0AAHf09bdpiY84.jpeg?imageView2%2F2%2Fw%2F600%2Fq%2F90", "label_id": "66", "image_id": "79f993ae0858ae238b22968c5934d1ddba585ae4.jpg"},
有3对key-value:image_url是图片的url地址,label_id是图片的场景类别标签,image_id是每张图片的名称(注意有后缀.jpg)
4.同理打开ai_challenger_scene_validation_20170908 和 ai_challenger_scene_test_a_20170922这两文件夹,注意ai_challenger_scene_test_a_20170922文件夹里只有图片,没有类别标签的.json文件,因为最后是需要选手提交submit.json到官网上评估结果的,而验证集ai_challenger_scene_validation_20170908里是有.json文件的,方便选手们自己验证模型好坏。
五、基线模型简单介绍,(详细的代码和操作我会单独写成详细的博文,尽请期待):
1.解压 AI_Challenger-master.zip
2.打开Baselines文件夹
3.打开scene_classification_baseline文件夹 (其余是其他比赛的基线模型,有兴趣的同学可以自己尝试)
里面包含:1)network.py(官网提供的一个简单的AlexNet网络模型,说明了只是让你测试一下,后面自己再用其他复杂的网络改进)
2)cene.py(需要安装的库有:- TensorFlow 1.0 or greater
- opencv-python (3.2.0.7)
- Pillow (4.2.1)
训练和测试函数都定义在这里面,import了network.py和scene_input.py模块,最后将训练结果即可能性(得分)最高的3个场景类别的标签和图片的id作为dict写入submit.json,最后评估提交用)
3) scene_eval.py(定义了评估模型训练和测试结果的函数的模块,评估标准是:我们需要提交用作评估的数据结果是submit.json这个文件, 然后参考的标准结果数据集是ref.json,如果submit.json里面每张图片的id这个key对应的value有3个场景的label,只要这3个中,有一个和ref.json里面同样id图片的label一样,那这个样本我们就判断正确了。我们如果是用validation验证集进行测试的话,那这里的ref.json就改成ai_challenger_scene_validation_20170908文件夹里的scene_validation_annotations_20170908.json; 同理,如果我们如果是用test_a这个测试集进行测试的话,因为ai_challenger_scene_test_a_20170922文件夹里没有提供ref.json,因为本来是需要我们提交到官网系统进行评估结果的,所以建议这里大家就用validation验证集来检验自己的训练和测试结果就好了,毕竟比赛已经结束了)
4) scene_input.py(定义了导入图片、修正图片、批量化函数的模块)