赞
踩
最近使用yolov8进行字符检测任务,因为场景数据是摆正后的证件数据,所以没有使用DB进行模型训练,直接选用了yolov8n进行文本检测,但是长条字符区域检测效果一直不太好,检出不全,通过检测和分割等算法的调试,发现算法本身不太适合作文本检测,然后调试的时候去掉了DFL loss,整个检出效果就可以使用了,目前还没有对DFL loss进行算法分析。修改不使用DFL loss 的代码在:ultralytics-main/ultralytics/nn/modules.py中line 396修改为1:
仅此记录一下。( torch.nn.Identity( ) 作用是输入是什么,输出就是什么)
DFL loss的全称Distribution Focal Loss;首次提出是:https://arxiv.org/pdf/2006.04388.pdf
将框的位置建模成一个 general distribution,让网络快速的聚焦于和目标位置距离近的位置的分布
对yolov8 DFL loss的详细解说可参考:
补充细节说明:
运行代码在:train_detect.py
本人使用的是n结构,所以配置如下:
- from ultralytics import YOLO
-
- # Load a model
- model = YOLO('yolov8n-seg.yaml') # build a new model from YAML
- model = YOLO('yolov8n-seg.pt') # load a pretrained model (recommended for training)
-
- # Train the model
- # model.train(data='coco_38classes.yaml', epochs=100, imgsz=640, save=True)
- # model.train(data='coco_txtlinedetect.yaml', epochs=100, imgsz=640, save=True)
- model.train(data='coco_txtlinedetect_seg.yaml', epochs=300, imgsz=640, save=True)
数据配置文件在:/ultralytics/datasets/coco_txtlinedetect_seg.yaml 中;
参数详细配置:/ultralytics/yolo/cfg/default.yaml
其中有一个早停机制:patience: 300 (默认是50)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。