• caffe 训练测试自己的图片


    本篇的目的在于训练出一个基于自己建立的图片集的模型(imagenet图片集过大,准备以后硬件设施允许的情况下使用),后续会利用此网络做fine-tune实验,以及更改相关参数实现图片检索的操作。


    一、准备图片集

    本来想在Imagenet这样的大型数据集上建立训练,奈何其数据量庞大。索性自己建立一个图片集,我准备了10个类,每个类包含100张训练图片及10张测试图片。后续会在附录上上传该链接。仿照caffe的caffenet结构,在CAFFEROOT的data目录下建立一个文件夹,下面再建立train文件夹存放训练图片;建立val文件夹存放测试图片。在CAFFEROOT的examples文件夹下建立对应的文件夹存放相关配置文件。

    注意:train文件夹下面的每个文件夹存放该类图片。最后如图:

       


    二、数据预处理

    1、统一图片尺寸

    编写shell脚本,使用ImageMagick将所有图片转换为256x256像素。

    for pic in PATH TO IMAGE FOLDER/*.jpg;do
        convert -resize 256x256! $pic $pic
    done

    2、生成图片对应的列表清单txt文件

    caffe需要train.txt test.txt val.txt存放图片的路径信息和类别信息。采用在每个文件名后打标签的形式归类。(train中的标签一定要从0开始,否则会出错)此过程需要自己编写一个脚本,其实网上的脚本也很多,忘记怎么写可以参考一下。最后如图:

    3、将图片转格式为lmdb并计算均值

    在CAFFEROOT/examples文件夹下找到imagenet文件夹,该文件夹下包含了一个create_imagenet.sh文件以及计算图片均值的make_mean文件,将两个拷贝出来到自己创建的对应文件夹下,修改相关路径、名称。

    运行create_lmdb脚本后会生成两个lmdb文件夹存放图片转换成的lmdb数据。同样的,运行make_mean脚本会生成.binaryproto的均值文件。

    4、配置prototxt文件和solver文件

    CAFFEROOT/models下的caffenet文件夹下包含train_val.prototxt与deploy.prototxt两个网络配置文件。前者是用于训练过程使用,后者是用于测试过程使用。其实,就算一开始分不清他们的作用,但是编辑两个文件的时候会发现一些不同,首先deploy的网络更“简洁”,再就是train_val的最后一层是softmaxwithloss,而deploy的最后是softmax。二者的区别在于softmax的作用是将线性预测值转换为类别的概率,即用于测试的过程,比如输入一张图片,那么softmax将计算其属于类别的概率。而在训练的过程中,已经明确地知道的每个训练数据的所属类别,这是一个求极大似然值的过程,softmaxwithloss就是实现这个作用的。即假设我们输入一张图片属于某个类,那么训练的目的就是要调整相关权值获得极大似然。

    这里将fc_8的输出num_output都设为20,其他结构保持不变。将相关路径修改好就可以训练了。

    solver文件部分参数:

    test_iter:=test图片数量/batch_size,为测试过程需要迭代的次数,其中,batchsize为一次操作的图片数量,在prototxt文件中设置。

    test_interval:每迭代test_interval就进行一次测试。


    三、训练

    在其他例子中找到一个train.sh,修改参数后就可以训练了。


    参考:

    http://freemind.pluskid.org/machine-learning/softmax-vs-softmax-loss-numerical-stability/

    https://www.zhihu.com/question/24529483

    http://blog.csdn.net/han_xiaoyang/article/details/50856583

    学而不思则惘
  • 相关阅读:
    git config 命令各参数有何区别
    Git 初始化
    Linux 安装 Git
    在Mac OS 上安装 Git
    maven 部署到远程仓库(私服)
    Git与SVN的区别
    windows挂载NFS文件系统无法访问/修改文件解决
    mysql5.7写入数据时间相差13/14小时解决
    mysql配置文件不生效解决
    springdata jpa mysql5.7写入中文乱码解决
  • 原文地址:https://www.cnblogs.com/keyky/p/6582024.html
Copyright © 2020-2023  润新知