一、介绍
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虚拟现实应用中的目标跟踪和识别等。