ImageNet数据集下载与处理

ImageNet数据集是当前图像处理界最有名的数据集之一,本文将介绍将数据集下载,并转换为TFCode的全过程。

环境搭建

我们需要程序将数据集转化为TensorFlow可以处理的TFCode形式,我们默认电脑环境支持TensorFlow的运行。新建一个文件夹,之后将下面的项目clone到本地。

tensorflow/modelsgithub.com《ImageNet数据集下载与处理》

进入 models/research/inception/inception/data/ 路径,之后下载的文件都需要放入这个路径中。

注册

ImageNet是一个不可用于商业目的的数据集,用户下载的话需要通过提交申请,而提交申请的方式是通过edu邮箱认证信息。(一般的邮箱是不会被通过的)

ImageNetwww.image-net.org《ImageNet数据集下载与处理》

点击进入官网,选择右上角的Signup,进入注册界面。

《ImageNet数据集下载与处理》
《ImageNet数据集下载与处理》

输入个人信息,点击人机身份验证,之后注册成功。值得注意的是,非edu邮箱也能注册成功,但是是无法下载原始图像数据集的。

《ImageNet数据集下载与处理》
《ImageNet数据集下载与处理》

按要求登录之后,需要我们向ImageNet官网提交申请,建议如实填写各项信息。

《ImageNet数据集下载与处理》
《ImageNet数据集下载与处理》

点击Update,如果你正确填写了edu邮箱信息的话,你会收到一封验证邮件,点开之后就能获得权限下载数据集了。

下载

我们回到主页,点击Download,选择Download Original Images。

《ImageNet数据集下载与处理》
《ImageNet数据集下载与处理》

会出现历年的数据集,我们选用经典的ILSVRC2012作为实例。

《ImageNet数据集下载与处理》
《ImageNet数据集下载与处理》

我们需要下载三个文件:

  • Training images (Task 1 & 2). 138GB.
  • Validation images (all tasks). 6.3GB.
  • Training bounding box annotations (Task 1 & 2 only). 20MB.

神奇的是这个文件太大,迅雷会员用不了,甚至会报错导致下载失败,所以我们需要一个下载器下载,这里我们选用的是Internet Download Manager(IDM)下载器,这个下载器支持续传和多线程下载。

《ImageNet数据集下载与处理》
《ImageNet数据集下载与处理》

不过ImageNet官网不建议使用多线程下载加速,不然会被封号。所以还是慢慢下载,猥琐发育。笔者以3M/s的速度,大概24小时就下好了。

转化

将三个文件下载好之后,我们将三个文件统一放入models/research/inception/inception/data/ 路径下,之后运行脚本。

mkdir -p ILSVRC2012
mkdir -p ILSVRC2012/raw-data
mkdir -p ILSVRC2012/raw-data/imagenet-data
mkdir -p ILSVRC2012/raw-data/imagenet-data/bounding_boxes
mv ILSVRC2012_bbox_train_v2.tar.gz ILSVRC2012/raw-data/imagenet-data/bounding_boxes/
tar xvf ILSVRC2012/raw-data/imagenet-data/bounding_boxes/ILSVRC2012_bbox_train_v2.tar.gz -C ILSVRC2012/raw-data/imagenet-data/bounding_boxes/
NUM_XML=$(ls -1 ILSVRC2012/raw-data/imagenet-data/bounding_boxes/* | wc -l)
echo "Identified ${NUM_XML} bounding box annotations."
mkdir -p ILSVRC2012/raw-data/imagenet-data/validation/
tar xf ILSVRC2012_img_val.tar -C ILSVRC2012/raw-data/imagenet-data/validation/
mkdir -p ILSVRC2012/raw-data/imagenet-data/train/
mv ILSVRC2012_img_train.tar ILSVRC2012/raw-data/imagenet-data/train/ && cd ILSVRC2012/raw-data/imagenet-data/train/
tar -xvf ILSVRC2012_img_train.tar && rm -f ILSVRC2012_img_train.tar 
find . -name "*.tar" | while read NAE ; do mkdir -p "${NAE%.tar}"; tar -xvf "${NAE}" -C "${NAE%.tar}"; rm -f "${NAE}"; done 
cd .. && cd .. && cd .. && cd ..
 
python preprocess_imagenet_validation_data.py ILSVRC2012/raw-data/imagenet-data/validation/ imagenet_2012_validation_synset_labels.txt
#这一步应将preprocess_imagenet_validation_data.py里面的JPEG改为jpeg
python process_bounding_boxes.py ILSVRC2012/raw-data/imagenet-data/bounding_boxes/ imagenet_lsvrc_2015_synsets.txt | sort > ILSVRC2012/raw-data/imagenet_2012_bounding_boxes.csv
#这一步应将process_bounding_boxes.py里面的JPEG改为jpeg
python build_imagenet_data.py --train_directory=ILSVRC2012/raw-data/imagenet-data/train/ --validation_directory=ILSVRC2012/raw-data/imagenet-data/validation/ --output_directory=ILSVRC2012/ --imagenet_metadata_file=imagenet_metadata.txt --labels_file=imagenet_lsvrc_2015_synsets.txt --bounding_box_file=ILSVRC2012/raw-data/imagenet_2012_bounding_boxes.csv
#这一步应将build_imagenet_data.py里面的JPEG改为jpeg

代码出处

之后就可以等待执行完成了,至此大功告成。

    原文作者:博皓
    原文地址: https://zhuanlan.zhihu.com/p/42696535
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