Super Resolution
Super-resolution tái tạo hình ảnh có độ phân giải cao hơn từ ảnh độ phân giải thấp bằng cách dự đoán chi tiết mà phép nội suy không thể khôi phục. Tìm hiểu model và code.
Siêu phân giải (SR) là một nhóm kỹ thuật thị giác máy tính tái tạo ảnh hoặc video có độ phân giải cao hơn từ đầu vào có độ phân giải thấp. Các phương pháp phóng to cổ điển như nội suy bicubic chỉ trải các pixel hiện có lên một lưới lớn hơn, khiến cạnh bị mềm và kết cấu chi tiết bị nhòe. Model SR đã học dự đoán các chi tiết tần số cao bị thiếu, chẳng hạn như cạnh sắc nét, nét chữ và kết cấu vải hoặc tán lá, dựa trên các mẫu học được từ những cặp ảnh độ phân giải thấp và cao. Siêu phân giải ảnh đơn (SISR) xử lý một ảnh, còn siêu phân giải video cũng tận dụng các frame lân cận, mỗi frame ghi lại thông tin hơi khác nhau về cùng một cảnh.
Cách thức hoạt động của siêu phân giải#
Siêu phân giải là một bài toán đặt không chỉnh: nhiều ảnh độ phân giải cao khác nhau có thể thu nhỏ thành cùng một ảnh độ phân giải thấp, vì vậy model phải chọn đáp án có khả năng nhất dựa trên những gì đã học về ảnh tự nhiên. Các cặp huấn luyện được tạo bằng cách làm suy giảm ảnh độ phân giải cao thông qua làm mờ, giảm mẫu theo hệ số như 2× hoặc 4×, thêm nhiễu và nén. Model suy giảm này quyết định các đầu vào thực tế nào mà mạng có thể xử lý; Real-ESRGAN huấn luyện với các phép suy giảm được kết hợp ngẫu nhiên để có thể khôi phục ảnh và video thực tế cũng như ảnh được giảm mẫu rõ nét.
Các kiến trúc phát triển song song với những tiến bộ khác trong deep learning. Năm 2014, SRCNN chứng minh một mạng nơ-ron tích chập (CNN) ba lớp có thể vượt qua các phương pháp cổ điển. ESPCN thực hiện các phép tích chập ở độ phân giải thấp và chỉ phóng to ở bước cuối bằng tích chập sub-pixel, phương pháp sắp xếp lại các channel thành ảnh lớn hơn, nhờ đó đủ nhanh cho video 1080p thời gian thực. EDSR xếp chồng nhiều residual block, SwinIR xây dựng model từ các block vision transformer cửa sổ dịch chuyển, còn model diffusion tạo chi tiết thông qua quá trình khử nhiễu lặp.
Hàm loss quyết định thế nào là “tốt hơn”. Loss trên pixel như L1 hoặc sai số bình phương trung bình tối đa hóa độ trung thực với ảnh gốc, nhưng lấy trung bình trên các đáp án có thể xảy ra nên tạo ảnh mượt. SRGAN bổ sung loss cảm nhận trên các đặc trưng sâu và loss đối kháng từ mạng đối sinh (GAN), tạo ra kết cấu sắc nét, chân thực nhưng có thể không khớp từng pixel với cảnh thực, gây rủi ro trong hình ảnh y tế và ảnh pháp y, nơi chi tiết được tạo thêm có thể bị nhầm là bằng chứng.
Đánh giá siêu phân giải#
Độ trung thực được đo bằng tỷ số tín hiệu trên nhiễu đỉnh (PSNR), một phép đo sai số bình phương trung bình theo thang logarit, tính bằng decibel, và chỉ số tương đồng cấu trúc (SSIM). Các metric cảm nhận như LPIPS so sánh đặc trưng sâu và phản ánh đánh giá của con người về độ chân thực sát hơn. Phần so sánh dưới đây thu nhỏ ảnh 4× rồi tái tạo bằng nội suy bicubic và bằng model ESPCN đã huấn luyện trước từ OpenCV:
import urllib.request
import cv2 # cv2.dnn_superres requires: pip install opencv-contrib-python
# Download a pretrained 4x ESPCN model and a test image cropped to a multiple of 4
urllib.request.urlretrieve("https://github.com/fannymonori/TF-ESPCN/raw/master/export/ESPCN_x4.pb", "ESPCN_x4.pb")
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
original = cv2.imread("bus.jpg")[:1080, :808]
# Simulate a low-resolution capture by shrinking the image 4x
low_res = cv2.resize(original, (202, 270), interpolation=cv2.INTER_CUBIC)
# Upscale 4x with bicubic interpolation and with the learned ESPCN model
bicubic = cv2.resize(low_res, (808, 1080), interpolation=cv2.INTER_CUBIC)
sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel("ESPCN_x4.pb")
sr.setModel("espcn", 4)
espcn = sr.upsample(low_res)
# Higher PSNR means the reconstruction is closer to the original image
print(f"Bicubic: {cv2.PSNR(original, bicubic):.2f} dB, ESPCN: {cv2.PSNR(original, espcn):.2f} dB")Lệnh in ra Bicubic: 19.51 dB, ESPCN: 20.52 dB. Mức tăng 1 dB tương ứng với sai số bình phương trung bình giảm khoảng 21%, từ một file model có dung lượng khoảng 100 KB.
Siêu phân giải và các thuật ngữ liên quan#
- Khôi phục ảnh: Lĩnh vực rộng hơn về khôi phục ảnh sạch từ ảnh bị suy giảm, bao gồm khử nhiễu, khử nhòe và loại bỏ artifact do nén. Siêu phân giải là tác vụ khôi phục đồng thời tăng số lượng pixel; các model hiện đại thường xử lý nhiều dạng suy giảm cùng lúc.
- Inpainting ảnh: Bù các vùng bị thiếu hoặc bị che, trong khi siêu phân giải bổ sung chi tiết trên toàn bộ ảnh hoàn chỉnh nhưng còn thô.
- Nội suy frame: Tăng độ phân giải theo thời gian bằng cách tạo frame giữa các frame hiện có, tương ứng với siêu phân giải không gian trên trục thời gian.
- AI tạo sinh: Model chuyển văn bản thành ảnh tạo ảnh từ prompt. Siêu phân giải được điều kiện hóa theo ảnh đầu vào và phải giữ đúng nội dung ảnh; nhiều trình tạo ảnh dùng bộ phóng to diffusion ở bước cuối.
Ứng dụng thực tế#
- Game: NVIDIA DLSS kết xuất frame ở độ phân giải thấp hơn rồi phóng to bằng mạng nơ-ron, tăng tốc độ khung hình mà vẫn giữ chất lượng hình ảnh tương đương.
- Phát trực tuyến và lưu trữ video: Các đài truyền hình và chuyên gia phục chế phim phóng to cảnh quay độ phân giải tiêu chuẩn và tư liệu lưu trữ lên màn hình HD và 4K.
- Phân tích ảnh vệ tinh: Các nhà phân tích làm sắc nét ảnh có chi phí thấp hơn để lập bản đồ tòa nhà, đường sá và phương tiện.
- Phân tích ảnh y tế: Các hệ thống nghiên cứu tái tạo ảnh MRI độ phân giải cao từ những lần thu nhận nhanh hơn, có độ phân giải thấp hơn, rút ngắn thời gian bệnh nhân nằm trong máy quét.
Siêu phân giải cũng được dùng làm bước tiền xử lý để phát hiện vật thể nhỏ trong nguồn ảnh độ phân giải thấp. YOLO26 của Ultralytics thay đổi kích thước mọi đầu vào về imgsz, mặc định là 640 pixel, bằng nội suy song tuyến tính; do đó, frame camera 320×240 được phóng to 2× trước khi phát hiện. Thay phép nội suy bằng model siêu phân giải 2× sẽ cung cấp cho detector các cạnh được tái tạo trên những vật thể nhỏ, ở xa như khuôn mặt, biển số xe và phương tiện trong ảnh chụp từ trên không.










