yolov8测试自己的图片
时间: 2023-10-31 10:56:17 浏览: 202
可以使用以下步骤测试自己的图片:
1. 下载并安装 Darknet 框架,可以从 https://github.com/AlexeyAB/darknet 上下载。
2. 下载 yolov8 模型和配置文件,可以从 https://github.com/WongKinYiu/yolov8 上下载。
3. 将要测试的图片放入 Darknet 框架的 data 目录下。
4. 在命令行中执行以下命令:
```
./darknet detector test cfg/coco.data cfg/yolov8.cfg yolov8.weights data/your_image.jpg
```
其中,coco.data 是数据集配置文件,yolov8.cfg 是模型配置文件,yolov8.weights 是模型权重文件,your_image.jpg 是要测试的图片路径。
5. 等待测试完成后,在命令行中会输出目标检测结果。
注意:如果要测试多张图片,可以将图片路径写入一个 txt 文件中,然后将 txt 文件作为参数传入命令行。
相关问题
用yolov8测试自己的数据集
要使用YOLOv8测试自己的数据集,首先需要准备好自己的数据集。可以参考Yolov5吸烟检测数据集,这是一个用于训练和测试Yolov5模型的数据集,旨在识别和检测图像中的吸烟行为。该数据集包含了大量的图像样本,涵盖了各种吸烟场景。
在准备好数据集之后,接下来需要进行模型的训练。首先,需要下载YOLOv8的代码和预训练模型。可以在GitHub上找到相应的代码和模型。
然后,需要对数据集进行标注,即给每张图片中的各个目标框添加标签信息。可以使用标注工具如LabelImg来完成这一步骤。
接着,需要修改YOLOv8的配置文件,将其配置为适合自己数据集的参数。可以根据自己的需求修改类别数量、训练集和测试集的路径等参数。
在配置文件修改完成后,可以开始进行模型的训练。使用YOLOv8的训练脚本,指定配置文件和数据集路径,即可开始训练。
训练完成后,可以使用YOLOv8的测试脚本对自己的数据集进行测试。将测试集的路径和训练好的模型路径传入测试脚本,即可得到检测结果。
总结起来,使用YOLOv8测试自己的数据集的步骤包括准备数据集、下载代码和预训练模型、标注数据集、修改配置文件、进行模型训练和进行测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [Yolov8训练自己的数据集](https://blog.csdn.net/m0_63774211/article/details/129864562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [yolov5吸烟检测数据集-yolov5抽烟识别检测数据集.zip 文件](https://download.csdn.net/download/qq_59708493/87954583)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
yolov8测试脚本
以下是yolov8测试脚本的示例代码:
```python
import cv2
import numpy as np
import onnxruntime as ort
# 加载模型
sess = ort.InferenceSession('models/yolov8s.onnx')
# 加载类别名称
with open('yolov8_onnx/coco.names', 'r') as f:
class_names = [cname.strip() for cname in f.readlines()]
# 定义输入和输出节点名称
input_name = sess.get_inputs()[0].name
output_names = [sess.get_outputs()[i].name for i in range(len(sess.get_outputs()))]
# 定义预处理函数
def preprocess(img):
# 缩放图像
img = cv2.resize(img, (416, 416))
# 转换颜色空间
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 归一化像素值
img = img.astype(np.float32) / 255.0
# 转换维度顺序
img = np.transpose(img, [2, 0, 1])
# 添加批次维度
img = np.expand_dims(img, axis=0)
return img
# 定义后处理函数
def postprocess(outputs, conf_thresh=0.5, nms_thresh=0.5):
# 解析输出
boxes, scores, classes = [], [], []
for output in outputs:
output = np.squeeze(output)
num_classes = output.shape[1] - 5
for i in range(output.shape[0]):
box = output[i, :4]
score = output[i, 4]
class_idx = np.argmax(output[i, 5:])
class_score = output[i,5 + class_idx]
if score * class_score > conf_thresh:
x1, y1, x2, y2 = box
boxes.append([x1, y1, x2, y2])
scores.append(score * class_score)
classes.append(class_idx)
# 非极大值抑制
keep = cv2.dnn.NMSBoxes(boxes, scores, conf_thresh, nms_thresh)
# 构建检测结果
results = []
if len(keep) > 0:
for idx in keep.flatten():
x1, y1, x2, y2 = boxes[idx]
score = scores[idx]
class_idx = classes[idx]
class_name = class_names[class_idx]
results.append({'box': [x1, y1, x2, y2], 'score': score, 'class': class_name})
return results
# 加载图像
img = cv2.imread('yolov8_onnx/dog.jpg')
# 预处理图像
img = preprocess(img)
# 运行模型
outputs = sess.run(output_names, {input_name: img})
# 后处理输出
results = postprocess(outputs)
# 显示结果
for result in results:
x1, y1, x2, y2 = result['box']
score = result['score']
class_name = result['class']
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(img, f'{class_name} {score:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
该脚本可以加载yolov8的onnx模型,并对一张图片进行推理,输出检测结果。在预处理函数中,将图像缩放到416x416大小,并归一化像素值;在后处理函数中,解析模型输出,进行非极大值抑制,并构建检测结果。最后,将检测结果绘制在原图上并显示出来。
阅读全文