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、结果

TensorFlow下使用YOLO_small.ckpt测试图片(yolov1)_第1张图片

你可能感兴趣的:(yolo)