
【算法介绍】
论文提出了YOLOv13模型,其核心包含三大创新:

YOLOv13的最核心创新,旨在有效捕捉特征间潜在的高阶关联。

为了最大化HyperACE增强后特征的效用,作者设计了FullPAD这一新的网络信息流范式。
为保证模型的高效率,YOLOv13采用深度可分离卷积(Depthwise Separable Convolution, DSConv)作为基础单元,设计了一系列轻量化模块(如DSConv, DS-Bottleneck, DS-C3k, DS-C3k2),用于替代标准的大核卷积。这些模块被广泛应用于模型的骨干和颈部网络中,在基本不牺牲模型性能的前提下,显著降低了参数量和计算复杂度(FLOPs)。

【效果展示】

【测试环境】
anaconda3+python3.10 torch==2.5.1 numpy==1.26.4 cython_bbox-0.1.3-cp310-cp310-win_amd64.whl
注意一定要用源码提供cython_bbox进行安装否则会和numpy不兼容。
【视频演示】
bilibili.com/video/BV1ukKozkE9c/
【调用代码】
from Yolov13Detector import *
from ByteTackManager import *
from tracking_utils.timer import Timer
save_file = None # not None will save video
cap = cv2.VideoCapture('car.mp4')
out = None
frame_fps = int(cap.get(cv2.CAP_PROP_FPS))
# 获取视频帧宽度和高度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print("video fps={},width={},height={}".format(frame_fps, frame_width, frame_height))
if save_file:
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(save_file, fourcc, frame_fps, (frame_width, frame_height))
detector = Yolov13Detector()
tracker = BYTETracker()
frame_id = 0
timer = Timer()
while True:
ret, frame = cap.read()
frame_id += 1
if not ret:
print('read over!')
break
timer.tic()
result_list = detector.inference_image(frame)
if len(result_list)>0:
online_targets = tracker.update(result_list)
#print(online_targets)
online_tlwhs = []
online_ids = []
online_scores = []
for t in online_targets:
tlwh = t.tlwh
tid = t.track_id
vertical = tlwh[2] / tlwh[3] > 1.6
if tlwh[2] * tlwh[3] > 10 and not vertical:
online_tlwhs.append(tlwh)
online_ids.append(tid)
online_scores.append(t.score)
timer.toc()
#print(online_tlwhs)
online_im = plot_tracking(frame, online_tlwhs, online_ids, frame_id=frame_id + 1,
fps=1. / timer.average_time)
if save_file:
out.write(online_im)
cv2.imshow('frame', online_im)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
if save_file:
out.release()
cap.release()
cv2.destroyAllWindows()