如何将darknet yolo模型转换为keras?

时间:2018-04-28 16:57:00

标签: python keras darknet yolo

我正在使用yad2k将darknet YOLO模型转换为keras .h5格式。我在包含yad2k脚本的目录上方的目录中有yolov3-voc.cfg,yolov3.weights和yolov3.cfg。当我运行以下命令时:

python3 yad2k.py -p ../yolov3-voc.cfg ../yolov3.weights model_data/yolov3.h5

或:

python3 yad2k.py -p ../yolov3.cfg ../yolov3.weights model_data/yolov3.h5

我收到以下错误:

    Traceback (most recent call last):
  File "yad2k.py", line 271, in <module>
    _main(parser.parse_args())
  File "yad2k.py", line 90, in _main
    cfg_parser.read_file(unique_config_file)
  File "/Users/tobykrieman/anaconda/lib/python3.6/configparser.py", line 718, in read_file
    self._read(f, source)
  File "/Users/tobykrieman/anaconda/lib/python3.6/configparser.py", line 1080, in _read
    raise MissingSectionHeaderError(fpname, lineno, line)
configparser.MissingSectionHeaderError: File contains no section headers.
file: '<???>', line: 7
'<!DOCTYPE html>\n'

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

您应该尝试使用Github repository(这是“ YOLOv3的Keras实现”)中的说明

git clone https://github.com/qqwweee/keras-yolo3.git
cd keras-yolo3
wget https://pjreddie.com/media/files/yolov3.weights
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
python yolo.py   OR   python yolo_video.py [video_path] [output_path(optional)]

答案 1 :(得分:1)

您无法使用YAD2K将YOLOv3转换为Keras型号。这是因为YOLOv3的配置文件有一个[shortcut]标头。 yad2k.py文件没有处理此标头的方法,因为它是在YOLOv2(没有此层/标头)的时间内编写的。

但是,在您的情况下,您似乎正在阅读其他类型的配置文件,该文件显然具有<!DOCTYPE html>\n标记。但无论如何,即使您使用YOLOv3 cfg进行尝试,它也不会因为我上面提到的原因而起作用。我自己试了!

答案 2 :(得分:0)

您的暗网.cfg文件可能不正确。他们应该看起来像这样:

[net]
batch=128
subdivisions=1
height=227
width=227
channels=3
momentum=0.9
decay=0.0005
max_crop=256

learning_rate=0.01
policy=poly
power=4
max_batches=800000

angle=7
hue = .1
saturation=.75
exposure=.75
aspect=.75

[convolutional]
filters=96
...

(取自https://github.com/pjreddie/darknet/blob/master/cfg/alexnet.cfg
您的.cfg文件似乎包含HTML。