项目地址
https://github.com/ultralytics/ultralytics
用git clone到本地之后进入根目录。
yolov8
在自动标注的时候,推理的性能可以往后考虑,优先使用精确度最高的模型,从上面可以看到,yolov8x在参数量最大,mAP最高,也就是在召回率和准确率方面性能最好,采用这个模型能有更好的标注结果。
获取模型bbox的极简demo
有时候是想要获取yolo检测的bbox框。下面的代码中的yolov8x.pt会在运行的时候自动下载,路径就是当前的根目录。
import random
import cv2 as cv
from ultralytics import YOLO
# model = YOLO("yolov8m.yaml")
# model = YOLO("yolov8m.pt")
model = YOLO("yolov8x.pt")
coco_label = ["person", "bicycle", "car", "motorcycle", "airplane",
"bus", "train", "truck", "boat", "traffic light", "fire hydrant",
"stop sign", "parking meter", "bench", "bird", "cat", "dog", "horse",
"sheep", "cow", "elephant", "bear", "zebra", "giraffe", "backpack",
"umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard",
"sports ball", "kite", "baseball bat", "baseball glove", "skateboard",
"surfboard", "tennis racket", "bottle", "wine glass", "cup", "fork",
"knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange",
"broccoli", "carrot", "hot dog", "pizza", "donut", "cake", "chair",
"couch", "potted plant", "bed", "dining table", "toilet", "tv",
"laptop", "mouse", "remote", "keyboard", "cell phone", "microwave",
"oven", "toaster", "sink", "refrigerator", "book", "clock", "vase",
"scissors", "teddy bear", "hair drier", "toothbrush"]
def generate_colors(num_colors):
colors = []
for _ in range(num_colors):
r = random.randint(0, 255)
g = random.randint(0, 255)
b = random.randint(0, 255)
colors.append((r, g, b))
return colors
coco_colors = generate_colors(len(coco_label))
results = model("/media/xp/data/image/sample/person2.jpg")
for r in results:
# print(r.boxes)
img = cv.imread(r.path)
for box in r.boxes:
x1, y1, x2, y2, score, class_id = box.data[0]
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
cv.rectangle(img, (x1, y1), (x2, y2), coco_colors[int(class_id)], 2)
cv.putText(img, coco_label[int(class_id)], (x1, y1), cv.FONT_HERSHEY_SIMPLEX,