【C++ Caffe】Ubuntu下快速创建训练集标签&&图片列表清单(生成LISTFILE.txt)

如果图片已经下载到本地的电脑上了,首先需要创建的就是图片列表清单(LISTFILE),并将其保存为txt格式。

1.编写shell脚本

以caffe程序中自带的图片为例进行讲解,图片在caffe下的目录是/examples/images,里面有4张图片,选择cat.jpg和fish_bike.jpg分别表是两个类别。

接下来创建一个sh脚本文件,调用Linux命令生成图片清单:

lichunlin@ThinkPad-T420:~$ cd caffe/
lichunlin@ThinkPad-T420:~/caffe$ cd examples/
lichunlin@ThinkPad-T420:~/caffe/examples$ cd images
lichunlin@ThinkPad-T420:~/caffe/examples/images$ sudo vim create_filelist.sh

此处若提示没有vim命令,则先安装vim

sudo apt-get install vim

sudo vim create_filelist.sh执行以后会出现如下界面

在这里插入图片描述首先键盘按字母i,开始插入以下代码:

# /usr/bin/env sh
DATA=/home/lichunlin/caffe/examples/images     #这个是我电脑中图片的根目录
echo "Create train.txt"
rm -rf $DATA/train.txt
echo "finding...."
find $DATA -name *cat.jpg | cut -d '/' -f7 | sed "s/$/ 0/">>$DATA/train.txt
find $DATA -name *bike.jpg | cut -d '/' -f7 | sed "s/$/ 1/">>$DATA/tmp.txt
echo "find over..."
cat $DATA/tmp.txt>>$DATA/train.txt
rm -rf $DATA/tmp.txt
echo "Done.." 

输入完成后,先按esc,然后输入冒号“:”,再输入 “wq!” (感叹号别忘了) 回车即可

晚上上述操作后,输入以下代码即可执行这一脚本,即可得到训练的文件列表。

lichunlin@ThinkPad-T420:~/caffe/examples/images$ sh create_filetext.sh 

2.使用的Linux命令简介

命令名称命令含义
rm删除文件
find寻找文件
cut截取路径
sed在每行最后加上标注。本例中是将找到的“*cat.jpg”文件加入标注为0,找到的“*bike.jpg”文件加入标注为1
cat将两个类别合并到一个文件里

生成文件结果

执行脚本以后,最终生成如下的一个train.txt文件:
在这里插入图片描述这里的执行结果若显示为其他形式,如:

example 0
example 1

这种形式,则说明截取路径有问题,即cut命令用的有问题,cut命令的使用可以参考我的这篇博客:博客链接

这里需要特别提示一下的是,类别标签需要从0开始,因为C++中数组总是从0开始的,Caffe利用这一特性将类别和数组的索引结合在一起,否则就会训练不出来。

当然,当图片很少的时候,手动编写这个列表清单就可以了,但在图片很多的情况下,就需要用脚本文件来自动生成了。在以后的实际应用中,还需要对应的val.txt和test.txt文件,方法都是一样的。在训练中,val.txt称为训练集,test.txt称为测试集。

生成的这个train.txt文件,可以作为第三个参数直接使用。执行过后就拥有了一个训练集的数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值