Change Detection
Phát hiện thay đổi so sánh ảnh của cùng một cảnh được chụp vào các thời điểm khác nhau để lập bản đồ những gì xuất hiện, biến mất hoặc di chuyển, từ vệ tinh đến nhà máy.
Phát hiện thay đổi là tác vụ tìm ra những khác biệt có ý nghĩa giữa các ảnh của cùng một cảnh được chụp ở những thời điểm khác nhau. Tác vụ này so sánh từ hai quan sát trở lên và xác định vị trí có thay đổi, dưới dạng bản đồ thay đổi nhị phân, các lớp “từ-sang” như rừng chuyển thành đất trồng trọt, hoặc danh sách đối tượng xuất hiện, biến mất hay di chuyển. Phát hiện thay đổi hai thời điểm so sánh hai ngày; phương pháp đa thời điểm phân tích toàn bộ chuỗi thời gian để tách thay đổi lâu dài khỏi chu kỳ mùa vụ và nhiễu nhất thời. Tác vụ này đóng vai trò trọng tâm trong viễn thám và phân tích ảnh vệ tinh; những ý tưởng tương tự cũng được dùng để trừ nền trong camera an ninh cố định và so sánh với ảnh tham chiếu trong kiểm tra công nghiệp.
Cách hoạt động của phát hiện thay đổi#
Chỉ có thể so sánh chính xác hai ảnh khi các pixel tương ứng thể hiện cùng một vị trí mặt đất. Đăng ký ảnh căn chỉnh chúng, vì chỉ cần lệch một pixel cũng tạo ra thay đổi giả dọc theo mọi cạnh; chuẩn hóa bức xạ loại bỏ khác biệt về góc chiếu nắng, phơi sáng, sương mù và đáp ứng cảm biến. Sau đó, bước so sánh tạo ra một thước đo khác biệt cho mỗi pixel hoặc vùng; một ngưỡng tách thay đổi khỏi nhiễu, còn hậu xử lý loại bỏ các pixel rời rạc và gộp những pixel còn lại thành các vùng.
Phương pháp so sánh đơn giản nhất là lấy hiệu ảnh. Ví dụ này so sánh hai frame của bãi đỗ xe được quay từ trên cao, cách nhau 2,7 giây, và dùng phương pháp Otsu để chọn ngưỡng:
import cv2
import numpy as np
# Two frames of a parking lot filmed from above, 81 frames (2.7 seconds) apart
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solution_ci_parking_demo.mp4")
_, before = cap.read()
cap.set(cv2.CAP_PROP_POS_FRAMES, 81)
_, after = cap.read()
# Convert to grayscale and blur to suppress noise, then difference pixel by pixel
before = cv2.GaussianBlur(cv2.cvtColor(before, cv2.COLOR_BGR2GRAY), (5, 5), 0)
after = cv2.GaussianBlur(cv2.cvtColor(after, cv2.COLOR_BGR2GRAY), (5, 5), 0)
diff = cv2.absdiff(before, after)
# Otsu's method picks the change threshold, and an opening removes isolated noisy pixels
_, change_map = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
change_map = cv2.morphologyEx(change_map, cv2.MORPH_OPEN, np.ones((5, 5), np.uint8))
print(f"{100 * (change_map > 0).mean():.1f}% of pixels changed")
cv2.imwrite("change_map.png", change_map)Kết quả in ra 5.2% of pixels changed. Bản đồ được lưu đánh dấu chiếc xe màu xanh đi vào chỗ đỗ, cả hai vị trí của xe van màu trắng chạy qua bãi và chiếc xe rời khỏi mép trái khung hình; những chiếc xe đang đỗ, vạch sơn và mặt đường vẫn có màu đen.
Phương pháp theo pixel, đối tượng và học máy#
Phép lấy hiệu pixel hoạt động tốt khi cả hai ảnh được chụp bằng cùng cảm biến trong điều kiện ánh sáng tương tự. Với ảnh radar, nơi nhiễu đốm có tính nhân, người ta dùng tỷ số thay cho hiệu; phân tích vector thay đổi xem mỗi pixel đa phổ là một vector mà mức thay đổi có cả độ lớn lẫn hướng. Phương pháp so sánh sau phân loại phân loại riêng từng thời điểm rồi so sánh các nhãn; phương pháp này tạo ra các lớp “từ-sang” và chịu được khác biệt giữa các cảm biến, nhưng cộng dồn sai số của cả hai lần phân loại.
Các phương pháp học sâu đưa cả hai ảnh qua một mạng nơ-ron tích chập Siamese có trọng số dùng chung, rồi giải mã hiệu của các feature map thành bản đồ thay đổi. Thiết kế này được mạng Siamese tích chập hoàn toàn của Daudt và cộng sự phổ biến vào năm 2018; các model sau này bổ sung cơ chế attention và transformer. Một benchmark được sử dụng rộng rãi là LEVIR-CD, do Hao Chen và Zhenwei Shi công bố năm 2020, gồm 637 cặp ảnh Google Earth kích thước 1.024×1.024 pixel, độ phân giải 0,5 mét mỗi pixel, với 31.333 thay đổi công trình được chú thích.
Phát hiện thay đổi cấp đối tượng so sánh các kết quả phát hiện thay vì pixel, qua đó bỏ qua bóng đổ và sự thay đổi màu sắc theo mùa. Model oriented bounding box Ultralytics YOLO26 được tiền huấn luyện trên ảnh hàng không DOTA trả về các box xoay cho máy bay, tàu, bồn chứa và phương tiện; do đó, việc ghép các kết quả phát hiện đối tượng từ hai thời điểm cho biết những gì đã đến và đã đi.
Phát hiện thay đổi và các tác vụ liên quan#
- Phát hiện bất thường đánh dấu các quan sát lệch khỏi khái niệm bình thường đã học, thường dựa trên một ảnh đơn lẻ. Phát hiện thay đổi cần có quan sát tham chiếu; một thay đổi như công trình mới thường là điều được dự đoán trước.
- Theo dõi đối tượng và luồng quang học theo dõi chuyển động giữa các frame video liên tiếp. Phát hiện thay đổi so sánh trạng thái của cảnh tại hai thời điểm, thường cách nhau nhiều tháng hoặc nhiều năm.
- Độ trôi dữ liệu mô tả sự dịch chuyển theo thời gian trong phân phối thống kê của đầu vào mà một model đã triển khai nhận được, làm suy giảm độ chính xác của model.
Ứng dụng thực tế#
- Giám sát mất rừng và độ che phủ đất: Bản đồ mất độ che phủ cây hằng năm từ ảnh Landsat ở độ phân giải 30 mét, do Đại học Maryland công bố từ năm 2013, là nền tảng của Global Forest Watch.
- Đánh giá thiệt hại do thiên tai: So sánh ảnh vệ tinh hoặc ảnh drone trước và sau sự kiện để lập bản đồ đất ngập, khu vực bị cháy và công trình bị sập; bộ dữ liệu xBD phân loại mức thiệt hại công trình theo thang bốn cấp từ các cặp ảnh trước và sau.
- Kiểm tra công nghiệp: Camera cố định so sánh từng sản phẩm lắp ráp với ảnh tham chiếu của bộ phận đúng chuẩn để phát hiện ốc vít thiếu, linh kiện đặt sai vị trí hoặc vật thể lạ.
- An ninh và giám sát: Trừ nền, hình thức phát hiện thay đổi trong video, mô hình hóa cảnh tĩnh tại từng pixel và xem những gì lệch khỏi mô hình đó là tiền cảnh đang chuyển động; đây là cơ chế kích hoạt cảnh báo chuyển động ở camera cố định.










