Neuromorphic Vision
Thị giác neuromorphic cảm nhận cảnh như võng mạc: camera sự kiện ghi nhận thay đổi độ sáng ở từng pixel trong vài micro giây. Tìm hiểu cách hoạt động và ứng dụng của sự kiện.
Thị giác neuromorphic là một phương pháp thị giác máy tính cảm nhận và xử lý hình ảnh theo cách võng mạc và não bộ sinh học hoạt động. Thiết bị cốt lõi của phương pháp này, camera sự kiện hay cảm biến thị giác động (DVS), có các pixel hoạt động độc lập và mỗi pixel báo cáo một thay đổi độ sáng ngay khi thay đổi xảy ra, thay vì chụp toàn bộ khung hình ở tốc độ cố định. Đầu ra là một luồng sự kiện thưa với thời gian chính xác đến micro giây, dải tương phản động cao và gần như không bị nhòe chuyển động; cảnh tĩnh hầu như không tạo ra dữ liệu. Lĩnh vực này phát triển từ kỹ thuật neuromorphic của nhóm Carver Mead tại Caltech vào cuối thập niên 1980, khi các chip analog mô phỏng mạch thần kinh; mạng nơ-ron xung là đối tác xử lý tự nhiên của lĩnh vực này, tính toán bằng cùng loại sự kiện thưa có định thời.
Cách camera sự kiện hoạt động#
Mỗi pixel lưu logarit độ sáng mà pixel ghi nhận tại sự kiện gần nhất. Khi logarit độ sáng hiện tại chênh lệch so với giá trị tham chiếu quá một ngưỡng tương phản, pixel phát ra một sự kiện mã hóa vị trí, dấu thời gian và cực tính — ON khi sáng hơn hoặc OFF khi tối hơn — rồi đặt lại giá trị tham chiếu. Hoạt động trong không gian log giúp pixel phản hồi với tương phản tương đối, nhờ vậy cùng một cảm biến có thể xử lý cả bóng tối sâu lẫn ánh nắng trực tiếp, với dải tương phản động khoảng 140 dB so với khoảng 60 dB của camera khung hình.
Có thể áp dụng cùng quy tắc này cho video thông thường để thấy đầu ra thưa đến mức nào:
import cv2
import numpy as np
# Read a clip of a person exercising in front of a fixed camera
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solution_ci_pose_demo.mp4")
ok, frame = cap.read()
reference = np.log1p(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32))
threshold = 0.2 # contrast threshold on log brightness
events, samples = 0, 0
while True:
ok, frame = cap.read()
if not ok:
break
brightness = np.log1p(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY).astype(np.float32))
# A pixel fires an ON or OFF event only when its brightness changed by more than the threshold
fired = np.abs(brightness - reference) >= threshold
reference[fired] = brightness[fired]
events += fired.sum()
samples += fired.size
print(f"{events:,} events vs {samples:,} pixel values in frames ({100 * events / samples:.2f}%)")Kết quả in ra là 233,492 events vs 13,593,600 pixel values in frames (1.72%): với camera cố định, chỉ người đang tập thể dục thay đổi giữa các khung hình, nên luồng sự kiện chỉ chứa 1.72% số giá trị mà các khung hình đầy đủ có. Các trình mô phỏng như v2e chuyển video thành dữ liệu tổng hợp để huấn luyện sự kiện theo cùng cách, có thể tăng tần số lấy mẫu trước bằng nội suy khung hình và thêm độ lệch ngưỡng cùng nhiễu theo từng pixel.
Camera sự kiện so với camera khung hình#
Camera sự kiện phù hợp với chuyển động nhanh, cảnh có điều kiện chiếu sáng cực đoan và hoạt động cảm biến AI biên liên tục khi ít có thay đổi; băng thông của camera thay đổi theo mức độ hoạt động trong cảnh. Camera không ghi nhận độ sáng tuyệt đối hay màu sắc; camera tĩnh quan sát cảnh tĩnh sẽ không báo cáo gì, còn camera đang di chuyển sẽ tạo ra lượng lớn sự kiện từ mọi cạnh. Các cảm biến lai như DAVIS của iniVation cũng chụp khung hình tiêu chuẩn từ cùng các pixel, và nhiều hệ thống kết hợp camera sự kiện với camera khung hình thông qua hợp nhất cảm biến. Các model tiêu chuẩn như mạng nơ-ron tích chập (CNNs) cần ảnh dày đặc, vì vậy pipeline hoặc chuyển sự kiện thành biểu diễn dày đặc, hoặc xử lý sự kiện trực tiếp:
- Khung hình sự kiện: Đếm sự kiện ON và OFF trên mỗi pixel trong một khoảng thời gian sẽ tạo ra ảnh hai kênh mà bất kỳ CNN nào cũng có thể đọc.
- Bề mặt thời gian và lưới voxel: Lưu dấu thời gian mới nhất của mỗi pixel hoặc chia sự kiện thành nhiều lát thời gian giúp giữ lại thông tin định thời mà phép đếm thông thường loại bỏ.
- Mạng xung trên chip neuromorphic: Các bộ xử lý như Loihi 2 của Intel nhận sự kiện trực tiếp dưới dạng xung và chỉ tiêu thụ năng lượng khi có sự kiện.
- Tái tạo cường độ: Các mạng như E2VID dựng lại video grayscale từ luồng sự kiện, nhờ đó có thể chạy các model dựa trên khung hình.
Ultralytics YOLO đọc số kênh đầu vào từ khóa channels trong YAML của dataset, như trong dataset 10 kênh COCO8-Multispectral, vì vậy model phát hiện đối tượng YOLO26 có thể huấn luyện trực tiếp trên khung hình sự kiện hai kênh gồm số lượng sự kiện ON và OFF.
Ứng dụng thực tế#
- Nhận thức cho xe tự hành: Một nghiên cứu trên Nature năm 2024 kết hợp camera màu 20 FPS với camera sự kiện và phát hiện vật thể trên đường với độ trễ tương đương camera 5,000 FPS, nhưng dùng băng thông tương đương camera 45 FPS.
- Drone và robot: Một quadrotor dùng camera sự kiện của Đại học Zurich né được các chướng ngại vật bị ném về phía nó với tốc độ tương đối lên đến 10 mét/giây, với độ trễ tổng thể 3.5 mili giây.
- Giám sát công nghiệp: Camera sự kiện đếm các bộ phận chuyển động nhanh, đo độ rung của máy và theo dõi quy trình tốc độ cao; các nhà sản xuất camera công nghiệp như IDS bán các model dựa trên sự kiện sử dụng cảm biến Prophesee.










