EfficientDet Runner

执行EfficientDet模型推演的最小代码模块。

EfficientDet Runner

EfficientDet是Google提出来的一种物体检测方案,并且提供了基于TensorFlow的开源实现。地址在这里:

google/automl
Google Brain AutoML. Contribute to google/automl development by creating an account on GitHub.

该实现整体上比较完整,提供了训练、测试与推演的全部代码。但是如果你只需要推演部分的话,就显得有些冗余。

因此我开源了EfficientDet Runner,提供了执行EfficientDet模型推演的最小代码模块。地址如下:

yinguobing/efficientdet-runner
执行EfficientDet模型推演的最小代码模块. Contribute to yinguobing/efficientdet-runner development by creating an account on GitHub.

检测的结果可以参见这段视频:

EfficientDet物体检测Demo_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
%E5%9F%BA%E4%BA%8EEfficientDet%E7%9A%84%E7%89%A9%E4%BD%93%E6%A3%80%E6%B5%8BDEMO%E3%80%82%E6%A8%A1%E5%9E%8B%E6%9D%A5%E8%87%AA%E5%AE%98%E6%96%B9%E9%87%8A%E5%87%BA%E7%9A%84%20EfficientDet-d0%E3%80%82%0A%0A%E4%BD%A0%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E5%AE%98%E6%96%B9%E4%BB%A3%E7%A0%81%E8%8E%B7%E5%8F%9…

以下内容为代码使用方法。

准备工作

最小代码意味着你需要以 SavedModel 格式存储模型。请在官方实现中完成模型转换工作。

获取官方源代码

git clone https://github.com/google/automl.git

下载模型Checkpoint

EfficientDet包含多个不同规模的实现。这里以D0为例,模型名称为 efficientdet-d0。从官网下载checkpoin文件。

wget https://storage.googleapis.com/cloud-tpu-checkpoints/efficientdet/coco/efficientdet-d0.tar.gz 
tar xf efficientdet-d0.tar.gz

模型checkpoint被解压缩到 efficientdet-d0 文件夹。

转换Checkpoint以支持TensorFlow 2

使用 keras 目录中的 inspector.py,将checkpoint转换为TensorFlow 2支持的格式,并存储到 ckpt-tf2 文件夹。

python3 -m keras.inspector --mode=dry --model_name=efficientdet-d0 --model_dir=efficientdet-d0 --export_ckpt=ckpt-tf2/efficientdet-d0

导出为 SavedModel 格式

以推演为主要目的,SavedModel 格式可以在没有源代码的情况下执行,更加方便。

python3 -m keras.inspector --mode=export --model_name=efficientdet-d0 \ --model_dir=ckpt-tf2 --saved_model_dir=saved_model

该命令会同时保存一份冻结后的模型文件,以便有需要的情况下使用。

安装

获取本项目的代码。

git clone https://github.com/yinguobing/efficientdet-runner.git

运行

实现视频检测的示例文件 demp.py,记得将导出的模型文件夹存储在 saved_model 目录下。

python3 demo.py --video=input.mov