YOLOX RMPOLY For Python

本算法为适应robomaster比赛,而改动自矩形识别的yolox算法。
基于旷视科技YOLOX,实现对不规则四边形的目标检测
TODO 修改onnx推理模型
更改/添加标注:
1.yolox/models/yolox_polyhead.py:
1.1继承yolox/models/yolo_head.py YOLOXHead类,修改代码使其输出变为四点。
1.1.1修改构造函数
1.1.2修改get_output_and_grid函数,使其grid变为4对xy坐标的形式
1.1.3修改forward函数
1.1.4修改get_loses
1.1.5把自带的l1损失函数改成smoothl1,注意它自带的是算的xywh,要改成xyxyxyxy
正样本匹配策略还是依靠dynamic-k,用的是不规则四边形的最小外接矩形的iou
2.yolox/models/losses.py:(弃用)
新增PolyIOULoss类,iou是四边形的最小外接矩形iou,并新增四个坐标点的smoothl1_loss(弃用)
3.yolox/utils/boxes.py:
3.1增加order_corners函数,用于给不规则四边形的四个点排序
3.2增加minimum_outer_rect函数,用于求解四边形的最小外接矩形
3.3增加poly_adjust_box_anns函数
4.新增exps/yolox_s_rmpoly.py配置文件
5.新增yolox/exp/yolox_poly_base.py配置文件基类
6.新增yolox/data/datasets/rmpoly.py
6.1新增RMPOLYDataset类
6.1.1修改数据集读取方式,读取八点
6.1.2修改pull_item
6.1.3修改load_anno
7.yolox/data/data_augment.py
7.1新增PolyTrainTransform类,对四点数据进行数据增强(未完待续)
7.2poly_random_affine
7.2poly_apply_affine_to_bboxes
8.yolox/data/datasets/mosaicdetection.py
8.1新增PolyMosaicDetection(未完待续)
8.2_polymirror
9.yolox/models/yolox.py
9.1 YOLOX类:
为了适应yolox/models/yolox_polyhead.py中YOLOXPolyHead类的get_losses函数返回字典,修改forward函数中训练时返回值。(弃用)
可以试着把求解回归损失的smoothl1_loss改成归一化后的坐标再求损失。
Introduction
YOLOX is an anchor-free version of YOLO, with a simpler design but better performance! It aims to bridge the gap between research and industrial communities.
For more details, please