zoukankan      html  css  js  c++  java
  • 基于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/

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

  • 相关阅读:
    NOI2015刷题记录
    [WC2013][UOJ58]糖果公园 莫队算法
    啦啦啦~
    完全平方数
    构建之法
    测试更新
    程序的测试
    程序的封装
    构建之法5.5-6-7章观后感
    给徐侃童鞋的一个汉堡
  • 原文地址:https://www.cnblogs.com/nwpuxuezha/p/6140704.html
Copyright © 2011-2022 走看看