标题:运用YOLO对图像进行处理
1.对bus.jpg的预测实例
# 训练模型
from ultralytics import YOLO
import cv2
model = YOLO("yolov8n.pt")
#model.train(data="coco128.yaml", epochs=51) # 详细参数见2.2
# 验证模型
#model.val()
# 预测模型
result=model.predict(source=r"C:\PyCharm\ultralytics-main\bus.jpg") # 0是摄像头,详细参数见3.2
annotated_frame = result[0].plot()
cv2.imshow("girl",annotated_frame);
cv2.waitKey(0)
cv2.destroyAllWindows()
以下是运行结果:
2.对视频流进行预测
import cv2
from ultralytics import YOLO
# 加载模型
model = YOLO("yolov8n.pt")
# 打开视频文件
video_path = "C:\python study file\\59514dff3af037900c2ca5700aa9c173_raw.mp4"
cap = cv2.VideoCapture(video_path)
# 获取视频帧的维度
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
#创建VideoWriter对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter("C:\python study file\\csgo.mp4", fourcc, 20.0, (frame_width, frame_height))
#循环视频帧
while cap.isOpened():
# 读取某一帧
success, frame = cap.read()
if success:
# 使用yolov8进行预测
results = model(frame)
#可视化结果
annotated_frame = results[0].plot()
#将带注释的帧写入视频文件
out.write(annotated_frame)
else:
# 最后结尾中断视频帧循环
break
#释放读取和写入对象
cap.release()
out.release()
视频这里就不展示了;
自建数据集进行训练和预测
1.首先选择好图像集
我这里选择了19张小麦的图片,然后把图像集全部转为同意格式,如全为JPG或全为png;
参考csdn的文章运行.bat文件把图片格式转为jpg格式;
2.下载labelimg为图像集打标签(注意将标签文件保存为yolo格式)
即框选出识别的目标并标上名称;注意标签文件顺序需与图像集顺序相匹配;
这里是处理好的wheat文件夹
images中的train2017存放图像集;labels的train2017存放标签集;
重要:新建一个.yaml文件,并更改路径和classname;
3.训练
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.yaml') # build a new model from YAML
model = YOLO('yolov8n.pt') # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights
# Train the model
results = model.train(data=r'C:\PyCharm\ultralytics-main\dataset\wheat\my_wheat.yaml', epochs=100, resume=True,batch=4,lr0=0.01)
以下是训练过程;可以下载GPU版本的pytorch使用cuda和cudnn进行加速,但我用GPU版本的预测不会报错,拿来训练就会报错,所以这里还是用CPU版本的。
4.训练完成后(查看runs文件夹下文件)
以下是训练生成的其中两个文件;通过图表我们能看到训练效果的趋势;
在weight文件夹下我们能看到两个训练生成的权重文件,选择best.pt,我们就可以开始预测;
5.预测
# 训练模型
from ultralytics import YOLO
import cv2
model = YOLO(r"C:\PyCharm\ultralytics-main\codeBank\runs\detect\train11\weights\best.pt")
#model.train(data="coco128.yaml", epochs=51) # 详细参数见2.2
# 验证模型
#model.val()
# 预测模型
result=model.predict(source=r"C:\Users\13560\Desktop\0811230c2e75851827e1661d658730f.png") # 0是摄像头,详细参数见3.2
annotated_frame = result[0].plot()
cv2.imshow("girl",annotated_frame);
cv2.waitKey(0)
cv2.destroyAllWindows()
以下是运行结果: