Lihe Yang 1 · Bingyi Kang 2† · Zilong Huang 2
Zhen Zhao · Xiaogang Xu · Jiashi Feng 2 · Hengshuang Zhao 1*
1 HKU 2 TikTok
†chef de projet *auteur correspondant
Cet ouvrage présente Depth Anything V2. Il surpasse considérablement le V1 en termes de détails fins et de robustesse. Par rapport aux modèles basés sur SD, il bénéficie d'une vitesse d'inférence plus rapide, de moins de paramètres et d'une précision de profondeur plus élevée.
06/07/2024 : Depth Anything V2 est pris en charge dans Transformers. Consultez les instructions pour une utilisation pratique.
2024-06-25 : Depth Anything est intégré aux modèles Apple Core ML. Voir les instructions (V1, V2) pour l'utilisation.
2024-06-22 : Nous publions des modèles de profondeur métrique plus petits basés sur Depth-Anything-V2-Small et Base.
20/06/2024 : Notre référentiel et notre page de projet sont signalés par GitHub et retirés du public pendant 6 jours. Désolé pour le dérangement.
14/06/2024 : L'article, la page du projet, le code, les modèles, la démo et le benchmark sont tous publiés.
Nous proposons quatre modèles à différentes échelles pour une estimation robuste de la profondeur relative :
Modèle | Paramètres | Point de contrôle |
---|---|---|
Profondeur-Tout-V2-Petit | 24,8 millions | Télécharger |
Profondeur-Anything-V2-Base | 97,5 millions | Télécharger |
Profondeur-Anything-V2-Large | 335,3 millions | Télécharger |
Profondeur-Anything-V2-Giant | 1,3B | À venir |
clone git https://github.com/DepthAnything/Depth-Anything-V2cd Depth-Anything-V2 pip install -r exigences.txt
Téléchargez les points de contrôle répertoriés ici et placez-les dans le répertoire checkpoints
.
import cv2import torchfrom deep_anything_v2.dpt import DepthAnythingV2DEVICE = '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' : { 'encodeur' : 'vitl', 'features' : 256, 'out_channels' : [256, 512, 1024, 1024]}, 'vitg' : {'encoder' : 'vitg', 'features' : 384, 'out_channels' : [1536, 1536, 1536, 1536]} }encoder = 'vitl' # ou 'vits', 'vitb', 'vitg'model = DepthAnythingV2(**model_configs[encoder])model.load_state_dict(torch.load(f'checkpoints/third_anything_v2_{encoder}.pth', map_location='cpu'))model = model.to(DEVICE).eval()raw_img = cv2.imread('your/image/path')degree = model.infer_image(raw_img) # Carte de profondeur brute HxW dans numpy
Si vous ne souhaitez pas cloner ce référentiel, vous pouvez également charger nos modèles via Transformers. Vous trouverez ci-dessous un simple extrait de code. Veuillez vous référer à la page officielle pour plus de détails.
Remarque 1 : assurez-vous que vous pouvez vous connecter à Hugging Face et que vous avez installé les derniers Transformers.
Remarque 2 : en raison de la différence de suréchantillonnage entre OpenCV (que nous avons utilisé) et Pillow (HF utilisé), les prédictions peuvent différer légèrement. Il est donc plus recommandé d'utiliser nos modèles de la manière présentée ci-dessus.
à partir du pipeline d'importation des transformateurs à partir de l'importation PIL Imagepipe = pipeline(task="profondeur-estimation", model="profondeur-anything/Depth-Anything-V2-Small-hf")image = Image.open('your/image/path') profondeur = tuyau(image)["profondeur"]
python run.py --encoder <vits | vitb | vitl | vitg> --img-path <chemin> --outdir <outdir> [--input-size <taille>] [--pred-only] [--grayscale]
Possibilités :
--img-path
: Vous pouvez soit 1) le pointer vers un répertoire d'images stockant toutes les images intéressées, 2) le pointer vers une seule image, ou 3) le pointer vers un fichier texte stockant tous les chemins d'image.
--input-size
(facultatif) : par défaut, nous utilisons la taille d'entrée 518
pour l'inférence de modèle. Vous pouvez augmenter la taille pour des résultats encore plus fins.
--pred-only
(facultatif) : enregistrez uniquement la carte de profondeur prédite, sans image brute.
--grayscale
(facultatif) : enregistrez la carte de profondeur en niveaux de gris, sans appliquer la palette de couleurs.
Par exemple:
python run.py --encoder vitl --img-path actifs/exemples --outdir profondeur_vis
python run_video.py --encoder <vits | vitb | vitl | vitg> --video-path actifs/exemples_vidéo --outdir video_degree_vis [--input-size <taille>] [--pred-only] [--grayscale]
Notre modèle plus grand a une meilleure cohérence temporelle sur les vidéos.
Pour utiliser notre démo gradio localement :
application python.py
Vous pouvez également essayer notre démo en ligne.
Remarque : Par rapport à la V1, nous avons apporté une modification mineure à l'architecture DINOv2-DPT (provenant de ce problème). Dans la V1, nous avons involontairement utilisé les fonctionnalités des quatre dernières couches de DINOv2 pour le décodage. Dans la V2, nous utilisons plutôt des fonctionnalités intermédiaires. Bien que cette modification n’ait pas amélioré les détails ou la précision, nous avons décidé de suivre cette pratique courante.
Veuillez vous référer à l'estimation de la profondeur métrique.
Veuillez vous référer au benchmark DA-2K.
Nous apprécions sincèrement tout le soutien de la communauté pour notre série Depth Anything. Merci beaucoup !
Apple Core ML :
https://developer.apple.com/machine-learning/models
https://huggingface.co/apple/coreml-degree-anything-v2-small
https://huggingface.co/apple/coreml-degree-anything-small
Transformateurs :
https://huggingface.co/docs/transformers/main/en/model_doc/degree_anything_v2
https://huggingface.co/docs/transformers/main/en/model_doc/degree_anything
TensorRT :
https://github.com/spacewalk01/degree-anything-tensorrt
https://github.com/zhujiajian98/Depth-Anythingv2-TensorRT-python
ONNX : https://github.com/fabio-sim/Depth-Anything-ONNX
ComfyUI : https://github.com/kijai/ComfyUI-DepthAnythingV2
Transformers.js (profondeur en temps réel sur le Web) : https://huggingface.co/spaces/Xenova/webgpu-realtime-third-estimation
Androïde:
https://github.com/shubham0204/Depth-Anything-Android
https://github.com/FeiGeChuanShu/ncnn-android-degree_anything
Nous sommes sincèrement reconnaissants à la formidable équipe de Hugging Face (@Pedro Cuenca, @Niels Rogge, @Merve Noyan, @Amy Roberts, et al.) pour leurs énormes efforts dans la prise en charge de nos modèles dans Transformers et Apple Core ML.
Nous remercions également l'équipe DINOv2 d'avoir fourni des modèles aussi impressionnants à notre communauté.
Le modèle Depth-Anything-V2-Small est sous la licence Apache-2.0. Les modèles Depth-Anything-V2-Base/Large/Giant sont sous la licence CC-BY-NC-4.0.
Si vous trouvez ce projet utile, pensez à citer :
@article{degree_anything_v2, title={Depth Anything V2}, author={Yang, Lihe et Kang, Bingyi et Huang, Zilong et Zhao, Zhen et Xu, Xiaogang et Feng, Jiashi et Zhao, Hengshuang}, journal={arXiv : 2406.09414}, année={2024}}@inproceedings{profondeur_anything_v1, titre={Profondeur Anything : libérer la puissance des données non étiquetées à grande échelle}, author={Yang, Lihe et Kang, Bingyi et Huang, Zilong et Xu, Xiaogang et Feng, Jiashi et Zhao, Hengshuang}, booktitle={CVPR}, année={2024}}