TensorFlow下使用YOLO_small.ckpt测试图片(yolov1)
TensorFlow下使用YOLO_small.ckpt测试图片(yolov1)
1、下载安装
Python 3.5.2
tensorflow-gpu 1.2.1
yolo_tensorflow源码:https://github.com/hizhangp/yolo_tensorflow
YOLO_small.ckpt权重文件:https://pan.baidu.com/s/1SShEp8C0rTSbWNNKSgRKLg 密码:gph6
(参考:【YOLO初探】 yolo_tensorflow_v1使用YOLO_small.ckpt进行测试)
2、修改文件
解压yolo_tensorflow-master.zip得到yolo_tensorflow-master文件,在此目录下新建data文件夹,data目录下新建weights文件夹,将YOLO_small.ckpt放在weights目录下。
3、测试
打开test.py文件,在206行修改需要测试的图片,图片放置在test目录下,图片名须一致。
# detect from image file
imname = 'test/cat.jpg'
detector.image_detector(imname)
4、问题:AttributeError: module 'tensorflow.python.ops.nn' has no attribute 'leaky_relu'
原因:使用的tensorflow版本不能直接调用leaky_relu函数,在yolo_net.py文件(yolo目录下)中修改244行并添加代码。
def leaky_relu(alpha):
def op(inputs):
# return tf.nn.leaky_relu(inputs, alpha=alpha, name='leaky_relu') # 原始
return leaky_relu_tf(inputs, alpha=alpha, name='leaky_relu') # 修改
return op
# 使用的tensorflow版本不能直接调用leaky_relu函数,添加以下代码
from tensorflow.python.framework import ops
from tensorflow.python.ops import math_ops
def leaky_relu_tf(features, alpha=0.2, name=None):
with ops.name_scope(name, "LeakyRelu", [features, alpha]) as name:
features = ops.convert_to_tensor(features, name="features")
if features.dtype.is_integer:
features = math_ops.to_float(features)
alpha = ops.convert_to_tensor(alpha, dtype=features.dtype, name="alpha")
return math_ops.maximum(alpha * features, features, name=name)
5、结果