Package: detecting
DetectingThe platform for object detection research was implemented withTensorFlow2eager execution.GitHub:https://github.com/Qinbf/DetectingB站关于项目的视频介绍：https://www.bilibili.com/video/BV1rZ4y1T7Nu项目初衷是给大家提供一个既方便使用，同时又易于学习的目标检测工具。Detecting给大家提供多种预训练模型，可以直接下载使用，项目中的所有代码都有详细注释。我先挖个坑，暂时只实现了FasterRCNN算法，后续会把坑填上，把主流的一些算法都实现。希望大家可以给个Star支持一下，谢谢！如果有很多人喜欢Detecting这个项目的话，我会出一个免费的视频从头到尾讲解这个目标检测项目是如何做出来的。（一行一行代码讲，会讲到所有细节）项目中肯定存在bug和不足，大家在使用时遇到问题或者有好的想法可以给我反馈。安装首先确保已经安装Tensorflow2环境，然后再安装detecting模块。推荐使用pip安装：pipinstalldetecting也可以使用源码安装：先使用gitclone项目:gitclonehttps://github.com/Qinbf/detecting.git然后cd到detecting文件夹中执行安装命令:cddetecting
sudopythonsetup.pyinstall如果需要训练或评估COCO数据集还需要安装pycocotools模块快速使用模型预测通常来说模型预测只需要几行代码fromdetecting.build.fasterrcnnimportFasterRCNNModel# 下载并载入预训练模型# weights如果为'COCO'或'VOC'表示模型使用'COCO'或'VOC'数据集训练得到# weights如果为'None'表示定义一个没有训练过的新模型# weights如果为一个路径，表示从该路径载入训练好的模型参数model=FasterRCNNModel(backbone='resnet101',weights='COCO',input_shape=(1024,1024))# 预测结果并显示model.predict_show('test_images/000000018380.jpg')训练新模型使用Detecting训练自己的数据可以按照VOC数据集的格式先对数据进行标注。标注工具:LabelmeLabelImg下面把VOC数据集看成是我们自己标注好的新数据集。VOC训练集下载VOC测试集下载理论上训练集和测试集可以存放在任意位置，不过为了方便，大家可以参考我下面介绍的方式。我们可以新建一个datasets文件夹，然后把VOC训练集和测试集都放在datasets中，文件结构如下：datasets/
└── VOC
    ├── test
    │   └── VOC2007
    │       ├── Annotations
    │       ├── ImageSets
    │       ├── JPEGImages
    │       ├── SegmentationClass
    │       └── SegmentationObject
    └── train
        └── VOC2007
            ├── Annotations
            ├── ImageSets
            ├── JPEGImages
            ├── SegmentationClass
            └── SegmentationObjectAnnotations文件夹中保存这图片的标注，ImageSets文件夹保存这图片。我们可以自定义一个'train.yml'配置文件，配置文件内容如下：DATASETS:
  NAMES: ('MYDATA')
  CLASSES: ('__background__', 
            'aeroplane', 'bicycle', 'bird', 'boat',
            'bottle', 'bus', 'car', 'cat', 'chair',
            'cow', 'diningtable', 'dog', 'horse',
            'motorbike', 'person', 'pottedplant',
            'sheep', 'sofa', 'train', 'tvmonitor')
  IMAGE_DIR: ('datasets/VOC/train/VOC2007/JPEGImages')
  LABEL_DIR: ('datasets/VOC/train/VOC2007/Annotations')
  SCALE: (1024, 1024)

MODEL:
  BACKBONE: 'resnet101'
  WEIGHTS: 'COCO'
  INPUT_SHAPE: (1024, 1024)
  ANCHOR_SCALES: (64, 128, 256, 512)
  ANCHOR_FEATURE_STRIDES: (16, 16, 16, 16)NAMES: ('MYDATA')表示训练自己的数据集NAMES: ('COCO')表示训练'COCO'数据集NAMES: ('VOC')表示训练'VOC'数据集CLASSES: 设置数据集的标签IMAGE_DIR: 设置图片路径LABEL_DIR: 设置标注路径SCALE: 生成器产生的图片尺寸BACKBONE: 模型基本分类器WEIGHTS: 模型权值。WEIGHTS如果为'COCO'或'VOC'表示模型使用'COCO'或'VOC'数据集训练得到
；WEIGHTS如果为'None'表示定义一个没有训练过的新模型；WEIGHTS如果为一个路径，表示从该路径载入训练好的模型参数INPUT_SHAPE: 表示模型输入图片大小ANCHOR_SCALES: anchors的大小ANCHOR_FEATURE_STRIDES: anchors的步长模型训练通常来说模型训练也只需要几行代码fromdetecting.build.fasterrcnnimportFasterRCNNModelfromdetecting.datasets.datasetsimportload_tf_datasetfromdetecting.configimportcfg# 与配置文件中的配置合并cfg.merge_from_file('train.yml')# 载入数据集tf_datasettf_dataset=load_tf_dataset(cfg)# 载入模型model=FasterRCNNModel(cfg)# 训练模型model.fit(tf_dataset)本项目最重要的文件是detecting/config/defaults.py，里面保存着所有默认配置信息。我们可以自定义"*.yml"文件，用于修改默认配置信息。更多使用方法可以查看tutorial中的内容以及源代码。VOC 测试集实测结果Detection ModelBackboneInput resolutionmAPFasterRCNNVGG161024x102453.97COCO 验证集实测结果Detection ModelBackboneInput resolutionAPAP50AP75APSAPMAPLFasterRCNNResNet50640x64024.739.926.05.726.142.6FasterRCNNResNet501024x102427.543.829.510.832.641.5FasterRCNNResNet101640x64027.041.229.27.228.645.0FasterRCNNResNet1011024x102432.247.435.212.135.750.4FasterRCNNResNet152640x64027.741.529.97.829.446.8FasterRCNNResNet1521024x102432.046.735.211.435.351.6Acknowledgment:tensorflow/models/tree/master/research/object_detectionViredery/tf-eager-fasterrcnnmatterport/Mask_RCNN