AI学习笔记二十九:YOLOV12部署测试
若该文为原创文章,转载请注明原文出处。
先测试下yolov12,后面部署到RK3568上。
本次测试使用的是win 10 ,无GPU,直接简单安装环境并使用CPU测试,数据集制作及训练后续介绍。
一、环境搭建
1、创建虚拟环境
conda create -n yolov12 python=3.11
2、激活
conda activate yolov12
3、下载YOLOV12源码
GitHub - sunsmarterjie/yolov12: YOLOv12: Attention-Centric Real-Time Object Detectors
4、下载flash_attn
这个分为先多版本
Releases · kingbri1/flash-attention · GitHub
下载win版本
下载好后将其放置到【yolov12-main】文件夹中
5、安装
//加清华源
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install flash_attn-2.7.4.post1+cu124torch2.6.0cxx11abiFALSE-cp311-cp311-win_amd64
pip install -e .
到此,环境搭建完成
接下来测试
二、测试
1、下载模型
https://github.com/sunsmarterjie/yolov12/releases/download/turbo/yolov12s.pt
2、测试
yolo predict model=E:/desktop/yolov12-main/yolov12s.pt source='E:/desktop/yolov12-main/bus.jpg'
3、编写代码测试
import cv2
from ultralytics import YOLOdef predict(chosen_model, img, classes=[], conf=0.5):if classes:results = chosen_model.predict(img, classes=classes, conf=conf)else:results = chosen_model.predict(img, conf=conf)return resultsdef predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1):results = predict(chosen_model, img, classes, conf=conf)for result in results:for box in result.boxes:cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])),(int(box.xyxy[0][2]), int(box.xyxy[0][3])), (255, 0, 0), rectangle_thickness)cv2.putText(img, f"{result.names[int(box.cls[0])]}",(int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10),cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), text_thickness)return img, results# defining function for creating a writer (for mp4 videos)
def create_video_writer(video_cap, output_filename):# grab the width, height, and fps of the frames in the video stream.frame_width = int(video_cap.get(cv2.CAP_PROP_FRAME_WIDTH))frame_height = int(video_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))fps = int(video_cap.get(cv2.CAP_PROP_FPS))# initialize the FourCC and a video writer objectfourcc = cv2.VideoWriter_fourcc(*'MP4V')writer = cv2.VideoWriter(output_filename, fourcc, fps,(frame_width, frame_height))return writermodel = YOLO("E:/desktop/yolov12-main/yolov12s.pt")output_filename = "E:/desktop/yolov12-main/result.mp4"video_path = r"E:/desktop/yolov12-main/test.mp4"
cap = cv2.VideoCapture(video_path)
writer = create_video_writer(cap, output_filename)
while True:success, img = cap.read()if not success:breakresult_img, _ = predict_and_detect(model, img, classes=[], conf=0.5)writer.write(result_img)cv2.imshow("Image", result_img)cv2.waitKey(1)
writer.release()
测试,好像效果不是很好。
如有侵权,或需要完整代码,请及时联系博主。