1.批量修改(重命名)文件名
# -*- coding: cp936 -*-
import os
path = 'D:\\图片\\'
for file in os.listdir(path):
if os.path.isfile(os.path.join(path,file))==True:
if file.find('.')<0:
newname=file+'rsfdjndk.jpg'
os.rename(os.path.join(path,file),os.path.join(path,newname))
print file,'ok'
# print file.split('.')[-1]
2.c++extract_features.bin提取层特征并保存
extract_features.bin \
pretrained_net_param feature_extraction_proto_file \
extract_feature_blob_name1[,name2,...] save_feature_dataset_name1[,name2,...] \
num_mini_batches db_type [CPU/GPU] [DEVICE_ID=0]
参数1 extract_features.bin 文件路径;
参数2是模型参数(.caffemodel)文件的路径。
参数3是描述网络结构的prototxt文件。程序会从参数1的caffemodel文件里找对应名称的layer读取参数。
参数4是需要提取的blob名称,对应网络结构prototxt里的名称。blob名称可以有多个,用逗号分隔。每个blob提取出的特征会分开保存。
参数5是保存提取出来的特征的数据库路径,可以有多个,和参数3中一一对应,以逗号分隔。如果用LMDB的话,路径必须是不存在的(已经存在的话要改名或者删除)。
参数6是提取特征所需要执行的batch数量。这个数值和prototxt里DataLayer中的Caffe的DataLayer(或者ImageDataLayer)中的batch_size参数相乘,就是会被输入网络的总样本数。设置参数时需要确保batch_size * num_mini_batches等于需要提取特征的样本总数,否则提取的特征就会不够数或者是多了。(注意:这里的数值是num_mini_batches,而不是样本总数)
参数7是保存特征使用的数据库类型,支持lmdb和leveldb两种(小写)。推荐使用lmdb,因为lmdb的访问速度更快,还支持多进程同时读取。
参数8决定使用GPU还是CPU,直接写对应的三个大写字母就行。省略不写的话默认是CPU。
参数9决定使用哪个GPU,在多GP