基于MXNet使用自己的图像数据集训练网络--准备数据与撰写预处理脚本

课程多,科研任务重…但还是要保持热情。


MXNet是一款简洁高效的深度学习框架。在准备好自己的数据集之后,我们就可以考虑使用MXNet自带的工具进行数据集打包了。

 

以caltech256数据集为例,caltech256数据集包含256类目标,30607张图像。数据集的简介可以在这里下载:http://authors.library.caltech.edu/7694/

在获取数据集之后,把数据集文件 256_ObjectCategories.tar 放在 your_mxnet_root/example/image-classification/data/ 目录下

cd ~/mxnet/example/image-classification/data/

./caltech256.sh 即可完成打包操作。

caltech数据集文件树比较简单,只有两层,分别是类别与类别包含的图像

256_ObjectCategories

----005.baseball-glove

--------005_0008.jpg

打包脚本比较简单,不熟悉shell或之前根本没用过shell也没关系,我加了些简单的注释,应用于自己的数据集时只要改改参数就可以了:

 1 #!/bin/bash
 2 
 3 # This file download the caltech 256 dataset
 4 # (http://www.vision.caltech.edu/Image_Datasets/Caltech256/), and split it into
 5 # the train and val rec files.
 6 
 7 # number of images per class for training
 8 IMG_TRAIN=60
 9 
10 # download
11 # 使用 -e 指令判断文件是否存在
12 if [ ! -e 256_ObjectCategories.tar ]; then
13     # 使用wget指令下载数据,这里也可以换作其他工具
14     wget http://www.vision.caltech.edu/Image_Datasets/Caltech256/256_ObjectCategories.tar
15 fi
16 
17 # split into train and val set
18 # 解压
19 tar -xf 256_ObjectCategories.tar
20 TRAIN_DIR=caltech_256_train
21 # mkdir -p 支持创建多级目录,目录存在时跳过而不报错
22 mkdir -p ${TRAIN_DIR}
23 for i in 256_ObjectCategories/*; do
24     c=`basename $i`
25     echo "spliting $c"
26     mkdir -p ${TRAIN_DIR}/$c
27     # 使用管道,把文件夹中的jpg文件乱序,拿出前60个作为训练集
28     for j in `ls $i/*.jpg | shuf | head -n ${IMG_TRAIN}`; do
29         mv $j ${TRAIN_DIR}/$c/
30     done
31 done
32 
33 # generate lst files
34 # 获取当前文件夹
35 CUR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
36 # 获取MXNet根目录
37 MX_DIR=${CUR_DIR}/../../../
38 # 生成list文件
39 python ${MX_DIR}/tools/im2rec.py --list True --recursive True caltech256-train ${TRAIN_DIR}/
40 python ${MX_DIR}/tools/im2rec.py --list True --recursive True caltech256-val 256_ObjectCategories/
41 # 移动指令 mv
42 mv caltech256-train_train.lst caltech256-train.lst
43 # 删除指令 rm
44 rm caltech256-train_*
45 mv caltech256-val_train.lst caltech256-val.lst
46 rm caltech256-val_*
47 
48 # generate rec files
49 # 生成训练文件
50 python ${MX_DIR}/tools/im2rec.py --resize 256 --quality 90 --num-thread 16 caltech256-val 256_ObjectCategories/
51 python ${MX_DIR}/tools/im2rec.py --resize 256 --quality 90 --num-thread 16 caltech256-train ${TRAIN_DIR}/
52 
53 # clean
54 rm -rf ${TRAIN_DIR} 256_ObjectCategories/

如果您觉得这篇博客有一定帮助,打赏一下吧!

 

posted @ 2016-12-07 12:37  法师漂流  阅读(952)  评论(0编辑  收藏  举报