当前位置:   article > 正文

基于PicoDet的无人机视角VisDrone目标检测与ncnn部署_picodet ncnn

picodet ncnn

1. 项目简介

本项目基于PicoDet实现对无人机视角的VisDrone数据集进行目标检测并实现在ncnn中的推理。

1.1 PicoDet简介

PicoDet是百度新推出的轻量级目标检测网络,对anchor-free策略在轻量型目标检测模型中的应用进行了探索,通过对backbone、neck、标签分配策略以及训练方法等诸多优化,在精度-效率上取得了更好的均衡。

PicoDet-S仅需0.99M参数即可取得30.6%mAP,比YOLOX-Nano高4.8%同时推理延迟降低55%,比NanoDet指标高7.1%;

当输入尺寸为320时,在移动端ARM CPU上可以达到123FPS处理速度,推理框架为PaddleLite时,推理速度可达150FPS。

PicoDet-M仅需2.15M参数即可取得34.3%mAP指标;

PicoDet-L仅需3.3M参数即可取得40.9%mAP,比YOLOv5s高3.7%mAP,推理速度快44%。

与其他轻量级检测网络对比如下:

论文:https://arxiv.org/abs/2111.00902

代码:https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.3/configs/picodet

1.2 VisDrone数据介绍

配备摄像机的无人机或通用无人机具有广泛的应用,包括农业,航空摄影,快速交付和监视等。

VisDrone数据集是由天津大学等团队开源的一个大型无人机视角的数据集,官方提供的数据中训练集是6471、验证集是548,一共提供了以下11个类,分别是:'pedestrian', 'people', 'bicycle', 'car', 'van','truck', 'tricycle', 'awning-tricycle', 'bus', 'motor', 'others',其中others是非有效目标区域,本项目中予以忽略;

数据集主页:http://aiskyeye.com/challenge/object-detection/

数据集标注展示:

2. PicoDet算法介绍

官方的讲解非常详细,PPT参考如下;

2.1 PicoDet的算法特色

2.2 PicoDet的backbone

2.3 PicoDet的算法结构

2.4 SimOTA的特点

2.5 其他优化策略

3. 数据准备

PaddleDetection默认的是coco格式,而VisDrone有自己的标注格式,因此需要转换;

3.1 解压数据集

In [1]

  1. !mkdir work/data
  2. !unzip -oq data/data115729/VisDrone2019-DET-train.zip -d work/data
  3. !unzip -oq data/data115729/VisDrone2019-DET-val.zip -d work/data

3.2 转换数据格式为Coco格式

In [2]

  1. import json
  2. import os
  3. import cv2
  4. import numpy as np
  5. from PIL import Image
  6. import shutil
  7. class Vis2COCO:
  8. def __init__(self, save_path, train_ratio, category_list, is_mode="train"):
  9. self.category_list = category_list
  10. self.images = []
  11. self.annotations = []
  12. self.categories = []
  13. self.img_id = 0
  14. self.ann_id = 0
  15. self.is_mode = is_mode
  16. self.train_ratio = train_ratio
  17. self.save_path = save_path
  18. if not os.path.exists(self.save_path):
  19. os.makedirs(self.save_path)
  20. def to_coco(self, anno_dir, img_dir):
  21. self._init_categories()
  22. img_list = os.listdir(img_dir)
  23. for img_name in img_list:
  24. anno_path = os.path.join(anno_dir, img_name.replace(os.path.splitext(img_name)[-1], '.txt'))
  25. if not os.path.isfile(anno_path):
  26. print('File is not exist!', a
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号