为什么Qwen2.5-7B网页推理总失败?保姆级部署教程详解
2026/1/10 4:43:16
同等条件下对比:
'csrt', # 261.0ms, lost 0 'kcf', # 51.0ms, lost 157 'boosting', # 23.7ms, lost 0 'mil', # 273.1ms, lost 0 'tld', # 100.7ms, lost 0 'medianflow', # 6.6ms, lost 37 'mosse' # 10.7ms, lost 158import cv2 import time def init_tracker(frame): # 创建跟踪器 if tracker_index == 0: tracker = cv2.legacy.TrackerCSRT_create() elif tracker_index == 1: tracker = cv2.legacy.TrackerKCF_create() elif tracker_index == 2: tracker = cv2.legacy.TrackerBoosting_create() elif tracker_index == 3: tracker = cv2.legacy.TrackerMIL_create() elif tracker_index == 4: tracker = cv2.legacy.TrackerTLD_create() elif tracker_index == 5: tracker = cv2.legacy.TrackerMedianFlow_create() elif tracker_index == 6: tracker = cv2.legacy.TrackerMOSSE_create() height, width = frame.shape[:2] bbox = [int(width*(1-check_ratio)/2), int(height*(1-check_ratio)/2), width*check_ratio, height*check_ratio] # 初始化跟踪器 ok = tracker.init(frame, bbox) return tracker, bbox def track_action(tracker, frame): current_time = time.time() result = frame.copy() # 更新跟踪器,获取新边界框 ok, bbox = tracker.update(result) lost = 0 if ok: # 跟踪成功:绘制边界框 (x, y, w, h) = [int(v) for v in bbox] cv2.rectangle(result, (x, y), (x+w, y+h), (0, 255, 0), 2) else: # 跟踪失败 lost = 1 cv2.putText(result, "Tracking failure", (50, 80), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 2) cost_time = (time.time()-current_time) return result, cost_time, lost def track_video(input_video, output_video): # 读取视频 input = cv2.VideoCapture(input_video) ok, frame = input.read() if not ok: print("Cannot read video") return fps = int(input.get(cv2.CAP_PROP_FPS)) width = int(input.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(input.get(cv2.CAP_PROP_FRAME_HEIGHT)) tracker, bbox = init_tracker(frame) fourcc = cv2.VideoWriter_fourcc(*'mp4v') output = cv2.VideoWriter(output_video, fourcc, fps, (width*2, height)) frame_counter = 0 track_lost = 0 work_cost = 0 while True: ok, frame = input.read() if not ok: break frame_counter += 1 track_frame, cost, lost = track_action(tracker, frame) work_cost += cost track_lost += lost if (merge_video): track = cv2.hconcat([frame, track_frame]) output.write(track) if (frame_counter % 100 == 0): print(frame_counter) print('tracker(%s): cost per frame(ms)=%.2f' % (tracker_names[tracker_index], (work_cost/frame_counter*1000))) print('tracker(%s): track(lost/total)=%d/%d' % (tracker_names[tracker_index], track_lost, frame_counter)) output.release() input.release() # 跟踪器类型, total 527 frames # tracker name, cost per frame(ms), lost tracker_names = [ 'csrt', # 261.0ms, lost 0 'kcf', # 51.0ms, lost 157 'boosting', # 23.7ms, lost 0 'mil', # 273.1ms, lost 0 'tld', # 100.7ms, lost 0 'medianflow', # 6.6ms, lost 37 'mosse' # 10.7ms, lost 158 ] merge_video = True check_ratio = 1/10 tracker_index = 0 input_video = 'test.mp4' output_video = 'track.mp4' for index in range(7): tracker_index = index output_video = ("track%d.mp4" % tracker_index) track_video(input_video, output_video)