Как использовать YOLOv4 3.0.0 в тензорном потоке 2.2.n?

Я установил yolov4 3.0.0 и tensorflow 2.2.0

      !python3 -m pip install yolov4==3.0.0

Я выполнил yolov4 согласно описанию на странице ( https://wiki.loliot.net/docs/lang/python/libraries/yolov4/python-yolov4-about/ ).

      import cv2
from yolov4.tf import YOLOv4

yolo = YOLOv4()

yolo.config.parse_names("coco.names")
yolo.config.parse_cfg("yolov4-tiny.cfg")

yolo.make_model()
yolo.load_weights("yolov4-tiny.weights", weights_type="yolo")
yolo.summary(summary_type="yolo")
yolo.summary()

но я получил эту ошибку

      ValueError                                Traceback (most recent call last)
<ipython-input-1-0562cf94c007> in <module>()
      8 yolo.config.parse_cfg("yolov4-tiny.cfg")
      9 
---> 10 yolo.make_model()
     11 yolo.load_weights("yolov4-tiny.weights", weights_type="yolo")
     12 yolo.summary(summary_type="yolo")
 
2 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/autograph/impl/api.py in wrapper(*args, **kwargs)
    263       except Exception as e:  # pylint:disable=broad-except
    264         if hasattr(e, 'ag_error_metadata'):
--> 265           raise e.ag_error_metadata.to_exception(e)
    266         else:
    267           raise
 
ValueError: in user code:
 
    /usr/local/lib/python3.7/dist-packages/yolov4/tf/model.py:74 call  *
        output.append(layer(x))
    /usr/local/lib/python3.7/dist-packages/yolov4/tf/layers/convolutional_layer.py:54 call  *
        if training and self.trainable:
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/autograph/operators/control_flow.py:924 if_stmt
        basic_symbol_names, composite_symbol_names)
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/autograph/operators/control_flow.py:962 tf_if_stmt
        error_checking_orelse)
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/deprecation.py:507 new_func
        return func(*args, **kwargs)
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/control_flow_ops.py:1177 cond
        return cond_v2.cond_v2(pred, true_fn, false_fn, name)
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/cond_v2.py:93 cond_v2
        verify_captures(_COND, [true_graph, false_graph])
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/cond_v2.py:830 verify_captures
        b1name=branch_names[i]))
 
    ValueError: Tensor batch_normalization_trainable:0 in true_fn is accessed from false_fn.

Я подтвердил, что в tf 2.3.0, 2.4.1 он будет выполняться правильно.
Почему эта ошибка возникает только в tf 2.2.n?

0 ответов

Другие вопросы по тегам