代码说明:这里只进行图片分类的测试,并不进行图片的训练,使用的方法是读入.npy文件,获得的数据是字典类型的参数数据,字典的键是’conv1‘,‘fc6‘每一层的名字,字典的值是一个大列表,列表中有两个数据,一个是w的值,一个是b的值,对于w的值,其len(w.shape) > 1, 对于b的值,其len(b.shape) = 1
需要做的是:构建Alexnet的网络结构,读入npy已经训练好的参数,并进行训练
数据说明:测试数据为3张图片,使用cv2.resize将数据的维度变成(227, 227)
代码:
第一步:使用argpase.ArgumentParser() 构建输入参数,parser.add_argument添加参数,这里使用的参数是图片的来源args.images, 图片的地址args.path
第二步:读取图片
判断图片的来源方式:
如果是folder, 使用lamda f: ’{}/{}‘.format(args.path, f) 构建文件的路径, 使用os.listdir(args.path) 遍历文件里的文件名,使用cv2.imread(withpath(f)) 读取文件, 使用os.path.isfile(withpath(f)) 判断是否是文件,使用dict将读取的结果进行组合
如果是url,即网络上的图片地址,构建读取图片的函数,使用urllib.request.urlopen()打开文件路径,使用bytearray(resp.read()) 将读取的图片转换为二进制格式,使用cv2.imdecode() 将图片转换为utf-8类型
第三步:如果读到图片,进行参数的设置,
dropout: 用于进行tf.nn.dropout的keep_prob
skip: 用于在后续的参数加载中,用来去掉不需要进行加载的参数
numClass: 分类的结果数
x: tf.placeholder() 用于进行输入数据的初始化
imgMean: 图片的均值,用于后续的图片去均值
第四步:模型的实例化操作
原文:https://www.cnblogs.com/my-love-is-python/p/10567016.html