目标:将推理结果保存为xyxy形式,并以 pkl 格式保存
主要采取了两种方式,一种是阅读源码,通过CIL的方式保存结果。
一种是在IDE内,通过python代码的形式。
- 查看推理相关的源码,探索保存结果的相关信息。
在文件 ultralytics-main\ultralytics\yolo\engine 中 - 在IDE中运行python
1. 分析源码
2. 通过CIL形式运行并对源码进行修改
a.
获得的坐标结果是归一化后的结果,不是目标理想结果。
results 中有关于坐标转换的信息,进而发现具体内容在utils.ops中。
ops 中:
本项目目标:返回 xyxy 格式。
data 中原本格式应该就是 xyxy
做如下修改,将xywhn 改为xyxy
CIL运行:
yolo detect predict model=C:\WORK\puniu\yolo\trafficmodel\traffic_das581_yolo8.pt source=C:\WORK\puniu\yolo\data\partdata save_txt=True save_conf=True
sad ,坐标没有变成原图坐标
继续修改
3. IDE 内运行python代码
ps : 转步IDE,格式
在IDE中使用代码的方式读取和保存。
https://docs.ultralytics.com/modes/predict/
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.pt') # pretrained YOLOv8n model
# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.jpg']) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bbox outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Class probabilities for classification outputs
import pickle
# Load a model
model = YOLO('traffic_das581_yolo8.pt') # pretrained YOLOv8n model
# Run batched inference on a list of images
#results = model("20230621-163105-0.bmp") # return a list of Results objects
results = model("..//data") # return a list of Results objects
preds=[]
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bbox outputs
pred = boxes.data
preds.append(pred)
with open('my_listv8.pkl', 'wb') as f22:
pickle.dump(preds, f22)
查看result,会有大惊喜,yolo8真的太仙了,里面包含各种形式的输出结果
xyxy xywh xywhn cls conf 等,想要的结果都有。
并且,result.save_txt 也可也直接将结果保存为txt。 在IDE中运行时,之前对results.py做的修改就可以起作用,输出未归一化之前的xyxy。
但是还是不能理解,为什么在CMD 里通过CIL的形式结果不对。