Poly-Yolo复现

复现过程

  1. 配置环境,安装所需的包(我是在Ubuntu下用conda创建虚拟环境进行运行的,最好安装官方给的版本,可以复现过程中因为版本产生的error)
    Poly-Yolo复现_第1张图片

  2. 根据simulator_dataset文件夹下的模板样式,准备数据集,可以用conversion_scripts文件夹下的工具将自己的数据集转换成需要的形式
    Poly-Yolo复现_第2张图片
    Poly-Yolo复现_第3张图片

  3. 运行 kmeans.py 来适应锚点
    Poly-Yolo复现_第4张图片

  4. 在yolo_classes.txt中定义数据集的class(因为使用的是simulator_dataset文件夹下的文件,所以我跳过了这一步)
    Poly-Yolo复现_第5张图片

  5. 运行poly-yolo.py ( 可以在主函数里用model.save()存储模型,需要存储为.h5文件)
    Poly-Yolo复现_第6张图片

  6. 在当前文件夹下创建poly_yolo_predict文件夹用于存储识别后的文件
    Poly-Yolo复现_第7张图片

  7. 根据poly_yolo_inference.ipynb编写test.py文件进行测试,运行后的结果会存储在poly_yolo_predict文件夹
    Poly-Yolo复现_第8张图片

    Poly-Yolo复现_第9张图片






复现过程中出现的问题:

  1. ImportError: cannot import name ‘BatchNormalization‘ from ‘keras.layers.normalization‘
    报错原因:版本问题。
    解决方案:将 from keras.layers.normalization import BatchNormalization 改成 from keras.layers.normalization.batch_normalization_v1 import BatchNormalization。

  2. ImportError: cannot import name ‘multi_gpu_model‘ from ‘keras.utils‘
    报错原因:版本问题,导致路径改变。
    解决方案:将 from keras.utils import multi_gpu_model 改成 from keras.utils.multi_gpu_utils import multi_gpu_model。

  3. AttributeError: ‘Tensor‘ object has no attribute ‘_keras_shape‘
    报错原因:版本问题。
    解决方案:将 _keras_shape 改为 shape。

  4. 将model.summary()导出
    解决方案:利用summary()的参数print_fn,改参数传递一个函数,默认为print,只要传递一个新的函数即可Poly-Yolo复现_第10张图片
    样例:Poly-Yolo复现_第11张图片
    导出样例:
    Poly-Yolo复现_第12张图片

  5. ImportError: cannot import name ‘multi_gpu_model‘ from ‘tensorflow.keras.utils‘(与 2 不同,使用 2 的解决方案无法解决)

    报错原因:版本问题,tensorflow版本路径改变。
    解决方案:用 from tensorflow.python.keras.utils.multi_gpu_utils import multi_gpu_model 替代 from tensorflow.keras.utils import multi_gpu_model。

  6. cv.imread()读取对象为空
    报错原因:传递的参数不对。
    解决方案:cv.imread()的第一个参数是文件命名,这里最好用绝对路径,如果使用simulator_dataset里面的simulator-train.txt,需要注意里面的line[0]只是图片名,需要加上路径os.getcwd()+“/imgs/”+line[0],还需要注意路径中不要出现中文。
    6.AttributeError: module ‘tensorflow.compat.v1‘ has no attribute ‘contrib‘
    报错原因: tf2中删除了contrib这个库,因此无法使用xavier_initializer()初始化。
    解决方法: 用initializer=tf.glorot_uniform_initializer() 进行替换

  7. AttributeError: ‘str’ object has no attribute ‘decode’(加载模型的时候)
    报错原因:h5py包的版本不对
    解决方法:安装了指定版本为2.10的h5py即可

你可能感兴趣的:(python,目标检测)