ลี่เหอหยาง 1 · ปิงอี้คัง 2† · ซีหลงฮวง 2
เจิ้น จ้าว · เสี่ยวกัง ซู · เจียซือเฟิง 2 · เหิงซวง จ้าว 1*
1 HKU 2 ติ๊กต๊อก
† หัวหน้าโครงการ *ผู้เขียนที่เกี่ยวข้อง
งานนี้ขอนำเสนอ Depth Anything V2. มันมีประสิทธิภาพเหนือกว่า V1 อย่างมากในด้านรายละเอียดที่ละเอียดและความทนทาน เมื่อเปรียบเทียบกับรุ่นที่ใช้ SD จะมีความเร็วในการอนุมานที่เร็วกว่า พารามิเตอร์น้อยกว่า และความแม่นยำในเชิงลึกที่สูงขึ้น
เรามีเครื่องชั่งที่แตกต่างกัน สี่รุ่น สำหรับการประมาณความลึกสัมพัทธ์ที่มีประสิทธิภาพ:
แบบอย่าง | พารามิเตอร์ | ด่าน |
---|---|---|
ความลึก-อะไรก็ได้-V2-เล็ก | 24.8M | ดาวน์โหลด |
ความลึก-อะไรก็ได้-V2-ฐาน | 97.5ม | ดาวน์โหลด |
ความลึก-อะไรก็ได้-V2-ใหญ่ | 335.3M | ดาวน์โหลด |
ความลึก-อะไรก็ได้-V2-ยักษ์ | 1.3B | เร็วๆ นี้ |
git clone https://github.com/DepthAnything/Depth-Anything-V2
cd Depth-Anything-V2
pip install -r requirements.txt
ดาวน์โหลดจุดตรวจสอบที่แสดงไว้ที่นี่ และวางไว้ใต้ไดเร็กทอรี checkpoints
import cv2
import torch
from depth_anything_v2 . dpt import DepthAnythingV2
DEVICE = 'cuda' if torch . cuda . is_available () else 'mps' if torch . backends . mps . is_available () else 'cpu'
model_configs = {
'vits' : { 'encoder' : 'vits' , 'features' : 64 , 'out_channels' : [ 48 , 96 , 192 , 384 ]},
'vitb' : { 'encoder' : 'vitb' , 'features' : 128 , 'out_channels' : [ 96 , 192 , 384 , 768 ]},
'vitl' : { 'encoder' : 'vitl' , 'features' : 256 , 'out_channels' : [ 256 , 512 , 1024 , 1024 ]},
'vitg' : { 'encoder' : 'vitg' , 'features' : 384 , 'out_channels' : [ 1536 , 1536 , 1536 , 1536 ]}
}
encoder = 'vitl' # or 'vits', 'vitb', 'vitg'
model = DepthAnythingV2 ( ** model_configs [ encoder ])
model . load_state_dict ( torch . load ( f'checkpoints/depth_anything_v2_ { encoder } .pth' , map_location = 'cpu' ))
model = model . to ( DEVICE ). eval ()
raw_img = cv2 . imread ( 'your/image/path' )
depth = model . infer_image ( raw_img ) # HxW raw depth map in numpy
หากคุณไม่ต้องการโคลนพื้นที่เก็บข้อมูลนี้ คุณสามารถโหลดโมเดลของเราผ่าน Transformers ได้เช่นกัน ด้านล่างนี้คือข้อมูลโค้ดง่ายๆ โปรดดูที่หน้าอย่างเป็นทางการสำหรับรายละเอียดเพิ่มเติม
from transformers import pipeline
from PIL import Image
pipe = pipeline ( task = "depth-estimation" , model = "depth-anything/Depth-Anything-V2-Small-hf" )
image = Image . open ( 'your/image/path' )
depth = pipe ( image )[ "depth" ]
python run.py
--encoder < vits | vitb | vitl | vitg >
--img-path < path > --outdir < outdir >
[--input-size < size > ] [--pred-only] [--grayscale]
ตัวเลือก:
--img-path
: คุณสามารถ 1) ชี้ไปที่ไดเร็กทอรีรูปภาพซึ่งจัดเก็บรูปภาพที่สนใจทั้งหมด 2) ชี้ไปที่รูปภาพเดียว หรือ 3) ชี้ไปที่ไฟล์ข้อความที่เก็บเส้นทางรูปภาพทั้งหมด--input-size
(เป็นทางเลือก): โดยค่าเริ่มต้น เราใช้ขนาดอินพุต 518
สำหรับการอนุมานโมเดล คุณสามารถเพิ่มขนาดเพื่อให้ได้ผลลัพธ์ที่มีรายละเอียดมากยิ่งขึ้น--pred-only
(ไม่บังคับ): บันทึกเฉพาะแผนที่เชิงลึกที่คาดการณ์ไว้ โดยไม่มีภาพดิบ--grayscale
(ตัวเลือก): บันทึกแผนที่ความลึกระดับสีเทาโดยไม่ต้องใช้ชุดสีตัวอย่างเช่น:
python run.py --encoder vitl --img-path assets/examples --outdir depth_vis
python run_video.py
--encoder < vits | vitb | vitl | vitg >
--video-path assets/examples_video --outdir video_depth_vis
[--input-size < size > ] [--pred-only] [--grayscale]
โมเดลที่ใหญ่กว่าของเรามีความสอดคล้องกันชั่วคราวในวิดีโอที่ดีกว่า
หากต้องการใช้การสาธิต gradio ของเราในพื้นที่:
python app.py
คุณยังสามารถลองสาธิตออนไลน์ของเราได้อีกด้วย
หมายเหตุ: เมื่อเปรียบเทียบกับ V1 เราได้ทำการปรับเปลี่ยนสถาปัตยกรรม DINOv2-DPT เล็กน้อย (ที่มีต้นกำเนิดมาจากปัญหานี้) ใน V1 เราใช้ฟีเจอร์จาก DINOv2 สี่เลเยอร์สุดท้ายในการถอดรหัส โดยไม่ได้ตั้งใจ ใน V2 เราใช้ฟีเจอร์ระดับกลางแทน แม้ว่าการปรับเปลี่ยนนี้จะไม่ปรับปรุงรายละเอียดหรือความถูกต้อง แต่เราตัดสินใจที่จะปฏิบัติตามหลักปฏิบัติทั่วไปนี้
โปรดดูการประมาณความลึกของเมตริก
โปรดดูเกณฑ์มาตรฐาน DA-2K
เราขอขอบคุณอย่างจริงใจที่สนับสนุนชุมชนสำหรับซีรีส์ Depth Anything ของเรา ขอบคุณมาก!
เรารู้สึกขอบคุณอย่างจริงใจต่อทีมงาน Hugging Face ที่ยอดเยี่ยม (@Pedro Cuenca, @Niels Rogge, @Merve Noyan, @Amy Roberts และคณะ) สำหรับความพยายามอย่างมากในการสนับสนุนโมเดลของเราใน Transformers และ Apple Core ML
นอกจากนี้เรายังขอขอบคุณทีมงาน DINOv2 ที่สนับสนุนโมเดลที่น่าประทับใจเช่นนี้ให้กับชุมชนของเรา
รุ่น Depth-Anything-V2-Small อยู่ภายใต้ลิขสิทธิ์ Apache-2.0 รุ่น Depth-Anything-V2-Base/Large/Giant อยู่ภายใต้ใบอนุญาต CC-BY-NC-4.0
หากคุณพบว่าโครงการนี้มีประโยชน์ โปรดพิจารณาการอ้างอิง:
@article { depth_anything_v2 ,
title = { Depth Anything V2 } ,
author = { Yang, Lihe and Kang, Bingyi and Huang, Zilong and Zhao, Zhen and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang } ,
journal = { arXiv:2406.09414 } ,
year = { 2024 }
}
@inproceedings { depth_anything_v1 ,
title = { Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data } ,
author = { Yang, Lihe and Kang, Bingyi and Huang, Zilong and Xu, Xiaogang and Feng, Jiashi and Zhao, Hengshuang } ,
booktitle = { CVPR } ,
year = { 2024 }
}