YOLOv8实现旋转对象检测

yolov8 obb介绍
yolov8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步,现已经支持旋转对象检测(obb),基于dota数据集,支持航拍图像的15个类别对象检测,包括车辆、船只、典型各种场地等。包含2800多张图像、18w个实例对象。
yolo obb标注数据格式,主要是类别与四个角点归一化到0~1之间的坐标,格式表示如下:
class_index, x1, y1, x2, y2, x3, y3, x4, y4训练以后的yolov8预测xyhwr + 类别数目,不同尺度的yolov8 obb模型的精度与输入格式列表如下:
导出与预测
基于yolov8命令行推理测试:
## 导出yolo export model=yolov8s-obb.pt format=onnx## 推理yolo obb predict model=yolov8n-obb.pt source=plane_03.jpg
onnx推理代码演示
基于openvino2023与onnx格式模型直接预测推理,首先看一下onnx格式的yolov8-obb输入与输出格式:
旋转对象检测-代码演示
class_list = load_classes()colors = [(255, 255, 0), (0, 255, 0), (0, 255, 255), (255, 0, 0)]ie = core()for device in ie.available_devices:    print(device)# read irmodel = ie.read_model(model=yolov8s-obb.onnx)compiled_model = ie.compile_model(model=model, device_name=cpu)output_layer = compiled_model.output(0)## xywhrframe = cv.imread(d:/wh860.jpg)# frame = cv.imread(wh300.jpg)# frame = cv.imread(obb_01.jpeg)bgr = format_yolov8(frame)img_h, img_w, img_c = bgr.shapestart = time.time()image = cv.dnn.blobfromimage(bgr, 1 / 255.0, (1024, 1024), swaprb=true, crop=false)res = compiled_model([image])[output_layer] # 1x25x8400rows = np.squeeze(res, 0).tboxes, confidences, angles, class_ids = post_process(rows)indexes = cv.dnn.nmsboxes(boxes, confidences, 0.25, 0.45)m = np.zeros((2, 3), dtype=np.float32)for index in indexes:    box = boxes[index]    d1 = -angles[index]    color = colors[int(class_ids[index]) % len(colors)]    pts = [(box[0], box[1]), (box[0]+box[2], box[1]), (box[0]+box[2], box[1]+box[3]), (box[0], box[1]+box[3])]    rrt_pts = get_rotate_point(pts, m, d1, box)    cv.drawcontours(frame, [np.asarray(rrt_pts).astype(np.int32)], 0, (255, 0, 255), 2)    cv.rectangle(frame, (box[0], box[1] - 20), (box[0] + box[2], box[1]), color, -1)    cv.puttext(frame, class_list[class_ids[index]], (box[0], box[1]-8), cv.font_hershey_simplex, .5, (255, 255, 255))end = time.time()inf_end = end - startfps = 1 / inf_endfps_label = fps: %.2f % fpscv.puttext(frame, fps_label, (20, 45), cv.font_hershey_simplex, 1, (0, 0, 255), 2)cv.imshow(yolov8-obb+openvino2023.x object detection, frame)cv.imwrite(d:/wk_result.jpg, frame)cv.waitkey(0)cv.destroyallwindows()


华东理工新型导热填料的导热系数可提高500%
螳螂慧视:以3D视觉赋能各行各业,提升智能化水平
许居衍:“摩尔定律已死,AI万岁”
谐波电压or谐波电流的差异主要表现在这里!
详解ANSYS nCode结构疲劳设计方法
YOLOv8实现旋转对象检测
IC业政策引导 我国制度创新别无他法?
PX3嵌入式芯片参数介绍
低压线性稳压器和BUCK降压稳压器对比
百度Apollo中标,展示支持L4级自动驾驶的车路协同系统整体解决方案
led灯是选择变压器还是镇流器?
雷曼不断推进Micro LED新型显示技术的发展
马自达销量不够 只能拿产品来凑
车辆厘米级高精度定位如何去实现
关于未来机器学习研究和前沿问题的思考与展望
云计算领域怎样开启“战争”
巨蟹座版的众泰SR7被赋予“新魔方”的百变概念,真的是美到不可理喻!
数控机床的常见故障案列分析
电流传感器主要特性参数
网络分配器与交换器区别