第一、 制作自己的数据集
分为train和val两个文件夹,train下面有每个类别的一个单独的文件夹,文件夹里面放着这个类别的图片。
第二、 制作train.txt和val.txt(标签从0开始)
第三、 根据convert_imagesets.exe把数据转换成LMDB或者LEVELDB格式
第四、 生成训练图片的均值文件
第五、 复制train_val.prototxt文件为train_val_myself.prototxt修改
修改数据来源和batch_size,并保证backend的正确性,注意这里必须大写:backend:LMDB backend: LEVELDB。我使用的训练数据为100张图片,测试集是20张图片,所以我训练阶段的batch size是20,测试阶段batch size 是1.
修改输出类别数目num_output,并且重新命名最后一个FC Layer和Loss Layer,否则后来的权重对应不上,出现错误。同时最后一个FC Layer的weights 是随机给的,所以调到这一层的学习倍率,这里扩大十倍.
第六、 复制solver.prototxt文件为solver_myself.prototxt修改
其实,这里数据集小,迭代几百步就差不多收敛了,可以减少stepsize和max_iter
第七、 配置文件进行训练
第八、 训练结束,进行测试
因为测试的batch size是1,总共的测试集是20,所以这里iterations为20(1*20=20)
第九、 预测图片class
首先,复制deploy.prototxt为deploy_myself.prototxt根据train_val_myself.prototxt进行相应的修改
接着制作一个synset_words.txt
接着准备一张图片准备预测
建立bat文件
结果如下:
最后我们发现模型预测的结果是准确的。