RetinaNet用的是这个代码:https://github.com/fizyr/keras-retinanet
一、配置环境
下载VOC比较慢,用的是上一篇文章中提到的镜像网站。配置环境比较简单:
pip install numpy
pip install .
python setup.py build_ext --inplace
二、训练模型
retinanet-train pascal ./VOCdevkit/VOC2007
训练的时候报了“TypeError: type object got multiple values for keyword argument 'training'”检查后发现是keras_resnet里面的文件出错,意识到可能是keras版本不匹配的问题。在查看了keras与tensorflow-gpu的版本关系后,降低了keras的版本到2.3.1。之后成功开始训练。
三、测试模型
参考examples/ResNet50RetinaNet.py,修改model_path和labels_to_name。报错ValueError: not enough values to unpack (expected 3, got 2),查询后需要将训练的模型转换为inference模型:
参考:https://blog.csdn.net/qq_33083551/article/details/103885590
retinanet-convert-model ./snapshots/resnet50_pascal_13.h5
./model.h5keras_retinanet/bin/convert_model.py ./snapshots/resnet50_pascal_13.h5 ./model.h5
model_path = os.path.join('..', 'model.h5')
class_name=['diningtable', 'person', 'bottle', 'boat', 'train', 'bird', 'dog', 'cat', 'tvmonitor', 'cow', 'car', 'sofa', 'horse', 'chair', 'pottedplant', 'bicycle', 'motorbike', 'aeroplane', 'sheep', 'bus']
class_name=sorted(class_name)
labels_to_names=dict(zip(range(len(class_name)),class_name))