模型介绍

物体检测模型M2Det,是北京大学&阿里达摩院提出的Single-shot目标检测新模型,使用multi-level特征。在MS-COCO benchmark上,M2Det的单尺度版本和多尺度版本AP分别达到41.044.2 

该模型的特点:

  • 提出多级特征金字塔网络MLFPN。MLFPN的结构如下:

  • 基于提出的MLFPN,结合SSD,提出一种新的Single-shot目标检测模型M2Det

模型使用

  • 下载源码:

https://github.com/qijiezhao/M2Det”。

  • 在data文件夹下新建VOCdevkit文件夹,导入VOC格式的数据集。如下图:

  • 下载权重文件,放在weights(如果没有就在根目录新建)文件夹下面。

  • 修改voc0712.py里面的类别。

将:

VOC_CLASSES = ( '__background__', # always index 0
    'aeroplane', 'bicycle', 'bird', 'boat',
    'bottle', 'bus', 'car', 'cat', 'chair',
    'cow', 'diningtable', 'dog', 'horse',
    'motorbike', 'person', 'pottedplant',
    'sheep', 'sofa', 'train', 'tvmonitor')

修改为:

VOC_CLASSES = ( '__background__', # always index 0
    'aircraft''oiltank')

选择配置文件。

本例采用configs->m2det512_vgg.py配置文件

  • 删除pycocotools

在安装pycocotools工具前提下,将程序自带的pycocotools工具包删除。

修改coco.py

将:

from utils.pycocotools.coco import COCO
from utils.pycocotools.cocoeval import COCOeval
from utils.pycocotools import mask as COCOmask

修改为:

from pycocotools.coco import COCO
from pycocotools.cocoeval import COCOeval
from pycocotools import mask as COCOmask
  • 修改nms_wrapper.py

将:

from .nms.cpu_nms import cpu_nms, cpu_soft_nms
from .nms.gpu_nms import gpu_nms

def nms(dets, thresh, force_cpu=False):
    """Dispatch to either CPU or GPU NMS implementations."""
    if dets.shape[0] == 0:
        return []
    if force_cpu:
        return cpu_soft_nms(dets, thresh, method = 1)
        #return cpu_nms(dets, thresh)
    return gpu_nms(dets, thresh)


修改为:

from .nms.py_cpu_nms import py_cpu_nms

def nms(dets, thresh, force_cpu=False):
    """Dispatch to either CPU or GPU NMS implementations."""
    if dets.shape[0] == 0:
        return []
    if force_cpu:
        return py_cpu_nms(dets, thresh, method = 1)
    return py_cpu_nms(dets, thresh)
  • 修改train.py

修改选定配置的文件

parser.add_argument('-c', '--config', default='configs/m2det512_vgg.py')

修改数据的格式
parser.add_argument('-d', '--dataset', default='VOC', help='VOC or COCO dataset')

然后就可以开始训练了。

  • 修改test.py

parser = argparse.ArgumentParser(description='M2Det Testing')
parser.add_argument('-c', '--config', default='configs/m2det512_vgg.py', type=str)#选择配置文件,和训练的配置文件对应
parser.add_argument('-d', '--dataset', default='VOC', help='VOC or COCO version')
parser.add_argument('-m', '--trained_model', default='weights/M2Det_VOC_size512_netvgg16_epoch30.pth', type=str, help='Trained state_dict file path to open')
parser.add_argument('--test', action='store_true', help='to submit a test file')


修改voc0712.py282行的xml路径。将:

annopath os.path.join(
                        
rootpath,
                        
'Annotations',
                        
'{:s}.xml')

改为:

annopath = rootpath+'/Annotations/{:s}.xml'

测试结果:

  • 可视化结果

修改demo.py中超参数

parser.add_argument('-c', '--config', default='configs/m2det512_vgg.py', type=str)
parser.add_argument('-f', '--directory', default='imgs/', help='the path to demo images')
parser.add_argument('-m', '--trained_model', default='weights/M2Det_VOC_size512_netvgg16_epoch30.pth', type=str, help='Trained state_dict file path to open')


然后将部分测试图片放到imgs文件夹下面,运行demo.py.

本文实例:https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/12428492


转载自https://wanghao.blog.csdn.net/article/details/106160814