使用Caffe进行图像分类

我们参考caffe中ImageNet的例子来完成图像分类,我们的流程如下

1.参考ImageNet的代码,构建我们自己的数据集,jpg格式的图像分为train和val,即训练集和测试集

2.在文本文件中列出图像和标注

3.修改create_convert脚本,将图像转化为lmdb格式,注意,一定是jpg格式的图像,如果没有进行大小归一化,最好在脚本中进行缩放操作

4.使用make_mean脚本,计算图像均值

5.修改solver_prototxt文件和train_val_prototxt文件中的参数,进行训练

这里只列个提纲,网上的参考代码比较多,这里再附赠一个工具

附带自动生成列表文件的python代码:

import os.path,os
import sys

def cur_file_dir():
    path = sys.path[0]
    if os.path.isdir(path):
        return path
    elif os.path.isfile(path):
        return os.path.dirname(path)

def StringSort(strList):
    strTuple = [(int(line[:-4]), line) for line in strList]
    strTuple.sort()
    return [s for __, s in strTuple]

filePath=cur_file_dir()
listfile=os.listdir(filePath)
#print(listfile)

filename=raw_input("Please input filename (\\usr\\temp)")
os.chdir(filePath)
with open("./../"+filename,"w") as out:
    mylist=[]
    for line in listfile:
        #print line
        if line[-4:]=='.bmp' or line[-4:]=='.jpg':
            mylist.append(line)
            #out.write(line+" \t-1\n")
    mylist=StringSort(mylist)
    for line in mylist:
        out.write(line+" \t-1\n")
print("Done")

放置于图片目录下,会在父目录生成文本文件,并可由键盘输入的方式指定输出文本文件的文件名。

发表评论