风筝也叫纸鸢其中鸢是指什么
技术背景与核心定义
在开始实操之前,必须明确核心识别对象。鸢是指黑耳鸢,一种中型猛禽,外形似鹰,尾部呈叉状。本指南将利用计算机视觉技术,构建一个能够自动识别并定位图片中“鸢”的深度学习模型。我们将使用Ultralytics公司的YOLOv8架构,它在实时目标检测领域具有极高的精度和速度平衡。
一、开发环境搭建
为了确保模型训练和推理的稳定性,我们需要配置一个隔离的Python虚拟环境,并安装指定版本的依赖库。请严格按照以下步骤执行,避免因版本冲突导致的环境报错。
1. 创建Conda虚拟环境
打开终端(Terminal)或命令提示符(CMD),执行以下命令创建名为kite_detect的独立环境,Python版本指定为3.9:
conda create -n kite_detect python=3.9 -y
conda activate kite_detect
2. 安装核心依赖库
激活环境后,安装PyTorch(CPU版本即可满足基础训练,如有GPU需求请安装CUDA版本)以及YOLOv8的核心库ultralytics。同时安装图像处理库opencv-python用于后续的数据读取:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
pip install ultralytics opencv-python pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simple
二、鸢鸟数据集准备与标注
模型训练的核心在于数据。我们需要准备包含“鸢”的图片数据,并进行标注。这里假设你已经收集到了鸢鸟的图片(可通过爬虫获取或使用公开数据集)。
1. 安装标注工具LabelImg
LabelImg是目前最高效的图像标注工具之一。执行以下命令进行安装:
pip install labelImg -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后,在终端输入labelImg即可启动工具。
2. 数据集目录结构规范
在项目根目录下创建datasets文件夹,并严格按照YOLOv8要求的目录结构存放文件。目录结构必须如下所示:
kite_project/
├── datasets/
│ ├── kite_data/
│ │ ├── images/
│ │ │ ├── train/ 放置训练图片
│ │ │ └── val/ 放置验证图片
│ │ └── labels/
│ │ ├── train/ 放置训练标注文件
│ │ └── val/ 放置验证标注文件
└── ...
3. 执行标注操作
启动LabelImg后,点击菜单栏的Change Save Dir,指向datasets/kite_data/labels/train。点击Open Dir,指向datasets/kite_data/images/train。
操作细节:
- 创建类别: 点击左侧
View->Auto Save mode开启自动保存。 - 绘制框选: 使用快捷键
W绘制矩形框,框住图片中的鸢鸟。 - 定义标签: 在弹出的对话框中输入
kite(注意:YOLO默认类别名为英文,且不要包含空格)。 - 格式切换: 必须点击
File->Save As,选择格式为YOLO。这会将坐标转换为归一化的txt格式。
4. 配置数据集描述文件
在datasets/kite_data/目录下创建data.yaml文件。该文件告诉模型数据的路径和类别信息。请直接复制以下完整内容,不要遗漏任何标点符号:
path: ../datasets/kite_data 数据集根目录
train: images/train 训练集图片相对路径
val: images/val 验证集图片相对路径
类别定义
names:
0: kite 0代表类别ID,kite代表类别名称
三、模型训练配置与执行
数据准备就绪后,开始训练模型。我们将使用YOLOv8的Nano版本(yolov8n.pt),它体积小、速度快,非常适合在普通CPU或低端GPU上运行。
1. 编写训练脚本
为了方便重复调用,我们编写一个Python脚本train.py。请确保data.yaml中的路径绝对正确。
from ultralytics import YOLO
加载预训练模型
'yolov8n.pt' 会自动从官方库下载首次运行
model = YOLO('yolov8n.pt')
开始训练
results = model.train(
data='datasets/kite_data/data.yaml', 数据集配置文件路径
epochs=100, 训练轮数,100轮足以收敛
imgsz=640, 输入图像尺寸
batch=16, 批次大小,显存不够可改为8
device='cpu', 如果有NVIDIA显卡,改为'0'
plots=True, 生成训练曲线图
save=True 保存最佳权重
)
2. 启动训练
在终端执行以下命令开始训练过程:
python train.py
训练监控: 训练过程中,终端会实时打印Loss(损失值)和mAP(精度指标)。当mAP50不再上升时,说明模型已经收敛。训练完成后,最佳权重会保存在runs/detect/train/weights/best.pt。
四、模型验证与性能评估
训练完成后,必须使用验证集来评估模型的实际表现,确保模型没有过拟合。
1. 执行验证命令
我们可以直接使用Python代码调用验证功能:
from ultralytics import YOLO
加载训练好的最佳权重
model = YOLO('runs/detect/train/weights/best.pt')
开始验证
metrics = model.val(
data='datasets/kite_data/data.yaml',
split='val', 指定验证验证集
imgsz=640
)
打印核心指标
print(f"mAP50-95: {metrics.box.map}")
print(f"mAP50: {metrics.box.map50}")
print(f"Precision: {metrics.box.mp}")
print(f"Recall: {metrics.box.mr}")
指标解读: mAP50表示当预测框与真实框的重叠度大于50%时的平均精度,这是衡量鸢鸟识别准确率的最重要指标。
五、鸢鸟检测推理实操
最后一步是将模型应用到实际场景中。我们将编写一个脚本,读取一张新图片,识别其中的鸢鸟,并绘制出框选结果。
1. 编写推理脚本
创建predict.py,输入以下完整代码。该脚本会加载模型,对指定图片进行预测,并将结果保存为result.jpg。
import cv2
from ultralytics import YOLO
def detect_kite(image_path):
1. 加载训练好的模型
model = YOLO('runs/detect/train/weights/best.pt')
2. 进行推理
conf=0.25 表示置信度阈值大于25%的结果才保留
results = model.predict(source=image_path, conf=0.25, save=True)
3. 解析并打印结果
for r in results:
boxes = r.boxes
for box in boxes:
获取类别ID
cls_id = int(box.cls[0])
获取类别名称
cls_name = model.names[cls_id]
获取置信度
conf = float(box.conf[0])
获取坐标 [x1, y1, x2, y2]
coords = box.xyxy[0].tolist()
print(f"检测到目标: {cls_name}, 置信度: {conf:.2f}, 坐标: {coords}")
print(f"处理完成,结果已保存在 runs/detect/predict/ 目录下")
if __name__ == '__main__':
将此处替换为你实际要测试的图片路径
test_image = 'test_kite.jpg'
detect_kite(test_image)
2. 运行测试
将一张包含鸢鸟的图片重命名为test_kite.jpg放在项目根目录,然后运行:
python predict.py
运行结束后,打开runs/detect/predict文件夹,你将看到带有绿色边框和置信度标注的鸢鸟识别结果图。至此,从环境搭建到模型部署的完整闭环已全部打通。
版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/25186.html
- 上一篇:物资筹备LS
- 下一篇:《LOL》弗雷尔卓德之心布隆台词有哪些
