αDepth: Xử lý vùng mờ tóc và blur trong stereo conversion
Model depth mới giải quyết bài toán soft boundary cực khó trong stereo conversion bằng layered representation và Circular Alpha Representation.
Nguyễn Nhật Long
@nguyennhatlong1303
Nếu bạn đã từng làm việc với stereo conversion tức là chuyển ảnh/video 2D thành 3D stereo thì chắc chắn bạn biết cái nỗi đau lớn nhất của bài toán này nằm ở đâu: không phải vùng solid rõ ràng, mà là những vùng "mờ mờ ảo ảo" như mái tóc bay, background bị defocus blur, hay cạnh của vật thể trong suốt. Đây là những thứ mà các depth model truyền thống xử lý rất tệ, và paper αDepth (arxiv 2606.00386) vừa publish hồi cuối tháng 5 đang cố giải quyết đúng chỗ đau này.
Vấn đề cốt lõi mà depth model hiện tại đang bỏ qua
Hầu hết các depth estimation model hiện tại dù là MiDaS, Depth Anything, hay ZoeDepth đều predict một single-layer depth map. Tức là mỗi pixel chỉ có một giá trị depth duy nhất. Nghe có vẻ hợp lý, nhưng thực tế thì không phải vậy.
Hãy nghĩ đến một sợi tóc mỏng trước nền trời xanh. Pixel ở vùng đó thực chất là blend của hai thứ: màu tóc (foreground) và màu trời (background), với tỉ lệ blend phụ thuộc vào độ mờ của tóc tại điểm đó đây chính là giá trị alpha trong matting. Vậy depth của pixel đó là bao nhiêu? Depth của tóc? Depth của trời? Hay một giá trị ở giữa không có nghĩa gì cả?
Khi bạn dùng depth map này để tạo stereo image, model sẽ shift pixel đó theo một hướng duy nhất. Kết quả là bạn sẽ thấy hiện tượng background bleeding màu nền "chảy" vào vùng foreground, tạo ra artifact trông rất kỳ dị khi nhìn qua kính 3D.
Matting có giải quyết được không?
Có người sẽ hỏi: ừ thì dùng image matting đi, kỹ thuật đó sinh ra để xử lý alpha mà. Đúng, nhưng matting truyền thống có một số vấn đề nghiêm trọng khi apply vào bài toán này:
- Chỉ handle được một foreground/background pair: Hầu hết matting model được design cho bài toán "tách một object ra khỏi nền". Trong scene thực tế có thể có nhiều lớp object ở nhiều depth khác nhau, overlap lên nhau.
- Cần user intervention: Nhiều matting pipeline yêu cầu trimap (vùng foreground/background/unknown do người dùng vẽ tay). Không thể automate hoàn toàn.
- Không có thông tin depth: Matting cho bạn biết pixel đó thuộc về object nào và với tỉ lệ bao nhiêu, nhưng không nói gì về depth. Bạn vẫn phải kết hợp với depth estimation riêng.
Tức là nếu ghép matting + depth estimation lại, bạn sẽ có một pipeline phức tạp, cần nhiều bước, khó scale, và vẫn không handle được multi-target scenes tốt.
αDepth giải quyết bằng cách nào?
Cái hay của αDepth là nó tiếp cận vấn đề theo hướng hoàn toàn khác: thay vì xử lý global ("tách object này ra"), nó xử lý local tại từng boundary region.
Cụ thể, model học cách tại mỗi vùng soft boundary, ước lượng đồng thời:
- Layered color values: màu của foreground layer và background layer tại điểm đó là gì
- Layered depth values: depth của foreground và background layer là bao nhiêu
- Alpha: tỉ lệ blend giữa hai layer
Thay vì nói "pixel này có depth = 2.3m", model nói "pixel này là blend của một thứ ở 1.5m (foreground) và một thứ ở 5m (background), với alpha = 0.4".
Khi bạn có đủ thông tin này, việc tạo stereo image trở nên chính xác hơn nhiều: bạn shift foreground layer và background layer độc lập theo đúng disparity của chúng, rồi blend lại. Không còn background bleeding nữa.
Circular Alpha Representation cái tên lạ nhưng ý tưởng hay
Phần thú vị nhất về mặt kỹ thuật là cái họ gọi là Circular Alpha Representation (CAR). Mình thấy cái này hay ở chỗ nó giải quyết được vấn đề multi-target mà matting truyền thống bị bí.
Vấn đề với multi-target là: nếu bạn có 3 object ở 3 depth khác nhau, overlap lên nhau, thì tại mỗi boundary bạn cần biết đây là boundary giữa object nào và object nào. Global matting approach sẽ cần extract từng object riêng, rất tốn kém và phức tạp.
CAR thay đổi paradigm: thay vì hỏi "object này là gì?", nó hỏi "tại boundary này, layer nào ở trên và layer nào ở dưới?". Nó represent alpha theo kiểu circular/cyclic để có thể handle arbitrary number of layers mà không cần biết trước có bao nhiêu object trong scene. Inference chạy ở scene level, không cần manual guidance, không cần user vẽ trimap.
Theo kinh nghiệm của mình khi làm với các video processing pipeline, đây là điểm cực kỳ quan trọng để có thể deploy production. Bất kỳ bước nào cần human-in-the-loop đều là bottleneck không thể scale.
So sánh nhanh với các approach hiện tại
Nhìn vào bảng này thì rõ ràng αDepth đang fill đúng cái gap mà các approach trước bỏ ngỏ.
| Approach | Soft Boundary | Multi-target | Auto (no user input) | Depth Info |
|---|---|---|---|---|
| Single-layer depth model | ❌ Artifact nặng | ✅ | ✅ | ✅ |
| Image matting (truyền thống) | ✅ | ❌ | ❌ (cần trimap) | ❌ |
| Matting + Depth (pipeline ghép) | ✅ | ❌ | ❌ | ✅ (nhưng rời rạc) |
| **αDepth (CAR)** | ✅ | ✅ | ✅ | ✅ (layered) |
Ứng dụng thực tế và tại sao mình quan tâm
Stereo conversion đang hot trở lại vì một lý do rất cụ thể: Apple Vision Pro và các spatial computing device đang tạo demand lớn cho 3D content. Các studio film, platform streaming, và thậm chí các team làm app AR/VR đều đang cần convert lượng lớn 2D content sang stereo 3D. Manual stereo conversion thì cực kỳ tốn kém (cần artist làm tay từng frame), nên automated pipeline là hướng tất yếu.
Anh em nào đang làm trong mảng video processing, computer vision, hay post-production pipeline thì nên để ý paper này. Kỹ thuật layered depth representation không chỉ apply cho stereo conversion nó còn liên quan đến:
- Depth-based video effects: bokeh, refocus, depth-of-field simulation
- Video compositing: tách layer để chỉnh màu riêng
- Novel view synthesis: tạo view mới từ ảnh đơn
- 3D photo effects kiểu như Facebook/Google đang làm
Single-pass tại sao cái này quan trọng
Cái "single-pass" trong tên paper cũng đáng chú ý. Nhiều approach xử lý soft boundary theo kiểu multi-stage: detect boundary → run matting → estimate depth → combine. Mỗi stage là một model riêng, latency cộng dồn, error propagate qua các stage.
αDepth làm tất cả trong một forward pass duy nhất. Với production workload xử lý video ở scale lớn, đây là sự khác biệt rất lớn về throughput và infrastructure cost. Bạn không cần maintain 3-4 model riêng biệt, không cần orchestrate pipeline phức tạp giữa chúng.
Mình chưa thấy họ release code hay model weights công khai (paper mới submit hồi cuối tháng 5), nhưng đây là loại research mà mình sẽ theo dõi sát để xem khi nào có implementation để test thực tế. Kết quả qualitative trong paper trông khá ấn tượng, đặc biệt ở các scene có tóc và motion blur hai thứ mà depth model nào cũng chật vật.
Nguyễn Nhật Long
@nguyennhatlong1303Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.
Thấy hay? Chia sẻ cho bạn bè!