Windows下如何利用caffe自带的convert_imageset.exe工具制作数据集

Windows下如何利用caffe自带的convert_imageset.exe工具制作数据集

1. 前言

网上的教程绝大多数通过shell脚本调用convert_imageset.exe来制作数据集,可是对于windows下的用户来说使用shell并不是很方便,本文是通过batch文件(当然直接用 cmd 命令也ok)调用convert_imageset.exe来制作数据集。

2. convert_imageset.exe

工具在 .\caffe\build\tools\Release 目录下,如果想详细了解这个 exe 是如何工作的,可以参考 convert_imageset.cpp。
[外链图片转存失败(img-U4HCtIlX-1562080291005)(2019-07-02-22-43-55.png)]

调用 convert_imageset.exe 的命令如下:
convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME

命令很简单总共就四个参数:

  • convert_imageset
    convert_imageset.exe的路径,比如C:\Projects\caffe\build\tools\Release\convert_imageset.exe

  • ROOTFOLDER/
    图像数据集的目录(文件夹),比如F:\ComputerVision\ClassMaterial\Class9\ZnCar_multi-task_classification\Train/。
    特别需要注意的是后面的“/”,最好是带上,当然不带也有办法,只是在生成 list 的时候需要做处理,会麻烦很多。

  • LISTFILE DB_NAME
    对应图像数据集的list的路径,比如F:\ComputerVision\ClassMaterial\Class9\ZnCar_multi-task_classification\TrainLabel.txt, 这里需要注意的是list 的格式如下。

    [外链图片转存失败(img-Wqgzl0Ir-1562080291007)(2019-07-02-22-46-41.png)]

  • [FLAGS]
    这个其实是一组可选参数,常用的如下。
    gray:bool类型,默认为false,如果设置为true,则代表将图像当做灰度图像来处理,否则当做彩色图像来处理
    shuffle:bool类型,默认为false,如果设置为true,则代表将图像集中的图像的顺序随机打乱
    backend:string类型,可取的值的集合为{“lmdb”, “leveldb”},默认为"lmdb",代表采用何种形式来存储转换后的数据
    resize_width:int32的类型,默认值为0,如果为非0值,则代表图像的宽度将被resize成resize_width
    resize_height:int32的类型,默认值为0,如果为非0值,则代表图像的高度将被resize成resize_height
    check_size:bool类型,默认值为false,如果该值为true,则在处理数据的时候将检查每一条数据的大小是否相同
    encoded:bool类型,默认值为false,如果为true,代表将存储编码后的图像,具体采用的编码方式由参数encode_type指定
    encode_type:string类型,默认值为"",用于指定用何种编码方式存储编码后的图像,取值为编码方式的后缀(如’png’,‘jpg’,…)
    比如 --gray=false --resize_width=500 --resize_height=500 --backend=lmdb,这里是生成的lmdb, 如果是leveldb,改为leveldb就是了。

3. batch 文件

建立一个 cmd.bat 的文件,输入如下的命令


if exist "F:\ComputerVision\ClassMaterial\Class9\ZnCar_multi-task_classification\TrainLabel.txt" rd /s /q F:\ComputerVision\ClassMaterial\Class9\ZnCar_multi-task_classification\TrainImage

C:\Projects\caffe\build\tools\Release\convert_imageset.exe --gray=false --resize_width=500 --resize_height=500 --backend=lmdb "F:\ComputerVision\ClassMaterial\Class9\ZnCar_multi-task_classification\Train/" "F:\ComputerVision\ClassMaterial\Class9\ZnCar_multi-task_classification\TrainLabel.txt" "F:\ComputerVision\ClassMaterial\Class9\ZnCar_multi-task_classification\TrainImage" 

pause

上面的命令是如何来找到图片的呢,其实是根据 ROOTFOLDER/ 加上 list里面图片的名称来找的,这就是为什么 ROOTFOLDER 后要加一个 “/” 符号。如果ROOTFOLDER不加,把符号加到图片的名称上也是 ok 的,比如 /1.jpg, 但是这样就麻烦了,没什么意思。

4. 多标签

上面的例子中是单标签的图像,如果是多标签的,比如一辆宝马suv,品牌标签为宝马, 车型标签为suv, 实际上 caffe 自带的 convert_imageset.exe 是支持多标签的,因此对于多标签,需要在原来的基础上进行修改,具体如何操作请参考 caffe实现多标签分类模型

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值