
一 摘要
Claude Code最大的好处就是降低了一些专业工作的技术门槛,例如前端开发、算法工程师。让我们不必一切都从零开始学习,而是只要能够描述清楚需求,并具备一定的分析能力,就可以得到大部分所需要的结果。
前面几篇文章我们分别介绍了车牌识别的数据集,以及ollama和claude code的安装及使用方法,接下来我们将使用Claude Code来训练一个车牌识别模型,在前面下载的CCPD数据集上进行训练及测试。
二 YOLO框架
YOLO 是一个经典的计算机视觉目标检测算法系列,名字 "You Only Look Once" 生动地体现了它的核心优势——只需一次"看"图像,就能同时预测出所有物体的类别和位置。随着系列的演进,目前主流的 YOLOv5、v8 到 v11 等版本,都可以通过强大的 ultralytics Python 库来统一调用,极大地降低了使用门槛。
三 使用Claude Code的训练过程
3.1 输入目标
打开Claude Code,选择minimax-m2.5:cloud模型,在对话框中输入:
python 怎样用yolo训练车牌识别模型?
由于我本地已经有了CCPD数据集,接下来输入如下:
我本地已经有CCPD数据集,现在需要基于yolo训练一个车牌识别模型 Claude Code给出的回答如下:

实际上是Claude Code会执行shell命令,到你的磁盘上搜索包含CCPD的目录,当然中间需要你确认并对访问目录授权。其实如果要简化步骤,你可以直接输入数据集已下载的所在目录,这样可以简化操作。
3.2 找到数据集所在目录,探测+识别
找到CCPD数据集所在目录后,提示输入,进行检测+识别


可以看到,其实Claude Code具备分布思考、提示与执行能力,并且可以看到中间分析过程的一些提示词痕迹。

基于CCPD数据集训练的过程被分为三步:
1.将CCPD数据集转换为YOLO格式
2.创建YOLO数据集配置
3.训练YOLO检测模型
3.3 将CCPD数据集转换为YOLO格式
1、Claude Code需要先理解CCPD文件名的格式,然后编写转换脚本。在这一步中,实际执行的是Python的Image.open()方法,得到图片属性如下:图像尺寸是720x1160。文件名中 352&516_448&547 是边界框坐标(左上x&y_右下x&y)
2、编写数据转换脚本。在编写过程中可能还会根据实际情况运行调试,例如当目录被占用等情况

这一步执行完,会将CCPD数据转换为YOLO格式(txt标注文件),每个图片对应一个txt:
# 格式: class_id x_center y_center width height (归一化0-1)
0 0.5 0.5 0.3 0.2
创建 data.yaml:
path: /path/to/ccpd_dataset
train: images/train
val: images/val
names:
0: license_plate3、执行过程中也可能会提示安装依赖,如果你没有安装过opencv的话:
安装依赖
pip install ultralytics opencv-python pillow转换结果:

