近期在用caffe玩一些数据集,这些数据集是从淘宝爬下来的图片。主要是想研究一下对女性衣服的分类。
以下是一些详细的操作流程,这里总结一下。
1 爬取数据。写爬虫从淘宝爬取自己须要的数据。
2 数据预处理。将图片从jpg,png格式转为leveldb格式。由于caffe的输入层datalayer是从leveldb读取的。这一步自己基于caffe写了个工具实现转换。
转换命令样例:
./convert_imagedata.bin /home/linger/imdata/skirt_train/ /home/linger/linger/testfile/skirt_train_db/ /home/linger/linger/testfile/skirt_train_attachment/ 3 250 250
./convert_imagedata.bin /home/linger/imdata/skirt_test/ /home/linger/linger/testfile/skirt_test_db/ /home/linger/linger/testfile/skirt_test_attachment/ 3 250 250
./compute_image_mean.bin /home/linger/linger/testfile/skirt_train_db /home/linger/linger/testfile/skirt_train_mean.binaryproto
./compute_image_mean.bin /home/linger/linger/testfile/skirt_test_db /home/linger/linger/testfile/skirt_test_mean.binaryproto
3 建立网络模型。主要是写train.prototxt和test.prototxt,还有solver.prototxt。前两者是训练和測试的网络结构,后者是网络的一些配置參数。
4 训练和測试模型。有时候须要调整一些參数,比方learning rate,或者调整网络结构。
5 可视化响应图和权重图。主要把最后一层的特征响应图和权重图画出来,便于观察规律。这两个工具也是自己写的。
工具使用样例:
./visualize_weights.bin /home/linger/linger/caffe-action/caffe-master/examples/cifar10/cifar10_full_test.prototxt /home/linger/linger/caffe-action/caffe-master/examples/cifar10/cifar10_full_iter_60000 1 GPU /home/linger/linger/testfile/skirt_test_attachment/image_filename
/home/linger/linger/testfile/weights/ 7
./visualize_features.bin /home/linger/linger/caffe-action/caffe-master/examples/cifar10/cifar10_full_test.prototxt /home/linger/linger/caffe-action/caffe-master/examples/cifar10/cifar10_full_iter_60000 20 GPU /home/linger/linger/testfile/skirt_test_attachment/image_filename
/home/linger/linger/testfile/innerproduct/ 7