基于yolov3的目标检测
问题描述在完成对car和person两个类别目标检测的训练时遇到进程已结束,退出代码为 -1073740791 (0xC0000409)问题,之后用Anaconda prompt 终端运行py文件显示具体错误,错误详情如下:
Traceback (most recent call last): File "train.py", line 190, in_main() File "train.py", line 33, in _main freeze_body=2, weights_path='./model_data/yolo_weights.h5') # make sure you know what you freeze File "train.py", line 130, in create_model [*model_body.output, *y_true]) File "D:anacodaanacondalibsite-packageskerasbackendtensorflow_backend.py", line 75, in symbolic_fn_wrapper return func(*args, **kwargs) File "D:anacodaanacondalibsite-packageskerasenginebase_layer.py", line 489, in __call__ output = self.call(inputs, **kwargs) File "D:anacodaanacondalibsite-packageskeraslayerscore.py", line 716, in call return self.function(inputs, **arguments) File "D:PythonSpacePythonProjectDeeplearningTest3keras-yolo3yolo3model.py", line 394, in yolo_loss _, ignore_mask = K.control_flow_ops.while_loop(lambda b,*args: b
原因分析:keras.backend里找不到control_flow_ops这个类了
原因在于keras版本和tensorflow不对应
解决方案:1.Keras本身是在TensorFlow基础上构建的高层API,也就是说我们使用的control_flow_ops本身就是Keras调用TF的函数,现在Keras没办法调用control_flow_ops,就直接用TF调用
原代码如下:
_, ignore_mask = K.control_flow_ops.while_loop(lambda b,*args: b修改后:
_, ignore_mask = tf.while_loop(lambda b,*args: b2.在Keras里找到control_flow_ops就可以了
我在Keras源码里没找到control_flow_ops,有兴趣的人可以去找一找
3.关于AttributeError问题,很多都是版本更新导致的,可以通过pip install keras==XXX来修改版本
需要找到相对应的tensorflow和keras的版本



