使用yolov8进行文本行检测

最近使用yolov8进行字符检测任务,因为场景数据是摆正后的证件数据,所以没有使用DB进行模型训练,直接选用了yolov8n进行文本检测,但是长条字符区域检测效果一直不太好,检出不全,通过检测和分割等算法的调试,发现算法本身不太适合作文本检测,然后调试的时候去掉了DFL loss,整个检出效果就可以使用了,目前还没有对DFL loss进行算法分析。修改不使用DFL loss 的代码在:ultralytics-main/ultralytics/nn/modules.py中line 396修改为1:

使用yolov8进行文本行检测_第1张图片

 仅此记录一下。( torch.nn.Identity( )  作用是输入是什么,输出就是什么)

DFL loss的全称Distribution Focal Loss;首次提出是:https://arxiv.org/pdf/2006.04388.pdf

将框的位置建模成一个 general distribution,让网络快速的聚焦于和目标位置距离近的位置的分布 

对yolov8 DFL loss的详细解说可参考:

YOLOv8-损失函数 - 知乎

补充细节说明:

运行代码在: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)

你可能感兴趣的:(ocr,YOLO)