深度学习2:基于车辆卡牌图片的分类实战

数据进行训练与测试

总计 2个txt文件 train.txt  test.txt  在~/caffe/examples/myfile/下

        2个图片源目录 train   test 在/home/data 下

        1个shell脚本 create_lmdb.sh 在~/caffe/examples/myfile/下

数据源的准备

网络上有很多开放的数据源(caffe自带的mnist等),大家可以自己下载,我在Window下自己标定制作生成了一份数据源,如下

数据由两列组成,第一列为图片的名字,第二列为图片的类型:1 代表有卡牌 2代表不确定 0代表无卡片

 此图为1

1.将train.txt传到ubuntu上,路径为 ~/caffe/examples/myfile/

2.同理将test.txt上传至ubuntu上,路径为~/caffe/examples/myfile/

此处最好用Xshell上传,不要直接拖,否则可能会导致windows换行与ubuntu不匹配,导致生成lmdb文件时找不到路径的致命错误

3.图片保存到ubuntu本地:可以在找例子直接下载到ubuntu系统

----------------------------------------------------------------------------------

(从内网上下载)并将图片放在/home/data/train下

scp -r root@XXXX /data/picture/st_0622  /home/data/

cd /home/data/

mv st_0622 train

同理,抽取其中的一部分作为测试图片,放至/home/data/test下

---------------------------------------------------------------------------------------

4.对两个txt文件加上路径

cd ~/caffe/examples/myfile/

sed “s/^/train\\/&/g"   test.txt  >>newtrain.txt

sed “s/^/test\\/&/g"   test.txt  >>newtest.txt

2. 将数据转换为lmdb类型

1.编写create_lmdb.shell文档

gedit create_lmdb.sh 

 

绝对路径是图片源的路径

2.生成lmdb文件

在caff根目录下(~/caffe/)  sh examples/myfile/create_lmdb.sh

如果出现 E0719 04:12:39.692351 116137 io.cpp:80] Could not open or find file错误,请用vi检查你的txt文件换行符是否末尾有^M

vi newtrain.txt   

:set list

ctrl 选择列 G跳转最后一行,删除末尾^M,删除末尾与$间隔的空格

3.生成两个lmdb文件

img_test_lmdb   和   img_train_lmdb

4.计算均值并保存

 

caffe程序提供了一个计算均值的文件compute_image_mean.cpp,我们直接使用就可以了

 #sudo build/tools/compute_image_mean examples/myfile/img_train_lmdb examples/myfile/mean.binaryproto

 compute_image_mean带两个参数,第一个参数时lmdb训练数据位置,第二个参数设定均值文件的名字及保存路径。

  运行成功后,如下图所示

 5.创建模型,并更改相关配置

  模型就用程序自带的caffenet模型,位置在models/bvlc_reference_caffenet/文件夹下,将需要的两个配置文件,复制到myfile文件夹内

    #sudo cp models/bvlc_reference_caffenet/solver.prototxt examples/myfile/

    #sudo cp models/bvlc_reference_caffenet/train_val.prototxt examples/myfile/

    修改其中的solver.prototxt

    #sudo vi examples/myfile/solver.prototxt

一些系数的理解:

参考:https://blog.csdn.net/u012746763/article/details/51549184

修改train_val.prototxt 

只需要修改两个阶段的data层就可以了,其他可以不用管。

--------------------------------------------------------------------------------

   name: "CaffeNet"
    layer {
        name: "data"
        type: "Data"
        top: "data"
        top: "label"
    include {
        phase: TRAIN
    }
    transform_param {
        mirror: true
        crop_size: 227
        mean_file: "/root/caffe/examples/myfile/mean.binaryproto"
     }
    data_param {
        source: "/root/caffe/examples/myfile/img_train_lmdb"
        batch_size: 256
        backend: LMDB
     }
    }
     layer {
         name: "data"
         type: "Data"
         top: "data"
         top: "label"
     include {
         phase: TEST
     }
     transform_param {
         mirror: false
         crop_size: 227
         mean_file: "/root/caffe/examples/myfile/mean.binaryproto"
     }
     data_param {
         source: "/root/caffe/examples/myfile/img_test_lmdb"
         batch_size: 50
         backend: LMDB
    }
   }

------------------------------------------------------------------------------------------------------------------------

建议使用绝对路径,相对路径容易翻车

6.训练

到根目录下 cd  ~/caffe/

./bild/tools/caffe train  --solver=examples/myfile/solver.prototxt

 


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值