caffe 使用shell自动生成train.txt & val.txt

来源:互联网 发布:最新3d网络游开服时间 编辑:程序博客网 时间:2024/05/17 08:42

使用自己的数据集“煮caffe”时候需要生成train.txt 和 val.txt。但是,没有找到一个有效的方法。今天跟大家分享一下使用shell自动生成train.txt 和 val.txt


脚本没有容错性 谨慎使用 勿喷
无原理,看步骤。


1 数据集格式要求

文件布局
这样布局也是caffe的要求,shell 下边会贴出来或者→shell脚本下载地址
这里写图片描述

train中
这里写图片描述

train文件夹下的图片
这里写图片描述

val中结构
说明: val需要有train一致的结构外,还需要把各个文件中的图片,复制到val文件下。
这里写图片描述

2 Shell 代码

filepath2txt.sh

#!/usr/bin/env sh# 说明 # dictionary: train{d1{f1,f2,...},d2{f1,f2,...},...} val{d1{f11,f12,...},d2{f21,f22,...},.... f11,f12,.....,f21,f2,...,....}# train#    -d1#       f1.jpeg#       f2.jpeg#       f3.jpeg#       f4.jpeg#       ....#    -d2#       f1.jpeg#       f2.jpeg#       f3.jpeg#       f4.jpeg#       ....#    ...# val#    -d1#    -d2#    ...#    all images in di need copy to val/ again.rm -f train.txtrm -f val.txtecho "filepath2traintxt"sh ./filepath2traintxt.shecho "Done"echo "filepath2valtxt"sh ./filepath2valtxt2.shecho "Done"

filepath2traintxt.sh

#!/usr/bin/env sh# 深度遍历deepls(){    for x in "$1/"*    do         #echo $x        if [ -f $x ]        then            echo $x $I|cut -d '/' -f3-4 >> $NAME        fi        if [ -d $x ]        then            (deepls "$x")            I=`expr $I + 1`        fi    done}I=0DEST_PATH="./train"NAME="./train.txt"deepls $DEST_PATH

filepath2valtxt2.sh

#!/usr/bin/env sh# 深度遍历deepls(){    for x in "$1/"*    do         #echo $x        if [ -f $x ]        then            echo $x $I|cut -d '/' -f4-5 >> $NAME        fi        # if [ -d $x] error        done}deep(){    for x in "$1/"*    do        if [ -d $x ]        then            deepls "$x"            I=`expr $I + 1`        fi    done}I=0DEST_PATH="./val"NAME="./val.txt"deep $DEST_PATH

3 结果展示

结果列表

2 0
原创粉丝点击