• 使用caffe训练自己的图像数据(未完)


    参考博客:blog.csdn.net/drrlalala/article/details/47274549

    1,首先在网上下载图片,猫和狗。
    直接保存下载该网页,会生成一个有图片的文件夹。
    caffe-master/data  新建 myself
    myself/  新建  train   dog
                                    cat
                           test   dog
                                    cat
    之后将图片分别复制到文件夹中

    2,生成train.txt和test.txt
    在train文件夹下运行    find -name *.jpg |cut -d '/' -f2-3 >train.txt
                  手动加标签    sed -i 's/$/ 0/g' train.txt   在末位加0
    val.txt同理可得,也要加标签。

    3,图片转化为lmdb格式
    caffe-master/examples/    新建 myself
    复制examples/imagenet/create_imagenet.sh到 examples/myself

    修改参照下面,主要是针对路径的修改

    #!/usr/bin/env sh
    # Create the imagenet lmdb inputs
    # N.B. set the path to the imagenet train + val data dirs
    set -e
    
    EXAMPLE=examples/myself      ##路径需要自己修改,默认的相对路径是在caffe-master下  
                                                   
    DATA=data/myself          ##是指生成的train.txt和val.txt的路径                     
    TOOLS=build/tools
    
    TRAIN_DATA_ROOT=data/myself/train/   ##注生成的数据最前面就不需要加/了
    VAL_DATA_ROOT=data/myself/test/
    
    # Set RESIZE=true to resize the images to 256x256. Leave as false if images have
    # already been resized using another tool.
    RESIZE=true    ##如果填true说明事先没有将其转为256*256格式
    if $RESIZE; then
      RESIZE_HEIGHT=256
      RESIZE_WIDTH=256
    else
      RESIZE_HEIGHT=0
      RESIZE_WIDTH=0
    fi
    
    if [ ! -d "$TRAIN_DATA_ROOT" ]; then
      echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
      echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" 
           "where the ImageNet training data is stored."
      exit 1
    fi
    
    if [ ! -d "$VAL_DATA_ROOT" ]; then
      echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
      echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" 
           "where the ImageNet validation data is stored."
      exit 1
    fi
    
    echo "Creating train lmdb..."
    
    GLOG_logtostderr=1 $TOOLS/convert_imageset 
        --resize_height=$RESIZE_HEIGHT 
        --resize_width=$RESIZE_WIDTH 
        --shuffle 
        $TRAIN_DATA_ROOT 
        $DATA/train.txt            ##之前生成的list
        $EXAMPLE/myself_train_lmdb      ##修改名字
    
    echo "Creating val lmdb..."
    
    GLOG_logtostderr=1 $TOOLS/convert_imageset 
        --resize_height=$RESIZE_HEIGHT 
        --resize_width=$RESIZE_WIDTH 
        --shuffle 
        $VAL_DATA_ROOT 
        $DATA/val.txt 
        $EXAMPLE/myself_test_lmdb
    
    echo "Done."


    之后 cd caffe-master
    运行  sudo ./examples/myself/create_imagenet.sh
    在examples/myself/   下生成两个lmdb文件夹

    4,计算图像均值

    复制examples/imagenet/make_imagenet_mean.sh到 examples/myself

    使用make_imagenet_mean.sh计算图像均值,在data/myself 下产生imagenet_mean.binaryproto文件
    相对路径仍为 caffe-master下,按照自己的文件修改路径。
    之后 sudo ./examples/myself/make_imagenet_mean.sh

    #!/usr/bin/env sh
    # Compute the mean image from the imagenet training lmdb
    # N.B. this is available in data/ilsvrc12
    
    EXAMPLE=examples/myself
    DATA=data/myself
    TOOLS=build/tools
    
    $TOOLS/compute_image_mean $EXAMPLE/myself_train_lmdb
    $DATA/imagenet_mean.binaryproto
    
    echo "Done."


    5,定义网络
    主要是修改下面三个文件:
    my_train.prototxt
    my_test.prototxt
    solver.prototxt
    这三个文件可以从caffe的已有例子中复制过来。接下来需要自己修改,修改的地方主要是,一些文件的路径和输出层的个数(即类别数目)。


    6,写训练脚本my_train_lenet.sh 如下:(我这个是根据mnist中的文件改过来的)

    #!/usr/bin/env sh
    set -e
    
    ./build/tools/caffe train --solver=examples/myself/solver.prototxt $@

     未完待续。

  • 相关阅读:
    iOS 109个Demo范例
    iOS 109个Demo范例
    iOS 完全复制UIView
    iOS 完全复制UIView
    iOS 获取self类型
    Python 进阶_OOP 面向对象编程_类和继承
    Python 进阶_OOP 面向对象编程_类和继承
    Python 进阶_模块 & 包
    Python 进阶_模块 & 包
    Python 进阶_模块 & 包
  • 原文地址:https://www.cnblogs.com/lyyang/p/6544997.html
Copyright © 2020-2023  润新知