船舰尾迹数据集训练:使用YOLOv8进行目标检测与速度反演
创作时间:
作者:
@小白创作中心
船舰尾迹数据集训练:使用YOLOv8进行目标检测与速度反演
引用
CSDN
1.
https://blog.csdn.net/2401_88440984/article/details/145974590
本文将介绍如何使用YOLOv8目标检测模型对船舰尾迹数据集进行训练,以实现船只检测和速度反演。文章内容包括数据准备、模型选择与训练、目标检测和速度反演的步骤,并提供了详细的代码示例。
船舰尾迹数据集包含12000张图片,每张图片都展示了船只在水面行驶时产生的尾迹。通过深度学习目标检测模型YOLOv8,我们可以对这些尾迹进行训练,从而实现舰船目标检测以及反演船只速度的任务。
数据准备
首先,确保数据集已经准备好,并且每张图片都标注了船只的位置(边界框)以及可能的速度信息。如果没有现成的数据集,你可能需要自行标注。
假设你的数据集结构如下:
ship_wake_dataset/
├── images/
│ ├── img1.jpg
│ ├── img2.jpg
│ └── ...
└── labels/
├── img1.txt # 标注文件,包含边界框坐标和速度信息
├── img2.txt
└── ...
每个标注文件的内容格式示例(YOLO格式):
0 0.5 0.5 0.3 0.4 12 # 类别ID, 中心点x, 中心点y, 宽度, 高度, 速度
模型选择与训练
为了实现这个任务,可以使用YOLOv8等目标检测模型进行船只检测,然后根据尾迹特征反演出船只的速度。
安装依赖库
pip install ultralytics opencv-python-headless
创建配置文件
创建一个配置文件 data_ship_wake.yaml 来描述数据集路径和类别信息:
train: ./ship_wake_dataset/images/train/
val: ./ship_wake_dataset/images/val/
test: ./ship_wake_dataset/images/test/
nc: 1 # 只有一个类别:船只
names: ['ship']
训练模型
编写脚本开始训练过程:
from ultralytics import YOLO
def main_train():
model = YOLO('yolov8n.yaml') # 或者直接加载预训练权重,如 'yolov8n.pt'
results = model.train(
data='./data_ship_wake.yaml',
epochs=100, # 根据需要调整
imgsz=640,
batch=16,
project='./runs/detect',
name='ship_wake_detection',
optimizer='SGD',
device='0', # 使用GPU编号
save=True,
cache=True,
)
if __name__ == '__main__':
main_train()
目标检测与速度反演
训练完成后,我们可以利用训练好的模型对新图片进行预测,并尝试从尾迹中反演船只的速度。
推理脚本
import cv2
from PIL import Image
from ultralytics import YOLO
model = YOLO('./runs/detect/ship_wake_detection/weights/best.pt')
def detect_and_estimate_speed(image_path):
results = model.predict(source=image_path)
img = cv2.imread(image_path)
for result in results:
boxes = result.boxes.numpy()
for box in boxes:
r = box.xyxy
x1, y1, x2, y2 = int(r[0]), int(r[1]), int(r[2]), int(r[3])
label = result.names[int(box.cls)]
confidence = box.conf
if confidence > 0.5: # 设置置信度阈值
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) # 绘制矩形框
speed = box.speed # 假设速度信息可以从模型输出中获得
cv2.putText(img, f'{label} {confidence:.2f} Speed: {speed}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
return img
# 示例调用
result_image = detect_and_estimate_speed('your_test_image.jpg') # 确保测试图像路径正确
Image.fromarray(cv2.cvtColor(result_image, cv2.COLOR_BGR2RGB)).show() # 使用PIL显示图像
备注: 上述代码中的 box.speed 是一个假设计划,YOLOv8默认不会直接输出速度信息。要实现速度反演,你需要基于尾迹模式开发额外的算法或使用机器学习方法来估计速度。这通常涉及到图像处理技术(例如,计算尾迹长度和方向)和物理模型(例如,基于流体力学的模型)的结合。
文章来源: CSDN
热门推荐
洋湖湿地:水世界撑起梦想城
大一匹和1.5匹空调有什么区别?为什么说“买大不买小”?三个原因
安全生产标准化管理体系的主要内容有哪些?
关于隐形眼镜的“七问”
冲煮深烘焙和浅烘焙咖啡的手法有什么区别?
全生命周期口腔保健专家建议丨科学吃糖 远离酸性饮料
老中医:别再让脾胃背锅了!舌头有裂纹,舌苔厚腻关键在肝胆!
毒品预防宣教基地建设:打造全民禁毒教育新高地
春季腰椎间盘突出高发?这份预防指南请收好!
除数被除数怎么区分的诀窍 有哪些不同
薯片含致癌添加剂?专家解读TBHQ、丙烯酰胺的食用健康风险
如何将游乐园变为幼儿教育的乐园,实现寓教于乐的互动体验?
柔性PCB制造工艺详解:从设计到检验的完整流程
家庭高粱米的做法教你怎么吃最好
iPhone 过热?了解原因以及如何快速降温
嚼口香糖益处多,但这些人要谨慎!如果“嚼错”很危险
这些人为什么拥有了“超能力”
理解超能力型宝可梦:优势与劣势解析
新加坡是移民国家吗?多元文化与历史的起点
医生发现:胃病患者若常吃苹果,用不了多久,身体或会有4种改善
4060Ti显卡8GB与16GB显存版对比总结
人民法院案例库:常伴人民群众身边的免费法律顾问
Vlog拍摄内容大揭秘:有哪些创意主题与实用技巧?
揭秘财税之谜:“劳务报酬和工资薪金需要合并报税吗?”一文读懂税务规划!
缓解胃部不适的有效方法与生活习惯调整指南
哪里的腐乳最好吃,经评比,这8个地方的很有特色,你都吃过吗
《伤寒论》六经辨证必知的六条经方
什么饼干养胃最好?四种养胃饼干推荐及日常注意事项
2025年中国输电线路铁塔行业发展趋势分析
人寿保险受益人受益权法律问题探析