【问题标题】:Approach to get the weight values from the pre-trained weights from Darknet?从暗网的预训练权重中获取权重值的方法?
【发布时间】:2021-03-22 07:13:25
【问题描述】:

我目前正在尝试在 C 中实现 YOLOv3 对象检测模型(仅检测,不训练)。

我已经用任意值测试了我的卷积方法,它似乎按我的预期工作。

在堆叠多个方法调用以进行前向传播之前,我认为使用实际预训练的权重文件数据进行测试是安全的。

当我查看 Darknet 的预训练权重文件时,它是一大块二进制文件。我尝试将其转换为十六进制和十进制,但要确定要使用的值的哪一部分仍然看起来并不简单。

所以,我的问题是,我应该如何提取权重或过滤器值的十进制数,以便我可以按照 YOLOv3 中发生的前向传播的相同顺序使用它们?

*我目前正在尝试使用https://www.itread01.com/content/1541167345.html中显示的结构图像构建我的C版本的YOLOv3

*我的 c 代码将与其他 HDL 代码一起在名为 MicroZed 的 FPGA 板上运行。

*我尝试将一些 printf 函数插入到 Darknet 代码的某些地方,以查看 YOLOv3 运行时正在移动的数据类型,但是,当我在 Linux 终端上运行它时,它没有显示任何新内容并保留输出相同的结果。

任何帮助或建议将不胜感激。谢谢!

【问题讨论】:

    标签: computer-vision object-detection fpga yolo darknet


    【解决方案1】:

    我不太确定是否有直接读取暗网权重的方法,但是您可以将其转换为.h5 格式并从中获取权重值

    您可以使用 this 存储库中的相应命令将暗网 yolov3 权重转换为 .h5 格式(由 keras 使用)。

    您可以根据您的 Yolo 版本从链接存储库的自述文件中显示的列表中选择命令。对于标准的yolov3,转换的命令是

    python tools/model_converter/convert.py cfg/yolov3.cfg weights/yolov3.weights weights/yolov3.h5 一旦你有了.h5weights,你可以使用下面的代码 sn-p 来获取 权重的值。 credit/source

    import h5py
    
    path = "<path to weights>.h5"
    weights = {}
    keys = []
    with h5py.File(path, 'r') as f: # open file
      f.visit(keys.append) # append all keys to list
      for key in keys:
          if ':' in key: # contains data if ':' in key
              param_name = f[key].name
              weights[f[key].name] = f[key].value
              print(param_name,weights[f[key].name])
    

    【讨论】:

    • - 01 3.74079287e-01 1.60072088e-01 -3.46411854e-01 7.50980601e-02 -4.13187504e-01 1.24298949e-02 1.98089853e-01 -2.97183633e-01 -2.02186316e-01 -2.99919583e-02 1.90335110e-01 7.97564536e-03 -5.32162637e-02 -4.23274398e-01 -3.05543453e-01 -2.86974370e-01 -2.86716104e-01 -6.26288533e-01 -6.31488487e-02 8.06292333e -03 8.47898871C-02-01 7.75365978C-02-01 7.1924994989S-01 4.1924994989S-02-02-02-02-02-02-02- 02-02-02 2.9180-02 2.91890-02-02-02 2.9199071C-02-02-4.10115235CS-02-o.22.2890-02-02-02-02-02-02 2.9189019235C-02-02 2.91899019235CS-02-02 2.9192019202448C-02- 01 -4.98688281e-01 -1.80336043e-01-1.41007021e-01 -9.77853760e-02 -5.39013028e-01
    • 我看到了这些数字。但我仍然不确定如何解释这些数字....
    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多