3.4 训练模型
Claude Code会编写训练脚本(train_yolo.py),并通过python3 train_yolo.py执行,输出如下:
⏺ Write(train_yolo.py)
⎿ Wrote 21 lines to train_yolo.py
1 #!/usr/bin/env python3
2 """YOLO车牌检测模型训练"""
3 from ultralytics import YOLO
4
5 # 使用YOLOv8n(nano)模型最快的训练
6 model = YOLO('yolov8n.pt')
7
8 # 训练
9 results = model.train(
10 data='ccpd_yolo/data.yaml',
… +11 lines (ctrl+o to expand)
⎿ API Error: Content block not found
⏺ Bash(python3 train_yolo.py)⏺训练已在后台开始运行。
训练参数:
- 模型: YOLOv8n (轻量快速)
- Epochs: 50
- 图像大小: 640
- Batch: 16
你可以用以下命令查看进度:
#查看训练日志
tail -f /private/tmp/claude-501/-Users-develop-learn-gitcodes-ai-openclaw-wechat/a2354418-db1f-474d-9faf-dd0c39f1ce26/tasks/b7zd7f24r.output
训练完成后模型保存在:
runs/detect/plate_detect/weights/best.pt之后就是漫长的训练过程(大约1~3个小时),可能会提前中断。出现这种情况,要求继续训练就可以了。或者如果感觉精度达到要求,那么也可以直接使用当前的训练结果。

3.5 推理测试
在Claude Code中选择用测试模型进行推理,Claude Code会生成测试脚本并执行(使用CCPD的test下的测试数据集):

3.6 结果不满,继续训练
上面的训练实际上只跑了3轮,不太符合预期,我们可以让Claude Code继续执行训练:
❯ 打开结果所在目录
⏺ Bash(open /Users/lijingyong/develop/learn/gitcodes/ai/openclaw-wechat/inference_output/results)
⎿ (No output)
⎿ API Error: Content block not found
⏺ 已打开结果目录,你可以查看检测后的图片。
✻ Crunched for 1m 12s · 1 shell still running
❯ 置信度是否有点低?能否达到90%以上
⏺ 当前置信度约84-88%,可以通过以下方式提升:
1. 继续训练更多epoch (推荐)
模型已训练4个epoch,精度还有提升空间。继续训练:
from ultralytics import YOLO
model = YOLO('runs/detect/plate_detect/weights/last.pt')
model.train(data='ccpd_yolo/data.yaml', epochs=50, resume=True)
2. 调整推理置信度阈值
降低阈值可检测更多车牌(但可能增加误检):
model.predict(..., conf=0.3) # 默认0.5
3. 使用更大模型
用yolov8s或yolov8m替代yolov8n:
model = YOLO('yolov8s.pt') # small
需要我继续训练模型吗?
✻ Worked for 40s · 1 shell still running
❯ 继续训练,不要中断这样,模型就会继续训练,等待训练完成即可。

四 YOLO目标检测评估指标介绍
YOLO目标检测的结果评估通常涉及4个指标:Precision(精确率),Recall(召回率),mAP50,mAP50-95。这几个指标的概念简要介绍如下:
1. Precision(精确率) 定义:预测为正例中真正例的比例
计算方式: Precision = TP / (TP + FP) - TP(True Positive):正确检测到的车牌
- FP(False Positive):误检为车牌的错误检测 衡量:模型预测的准确性有多高 优点:高Precision意味着误检少
缺点:可能漏检较多(保守预测)
2. Recall(召回率) 定义:实际正例中被正确检测到的比例
计算方式:Recall = TP / (TP + FN)
- FN(False Negative):漏检的车牌 衡量:找全车牌的能力
优点:高Recall意味着漏检少
缺点:可能误检增多(激进预测)
3. mAP50(Mean Average Precision @ IoU=0.5)
定义:IoU阈值为0.5时的平均精度
IoU(Intersection over Union):交并比,预测框与真实框的交集/并集 IoU = (预测框 ∩ 真实框) / (预测框 ∪ 真实框)
衡量:检测框与真实框重叠程度≥50%时视为正确
优点:标准宽松,适合实际应用
缺点:无法精确评估定位精度
4. mAP50-95(Mean Average Precision @ IoU=0.5~0.95) 定义:IoU从0.5到0.95(步长0.05)的平均精度
计算方式: mAP50-95 = (AP@50 + AP@55 + ... + AP@95) / 9
衡量:更严格的检测精度,要求检测框与真实框高度重合
优点:全面评估检测和定位能力
缺点:标准严格,数值通常较低
推理测试时,还提到了置信度指标,与上述四个指标的关系如下:

五 总结
这是我们作为算法小白跑的第一个模型。由此可见,Claude Code确实非常方便也很强大。不仅仅是对大模型的简单包装,更是可以改变我们日常工作模式,大幅提升工作效率的利器。