CenterNet 代码阅读笔记一(Keras版本)

CenterNet 代码阅读笔记一(Keras版本)

    • 前言
    • 几点说明
    • 代码架构
    • 代码运行
    • 总结

前言

大家好!这篇博文将记录近期学习CenterNet模型(Keras版本)代码的收获,主要用于自己将来需要时查看,若能够为大家提供微薄帮助,将是本人莫大荣幸。

CenterNet是2019.4月刚提出的目标检测模型,号称目前准确率最高的算法(远超Yolov3)。由于理论较新,目前相关开源代码只有源码的Pytorch版本和第三方的Keras版本(若大家发现其他版本烦请告知,万分感谢)。由于本人对Keras较为熟悉,就先学习了Keras版本的Code。现将学习心得记录如下,如有不正确的地方,请大家指出,我将及时改正。欢迎骚扰讨论,共同进步~~

原版:Pytorch版本

第三方版:Keras版本

几点说明

目前,对Keras版本整体代码尚没有全部看完,只是将自认为重要的,跟代码运行相关的部分学习了一下。因此,本文是根据自身的学习脉络进行介绍,若学习了更多的相关内容,会不定期补充。下面将本文及代码范围进行简要说明:

  1. 我目前主要研究图像的目标检测,因此也只重点的学习了代码图像目标检测的部分;
  2. 该版本CenterNet的代码只能够应用训练好的模型(基于COCO数据库)进行目标检测,不能够训练自己的图像数据;
  3. 该版本代码的backbone只采用Hourglass Network,没有包含其他网络。
  4. 本篇博文是CenterNet代码学习系列的第一篇文章,只介绍代码运行相关文件关系及作用,代码详细说明将在后续陆续更新,敬请关注。

代码架构

代码架构如下图所示:
CenterNet 代码阅读笔记一(Keras版本)_第1张图片
其中“assets”文件夹下,存放了标注结果时所需的字体文件(.ttf)以及所有待测试图片,如下图所示:
CenterNet 代码阅读笔记一(Keras版本)_第2张图片
“keras-centernet”文件夹下,存放的是代码运行所需的功能函数(bin)、模型函数(models, 目前只有hourglass net)以及模块函数(utils),如下图所示:
CenterNet 代码阅读笔记一(Keras版本)_第3张图片
“bin”文件夹下,共包含6个文件,其中“cedet”开头的文件用于目标检测,“hpdet”开头的文件用于人体姿态检测。本文使用的文件为“dtdet_image.py”,用于对图像进行目标检测。
CenterNet 代码阅读笔记一(Keras版本)_第4张图片
“models”文件夹下,包含一个“networks”文件夹和一个“decode.py”文件,而“networks”文件加下,目前只有一个“hourglass.py”文件,这里建立文件夹也应该是作者为添加别的backbone模型做的准备(自己的猜想)。这两个文件是代码运行的重要文件,运行至均会调用文件中的函数,其具体原理将在以后的博文详细阐述。
CenterNet 代码阅读笔记一(Keras版本)_第5张图片
“utils”文件夹下,包含两个模块代码文件,主要将一些模块化功能的函数封装起来,以方便调用,具体代码说明也将后续补充。
CenterNet 代码阅读笔记一(Keras版本)_第6张图片
以上将整体代码架构进行了介绍,希望能够帮助大家更方便的理清思路,快速上手。

代码运行

代码的使用方式可参照作者官方的GitHub说明,图像目标检测的执行代码是“/bin/ctdet_image.py”。具体代码如下图所示:
CenterNet 代码阅读笔记一(Keras版本)_第7张图片
本人运行环境为Ubuntu16.04,windows上尚未测试,不知是否需要修改代码。下面附几张基于Hourglass Network为backbone的CenterNet的运行结果:
CenterNet 代码阅读笔记一(Keras版本)_第8张图片
CenterNet 代码阅读笔记一(Keras版本)_第9张图片
以上图片都是在网上随便找的,大家也可以多找些图进行测试。

总结

以上对CenterNet(Keras版本)代码做了简要介绍,代码的详细解析将在后续更新,敬请关注。若有帮助,不胜荣幸,欢迎搬文,请注引用。谢谢。

你可能感兴趣的:(目标检测,CenterNet,深度学习)