Dynamic Resolution Scaling
Điều chỉnh độ phân giải động thay đổi độ phân giải xử lý của từng frame ngay trong lúc chạy để duy trì ngân sách thời gian mỗi frame; phương pháp này được dùng trong game và AI thị giác thời gian thực.
Điều chỉnh độ phân giải động (DRS) là kỹ thuật điều chỉnh độ phân giải mà hệ thống dùng để xử lý từng frame, theo từng frame, nhằm giữ thời gian xử lý mỗi frame trong một ngân sách cố định. Khi cảnh trở nên nặng, renderer hoặc model xử lý ít pixel hơn; khi còn dư tài nguyên, độ phân giải lại được tăng lên, và đầu ra thường được upscale về kích thước hiển thị cố định. Trò chơi điện tử phổ biến hóa kỹ thuật này để duy trì tốc độ khung hình ổn định trên console và PC; cùng ý tưởng đó cũng áp dụng cho suy luận thời gian thực, nơi model thị giác máy tính có thể thu nhỏ đầu vào để đáp ứng ngân sách độ trễ trên phần cứng bận tải hoặc bị giảm xung do nhiệt.
Cách thức hoạt động của Dynamic Resolution Scaling#
DRS là một vòng phản hồi. Ở mỗi frame, hệ thống đo thời gian xử lý các frame gần nhất trên GPU, so sánh với ngân sách rồi chọn tỷ lệ độ phân giải cho frame kế tiếp trong giới hạn cố định:
Khoảng cách giữa mức "vượt quá" và "thấp hơn nhiều" giúp độ phân giải không nhấp nháy giữa hai mức. Ví dụ, trong Unreal Engine, ngân sách mặc định là 33,3 ms mỗi frame, tương đương 30 frame mỗi giây; tỷ lệ hiển thị thay đổi từ 50% đến 100% độ phân giải đầu ra trên mỗi trục, vì vậy thiết lập nhẹ nhất chỉ render một phần tư số pixel.
Bước upscale quyết định mức tổn thất chất lượng do độ phân giải thấp hơn gây ra. Phóng tỷ lệ không gian đơn giản làm mờ hình ảnh, vì vậy game hiện đại kết hợp DRS với các phương pháp upscale dựa trên học máy hoặc thời gian như NVIDIA DLSS, AMD FSR, Intel XeSS và PlayStation Spectral Super Resolution của Sony; các phương pháp này kết hợp những frame trước đó và, trong hầu hết phiên bản hiện nay, deep learning để tái tạo chi tiết. Quá trình tái tạo đó là một dạng siêu phân giải, cho phép game render ở độ phân giải thấp hơn nhiều so với đầu ra mà ít suy giảm hình ảnh thấy được.
Độ phân giải động trong Vision AI#
Với mạng nơ-ron tích chập, lượng tính toán và độ trễ suy luận tăng gần tỷ lệ thuận với số pixel đầu vào, vì vậy giảm cạnh đầu vào xuống một nửa, còn 320 pixel, sẽ giảm FLOPs của model 640 pixel xuống khoảng một phần tư. Do đó, bộ điều khiển có thể đánh đổi độ phân giải lấy tốc độ khi thiết bị edge AI như NVIDIA Jetson nóng lên và giảm xung nhịp, máy chủ tiếp nhận thêm luồng camera, hoặc drone cần tài nguyên tính toán dự phòng cho điều hướng. Cái giá phải trả là độ chính xác với các đối tượng nhỏ và ở xa, vốn chỉ chiếm quá ít pixel ở độ phân giải thấp; vì vậy hệ thống phát hiện đối tượng đặt ra giới hạn sàn cho kích thước đầu vào.
Ultralytics YOLO26 hỗ trợ trực tiếp tính năng này trong chế độ predict: model PyTorch chấp nhận một imgsz khác nhau ở mỗi lần gọi mà không cần tải lại; mỗi frame được resize theo cạnh dài hơn thành imgsz, còn cạnh ngắn hơn chỉ được padding đến bội số tiếp theo của stride 32 pixel. Trong khi đó, model được export sang định dạng có shape tĩnh giữ nguyên kích thước đã dùng khi export, trừ khi đã đặt dynamic=True. Bộ điều khiển đơn giản có thể chuyển qua các kích thước được phép dựa trên thời gian suy luận đo được:
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov")
sizes = [320, 416, 512, 640] # # kích thước đầu vào được phép, là bội số của stride 32 pixel
level, budget_ms = len(sizes) - 1, 15.0 # # bắt đầu ở kích thước đầy đủ với ngân sách suy luận 15 ms
frames_at = dict.fromkeys(sizes, 0)
while True:
ok, frame = cap.read()
if not ok:
break
result = model(frame, imgsz=sizes[level], verbose=False)[0]
frames_at[sizes[level]] += 1
# # Giảm kích thước khi vượt ngân sách, chỉ tăng lại khi thấp hơn nhiều để tránh nhấp nháy
if result.speed["inference"] > budget_ms and level > 0:
level -= 1
elif result.speed["inference"] < 0.6 * budget_ms and level < len(sizes) - 1:
level += 1
print("Frames processed at each input size:", frames_at)Bản in thống kê số frame được xử lý ở mỗi kích thước; phần cứng chậm hơn xử lý nhiều frame hơn của video ở các kích thước nhỏ.
Các thuật ngữ liên quan#
- Siêu phân giải: Tái tạo hình ảnh có độ phân giải cao hơn từ hình ảnh độ phân giải thấp, thường là nửa sau của quy trình DRS.
- Truyền phát bitrate thích ứng: Thay đổi chất lượng video để phù hợp với băng thông mạng thay vì thời gian tính toán.
- Variable rate shading: Giảm độ chi tiết của shading ở các vùng được chọn trong frame thay vì scale toàn bộ frame.
- Huấn luyện đa tỷ lệ: Huấn luyện model với nhiều kích thước đầu vào để model vẫn chính xác khi độ phân giải suy luận thay đổi.
- Độ phân giải động gốc trong model thị giác-ngôn ngữ: Mã hóa mỗi hình ảnh ở độ phân giải riêng thành số lượng token thay đổi để bảo toàn chi tiết, như Qwen2-VL của Alibaba, gọi phiên bản của mình là Naive Dynamic Resolution.










