您的位置:

Yoloxgithub:一种轻量级对象检测算法的开源实现

一、介绍

Yoloxgithub是一种轻量级对象检测算法,基于Yolo系列算法的思路,采用去掉大量冗余层、增加SPP池化层,以及采用Bisenetv2的FPN结构做特征图融合等方式来实现模型的轻量化和速度的提升。

作为一种高效的目标检测模型,Yoloxgithub在Github上开源后受到了广大开发者的关注和使用,甚至成为了目前最有机会代替Yolov5的模型之一。

二、性能优化

相较于传统的Yolov5等目标检测模型,Yoloxgithub主要通过以下几种方式做性能优化:

1、去除大量冗余层

Yoloxgithub去掉了Yolo系列算法中大量重复的卷积层,使得模型在不降低检测精度的情况下更加轻量化。

2、采用SPP池化层

Yoloxgithub采用了SPP(Spatial Pyramid Pooling)池化技术,该技术能够对不同尺度的目标物体进行检测,从而提高了模型的检测精度。

3、Bisenetv2 FPN特征融合

Yoloxgithub采用Bisenetv2的FPN特征融合技术来增强模型的表达能力,实现对小物体的更好检测效果。

三、实现代码

  
# yolox_mobile_s.py
## add data augmentation 
## target size 640
# Training YOLOX_S on COCO2017 train2017
# python tools/train.py -f exps/example/yolox_s.py -d 1 -b 2 -o -c resume latest.pth
##
## eval yolox-s on coco2017 test-dev2017
# python tools/eval.py -f exps/example/yolox_s.py -c latest.pth -b 2 --fuse
from yolox.exp import Exp as MyExp
from yolox.utils import YOLOX_COLORS
from yolox.data import COCO_CLASSES

class Exp(MyExp):

    def __init__(self):
        super(Exp, self).__init__()
        self.input_size = (640, 640)
        self.dynamic_scale = True
        self.depth = 0.33
        self.width = 0.5
        self.max_epoch = 300
        self.num_classes = 80
        self.print_interval = 10
        self.eval_interval = 30
        self.output_dir = "yolox_outputs"
        self.train_ann = "train.json"
        self.val_ann = "val.json"
        self.data_num_workers = 1 
        self.input_perm = (2, 0, 1)
        self.color_list = YOLOX_COLORS
        self.cat_ids = {cat: i for i, cat in enumerate(COCO_CLASSES)}
        self.strides = [8, 16, 32]
        self.reg_topk = 6
        self.hm_weight = 1.
        self.use_fast_pred = True
        self.exp_name = "yolox-s"
        self.image_weights = False
  

四、应用场景

Yoloxgithub适用于各种需要实时目标检测的应用场景,例如:

1、移动端人脸识别、车辆识别等智能交通应用;

2、无人机、摄像头等安防监控应用;

3、AR/VR虚拟现实应用中的目标跟踪和识别等。