保留正文与补采附件。源页面当前未重新核验;具体限制见交付清单。
We value your privacy
We use cookies to enhance your browsing experience, serve personalised ads or content, and analyse our traffic. By clicking "Accept All", you consent to our use of cookies.
Customise Reject All Accept All
Customise Consent Preferences
We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.
The cookies that are categorised as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... Show more
NecessaryAlways Active
Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.
Cookie BCTempID
Duration 10 minutes
Description No description available.
Cookie __cf_bm
Duration 1 hour
Description This cookie, set by Cloudflare, is used to support Cloudflare Bot Management.
Cookie AWSALBCORS
Duration 7 days
Description Amazon Web Services set this cookie for load balancing.
Cookie _cfuvid
Duration session
Description Cloudflare sets this cookie to track users across sessions to optimize user experience by maintaining session consistency and providing personalized services
Cookie li_gc
Duration 6 months
Description Linkedin set this cookie for storing visitor's consent regarding using cookies for non-essential purposes.
Cookie __hssrc
Duration session
Description This cookie is set by Hubspot whenever it changes the session cookie. The __hssrc cookie set to 1 indicates that the user has restarted the browser, and if the cookie does not exist, it is assumed to be a new session.
Cookie __hssc
Duration 1 hour
Description HubSpot sets this cookie to keep track of sessions and to determine if HubSpot should increment the session number and timestamps in the __hstc cookie.
Cookie wpEmojiSettingsSupports
Duration session
Description WordPress sets this cookie when a user interacts with emojis on a WordPress site. It helps determine if the user's browser can display emojis properly.
Cookie BCSessionID
Duration 1 year 1 month 4 days
Description Blueconic sets this cookie as a unique identifier for the BlueConic profile.
Cookie _octo
Duration 1 year
Description No description available.
Cookie logged_in
Duration 1 year
Description No description available.
Cookie __Secure-YEC
Duration past
Description YouTube sets this cookie to stores the user's video player preferences using embedded YouTube video
Cookie __eoi
Duration 6 months
Description Description is currently not available.
Cookie AWSALBTGCORS
Duration 7 days
Description No description available.
Cookie login-status-p
Duration past
Description Description is currently not available.
Cookie AWSALBTG
Duration 7 days
Description No description available.
Cookie csrf_token
Duration session
Description No description available.
Cookie token_v2
Duration 1 day
Description Description is currently not available.
Cookie D
Duration 1 year
Description Description is currently not available.
Cookie PHPSESSID
Duration session
Description This cookie is native to PHP applications. The cookie stores and identifies a user's unique session ID to manage user sessions on the website. The cookie is a session cookie and will be deleted when all the browser windows are closed.
Cookie VISITOR_PRIVACY_METADATA
Duration 6 months
Description YouTube sets this cookie to store the user's cookie consent state for the current domain.
Cookie cookietest
Duration session
Description The cookietest cookie is typically used to determine whether the user's browser accepts cookies, essential for website functionality and user experience.
Cookie __Host-airtable-session
Duration 1 year
Description This cookie is used to enable us to integrate the services of Airtable.
Cookie __Host-airtable-session.sig
Duration 1 year
Description This cookie is used to enable us to integrate the services of Airtable.
Cookie m
Duration 1 year 1 month 4 days
Description Stripe sets this cookie for fraud prevention purposes. It identifies the device used to access the website, allowing the website to be formatted accordingly.
Cookie BIGipServer*
Duration session
Description Marketo sets this cookie to collect information about the user's online activity and build a profile about their interests to provide advertisements relevant to the user.
Cookie __cfruid
Duration session
Description Cloudflare sets this cookie to identify trusted web traffic.
Cookie _GRECAPTCHA
Duration 6 months
Description Google Recaptcha service sets this cookie to identify bots to protect the website against malicious spam attacks.
Cookie __Secure-YNID
Duration 6 months
Description Google cookie used to protect user security and prevent fraud, especially during the login process.
Cookie cookieyes-consent
Duration 1 year
Description CookieYes sets this cookie to remember users' consent preferences so that their preferences are respected on subsequent visits to this site. It does not collect or store any personal information about the site visitors.
Functional Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.
Cookie lidc
Duration 1 day
Description LinkedIn sets the lidc cookie to facilitate data center selection.
Cookie brw
Duration 1 year
Description No description available.
Cookie brwConsent
Duration 5 minutes
Description Description is currently not available.
Cookie WMF-Uniq
Duration 1 year
Description Description is currently not available.
Cookie loom_anon_comment
Duration 1 year
Description No description available.
Cookie loom_referral_video
Duration session
Description Description is currently not available.
Cookie VISITOR_INFO1_LIVE
Duration 6 months
Description A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
Cookie yt-remote-connected-devices
Duration Never Expires
Description YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
Cookie ytidb::LAST_RESULT_ENTRY_KEY
Duration Never Expires
Description The cookie ytidb::LAST_RESULT_ENTRY_KEY is used by YouTube to store the last search result entry that was clicked by the user. This information is used to improve the user experience by providing more relevant search results in the future.
Cookie yt-remote-device-id
Duration Never Expires
Description YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
Cookie yt-remote-session-name
Duration session
Description The yt-remote-session-name cookie is used by YouTube to store the user's video player preferences using embedded YouTube video.
Cookie yt-remote-fast-check-period
Duration session
Description The yt-remote-fast-check-period cookie is used by YouTube to store the user's video player preferences for embedded YouTube videos.
Cookie yt-remote-session-app
Duration session
Description The yt-remote-session-app cookie is used by YouTube to store user preferences and information about the interface of the embedded YouTube video player.
Cookie yt-remote-cast-available
Duration session
Description The yt-remote-cast-available cookie is used to store the user's preferences regarding whether casting is available on their YouTube video player.
Cookie yt-remote-cast-installed
Duration session
Description The yt-remote-cast-installed cookie is used to store the user's video player preferences using embedded YouTube video.
Cookie cp_session
Duration 3 months
Description Codepen sets this cookie for Help systems found in the website.
Cookie loid
Duration 1 year 1 month 4 days
Description This cookie is set by the Reddit. The cookie enables the sharing of content from the website onto the social media platform.
Analytics Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.
Cookie __hstc
Duration 6 months
Description Hubspot set this main cookie for tracking visitors. It contains the domain, initial timestamp (first visit), last timestamp (last visit), current timestamp (this visit), and session number (increments for each subsequent session).
Cookie hubspotutk
Duration 6 months
Description HubSpot sets this cookie to keep track of the visitors to the website. This cookie is passed to HubSpot on form submission and used when deduplicating contacts.
Cookie _ga
Duration 1 year 1 month 4 days
Description Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors.
Cookie ga*
Duration 1 year 1 month 4 days
Description Google Analytics sets this cookie to store and count page views.
Cookie __Host-psifi.analyticsTrace
Duration 6 hours
Description Description is currently not available.
Cookie __Host-psifi.analyticsTraceV2
Duration 6 hours
Description Description is currently not available.
Cookie _gh_sess
Duration session
Description GitHub sets this cookie for temporary application and framework state between pages like what step the user is on in a multiple step form.
Cookie YSC
Duration session
Description YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
Cookie ajs_anonymous_id
Duration 1 year
Description This cookie is set by Segment to count the number of people who visit a certain site by tracking if they have visited before.
Cookie vuid
Duration 1 year 1 month 4 days
Description Vimeo installs this cookie to collect tracking information by setting a unique ID to embed videos on the website.
Performance Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Cookie AWSALB
Duration 7 days
Description AWSALB is an application load balancer cookie set by Amazon Web Services to map the session to the target.
Cookie acq
Duration past
Description Description is currently not available.
Cookie acq.sig
Duration past
Description Description is currently not available.
Cookie ptc
Duration 2 years
Description No description available.
Advertisement Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.
Cookie muc_ads
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to collect user behaviour and interaction data to optimize the website.
Cookie guest_id_marketing
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to identify and track the website visitor.
Cookie guest_id_ads
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to identify and track the website visitor.
Cookie personalization_id
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to integrate and share features for social media and also store information about how the user uses the website, for tracking and targeting.
Cookie guest_id
Duration 1 year 1 month 4 days
Description Twitter sets this cookie to identify and track the website visitor. It registers if a user is signed in to the Twitter platform and collects information about ad preferences.
Cookie bcookie
Duration 1 year
Description LinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser IDs.
Cookie __Secure-ROLLOUT_TOKEN
Duration 6 months
Description YouTube sets this cookie to manage feature rollout and experimentation. It helps Google control which new features or interface changes are shown to users as part of testing and staged rollouts, ensuring consistent experience for a given user during an experiment.
Cookie yt.innertube::nextId
Duration Never Expires
Description YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
Cookie yt.innertube::requests
Duration Never Expires
Description YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
Cookie session_tracker
Duration session
Description This cookie is set by the Reddit. This cookie is used to identify trusted web traffic. It also helps in adverstising on the website.
Cookie edgebucket
Duration session
Description Reddit sets this cookie to save the information about a log-on Reddit user, for the purpose of advertisement recommendations and updating the content.
Cookie did
Duration 1 year
Description Arbor sets this cookie to show targeted ads to site visitors.This cookie expires after 2 months or 1 year.
Uncategorised Other uncategorised cookies are those that are being analysed and have not been classified into a category as yet. No cookies to display. Reject All Save My Preferences Accept All Toggle SearchToggle Mobile Navigation Publish AI, ML & data-science insights to a global community of data professionals. Sign inSubmit an Article LatestEditor's PicksNewsletterShipAI
Write For TDS LinkedInXToggle Search Deep Learning
Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data by L. Yang et. al. Sascha Kirch March 20, 202411 min read
Image created from publication by Sascha Kirch
Monocular depth estimation, the prediction of distance in 3D space from a 2D image. The "ill posed and inherently ambiguous problem", as stated in literally every paper on depth estimation, is a fundamental problem in computer vision and robotics. At the same time foundation models dominate the scene in deep learning based NLP and computer vision. Wouldn't it be awesome if we could leverage their success for depth estimation too?
In today's paper walkthrough we'll dive into Depth Anything, a foundation model for monocular depth estimation. We will discover its architecture, the tricks used to train it and how it is used for metric depth estimation.
Paper: Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data, Lihe Yang et.al., 19 Jan. 2024 Resources: GitHub - Project Page - Demo - Checkpoints Conference: CVPR2024 Category: foundation models, monocular depth estimation Other Walkthroughs: [BYOL] - [CLIP] - [GLIP] - [Segment Anything] - [DINO] - [DDPM]
Learn this step by step with the interactive Machine Learning roadmap.
Why is depth such an important modality and why using deep learning for it?
Fig.1: Image and corresponding depth map. Image by Sascha Kirch and Depth Map created with Depth Anything Hugging Face Demo.
Put simply: to navigate through 3D space, one must need to know where all the stuff is and at which distance. Classical applications include collision avoidance, drivable space detection, placing objects into a virtual or augmented reality, creating 3D objects, navigating a robot to grab an object and many more.
Depth can be captured with a variety of sensors featuring different measurement modalities, using active or passive measurement principals and different number of sensors. The problem is that every sensor has its pros and cons but to sum it up: capturing accurate depth is expensive!
So, wouldn't it be nice to use a sensor that is relatively cheap, does not need a complex setup, does not need a lot of space, is light in weight and is already available in many systems? That sensor is a camera. Using a single camera solves many issues but faces us with new ones: Predicting 3D information from 2D images is ill posed, meaning we have not enough information to unambiguously predict the depth: is the object small or simply far away? Is a surface concave or convex? Sounds like a job for deep learning, our general function approximator!
How has this problem been approached previously?
Over the years many deep learning approaches have been investigated to perform depth estimation from single images. Some tried regression-based approaches to directly predict a depth value, others discretized the depth and performed a classification to predict in which depth-bin a pixel should be.
With the rise of generative deep learning many researchers also used GANs, VAEs or even diffusion-based models, including myself 🤓
RGB-D-Fusion: Image Conditioned Depth Diffusion of Humanoid Subjects by Sascha Kirch et.al., 2023 While many models showed promising performance, their usage has often been very application specific: e.g. indoor vs. outdoor scenes, predicting relative depth vs. metric depth, sparse vs. dense depth. Pretrained foundation models have been shown great 0-shot performance and can be fine-tuned with relatively few data samples to new applications. Since they are quite data-hungry, foundation models are usually only available for modalities that are available on the internet: images and text, but not for depth data... Until now!
Having talked about why depth is important and that having a Foundation Model for depth data would be desirable, let's dive into how the authors of Depth Anything managed to achieve this.
Depth Anything is an auto-encoder model that inputs an image and predicts a depth map. It is trained on a combination of labeled and unlabeled images. Up to 3 stages are involved in the training process:
Fig.2: Depth Anything pipeline. Source + annotations by Sascha Kirch
Digging a bit deeper
Collecting large amount of data with labels is expensive and time consuming. On the other hand, unlabeled images are available in a vast amount and are easy to collect. So naturally we'd like to utilize this data for training deep learning models. Some previous work had the same idea and used unlabeled data in combination with classical computer vision algorithms like stereo calibration or structure from motion to obtain depth labels, but this is quite time consuming.
The authors of Depth Anything trained a strong teacher model using the labeled dataset of 1.5M samples with a strong pre-trained DINOv2 encoder (a foundation model known for its semantically rich representations) and use it to generate pseudo labels for the 62M unlabeled samples that are used to train the student.
In that way the student can be trained using supervised techniques and they were able to obtain dense depth maps quickly and easily. Note that the pseudo labels are not perfect though and further tricks are required to train the student. The student has the same architecture as the teacher but is not using the teacher's weights. Its encoder is also initialized with DINOv2 but its decoder is initialized randomly.
Get an email whenever Sascha Kirch publishes 🚀 _Get an email whenever Sascha Kirch publishes 🚀 Looking to learn more about deep learning or simply stay up to dat_e...medium.com Some Words on the Feature Alignment Previous work has shown that depth estimation can be improved when training your model with an additional semantic segmentation task. The intuition behind it is, if you have a better understanding of the world (more meaningful feature embeddings) can also better resolve ambiguities in the depth estimation task. In a failed attempt, the authors of Depth Anything tried to train a shared encoder with individual decoders for the depth estimation task and the semantic segmentation task on the unlabeled data. The unlabeled images have been labeled with a combination of Foundation models. Eventually they implemented the feature alignment constraint. During the training of the student model, the encoder of the student is constrained to have similar features as the frozen DINOv2 encoder (a foundation model known for its semantically rich representations). Their similarity, as we will see later, is enforced by a cosine similarity. However, since DINOv2 has very similar features for subparts of an object (e.g front and rear of a car) and in depth estimation sub-parts can have very different depth values, they also introduce a margin to enforce the similarity too strongly, but still benefit from it. And What about those Perturbations? So, only adding unlabeled data to the training pipeline is not sufficient to further improve the performance upon the labeled data only baseline. What the authors did is to add strong perturbations to the unlabeled data that are consumed by the student. Note that these are added only to the student input and not to the teacher and not to the DINOv2 encoder. Similar approaches have been used already in other self-supervised frameworks like in DINO and BYOL. These perturbations include augmentation techniques like color jittering, noising the image and spatial distortions. The intuition behind those is always similar: make the models to learn similar features for the same things regardless of their appearance in the image. A car is a car regardless of the image being blurred or horizontally mirrored.
The authors compose a dataset consisting of 1.5 million labeled images and 62 million unlabeled images of a variety of indoor and outdoor scenes.
The labels are dense depth maps meaning, each pixel will have a depth associated with it (might need interpolation if the map is smaller as the image).
Table 1: Dataset composition. Source + annotations by Sascha Kirch
As mentioned earlier, the labeled data is used to train a teacher model and the student model. The unlabeled data is used to train the student model only.
The student model's loss function is an average of 3 loss terms:
Let's start with the labeled images: It is a simple mean absolute error aka. MAE, between predictions of the student on images and their corresponding labels of the labeled dataset.
Equation 1: Loss term for labeled images. Source + annotations by Sascha Kirch
The feature alignment loss is calculated by the average cosine similarity between the encoder output of the student model and the DINOv2 encoder output. Since we want to have the loss to penalizes dissimilarities, we subtract the cosine similarity from 1. Note that the cosine similarity measures the angle between 2 vectors, not their distance.
Equation 2: Loss term for the feature alignment. Source + annotations by Sascha Kirch
Note: The paper mentions a margin 𝛼 to not contrain the similarity too strongly, as described earlier. The paper is not really clear about that but I guess they ignore losses that are <𝛼, and they use 𝛼=0.15 according their ablation studies. Finally let's have a look on the unlabeled data. Despite the strong perturbations applied to single images, the authors also implement a CutMix augmentation for 50% of the samples. It basically combines 2 images using a mask.
Equation 3: CutMix image construction. Source + annotations by Sascha Kirch The combined image is then fed into the student model and the individual image is fed into the teacher model to obtain the pseudo label. Then a mean absolute error is calculated. Note that the loss is calculated twice, one time for each contributing image determined by the mask M.
Equation 4: Individual loss terms for the loss term used for unlabeled images. Source + annotations by Sascha Kirch Finally, the individual terms are added and the average over all pixels is taken. I guess there is no need to multiply again by the mask since it has been done in the equation above already.
Equation 5: Loss term for unlabeled images. Source + annotations by Sascha Kirch
Before diving into the experiments and ablations, let's change the order of the paper and first inspect some qualitative results.
In a first test, the model was inferred with unseen images from different domains including indoor and outdoor scenes with different lighting conditions.
Fig. 3: Qualitative results on six unseen datasets. Source + annotations by Sascha Kirch
Further, the compare their performance against MiDaS v3.1, showing that the Depth Anything model in general is able to capture more details and has a better general understanding of the scene allowing to resolve ambiguities much better.
Fig. 4: Qualitative comparison between Depth Anything and MiDaS v3.1. Source + annotations by Sascha Kirch
In a final qualitative test, they took a ControlNet, a diffusion-based generative model to generate new images conditioned on the predicted depth map and an input prompt.
Fig. 5: Using predicted depth for depth+text condition ControlNet for image generation. Source + annotations by Sascha Kirch
Let's now take a closer look onto the experiments and ablations that have been performed to evaluate the effectiveness of their method.
In Summary, the authors show in their experiments that:
Zero-Shot, Relative Depth Estimation
In this experiment, the Depth Anything model is pre-trained on the dataset composed by the authors and evaluated on other datasets without having seen a sample from the individual datasets (0-shot). It is compared against the best checkpoint of MiDaS v3.1.
Table 2: Zero-Shot Relative Depth Estimation. Source + annotations by Sascha Kirch
Fine-Tuned (In-Domain) Metric Depth Estimation
In this experiment the Depth Anything model pre-trained on relative depth estimation is fine-tuned for metric depth estimation. An encoder-decoder model is initialized with the pre-trained Depth Anything encoder and a randomly initialized decoder. It is then fine-tuned using the ZoeDepth framework on the training set of a given dataset and finally evaluated on the same dataset and compared to other models.
Table 3: Fine-Tuned (In-Domain) Metric Depth Estimation. Source + annotations by Sascha Kirch
Fine-Tuned (Zero-Shot) Metric Depth Estimation
Here the same pre-trained Depth Anything model is fine-tuned on metric depth estimation, but this time evaluated on another dataset than it was tested on.
The ZoeDepth framework is used to fine-tune two metric depth estimation models. The first one uses MiDaS v3.1 (shown as ZoeDepth in the table) as encoder and the second one uses the Depth Anything encoder.
Table 4: Fine-Tuned (Zero-Shot) Metric Depth Estimation. Source + annotations by Sascha Kirch
Fine-Tuned Semantic Segmentation
In this experiment the authors test the semantic capability of the Depth Anything encoder. Recall that it was constrained during training with their feature alignment loss to have similar features as the DINOv2 encoder, a foundation model to be known to have rich semantic embeddings.
Table 5: Fine-Tuned Semantic Segmentation. Source + annotations by Sascha Kirch
General Ablation Study
In this general ablation study, the authors tested the effectiveness of their different loss terms and constraints and the strong perturbations on unlabeled data.
Table 6: General Ablation Study for individual loss terms and the strong perturbations. Source + annotations by Sascha Kirch
Different Encoders for Downstream Task
In this final ablation study the authors show that their encoder is superior to DINOv2's and MiDaS' encoder when fine-tuned on depth estimation and semantic segmentation tasks suggesting the feature space of the Depth Anything encoder captures more semantic information.
Table 7: Comparision of different encoders on different downstream tasks. Source + annotations by Sascha Kirch
Depth Anything is a great step towards Foundation Models in other domains than image or text. They have successfully trained a strong and semantically rich encoder model that can be either used in a 0-shot mode or further fine-tuned to a custom dataset.
Here a list of links with further reassorces on Depth Anything and Foundation Models. Hugging Face Demo to play with Depth Anything:
Depth Anything - a Hugging Face Space by LiheYoung Paper Walkthroughs You might also like my other paper walkthroughs covering other foundation models: Paper Walkthroughs by Sascha Kirch
All articles on Towards Data Science are available to registered users. Create a free account today to access this article and thousands more. Register for freeSign in to your account
Written By
See all from Sascha Kirch Editor's PicksDeep DivesDeep LearningFoundation ModelsSaschas Paper Club Share This Article
Towards Data Science is a community publication. Submit your insights to reach our global audience and earn through the TDS Author Payment Program. Write for TDS
Deep Learning Learn how to simulate reality with Python Mauro Di Pietro September 8, 20269 min read
Artificial Intelligence A Metric for Evaluating Recommendation Engines Kurtis Pykes August 8, 20205 min read
Data Engineering Exploring the Hadoop ecosystem — key tools to maximize your cluster’s potential Niklas Lang March 14, 202520 min read
Artificial Intelligence No traces of intimidating linear algebra detected... Thushan Ganegedara September 1, 20207 min read
Deep Learning Learn the details of the Transformer architecture Beatriz Stollnitz July 25, 202323 min read
Deep Learning We examine and explain the differences between the original formulation of Nesterov momentum and PyTorch's implementation. Jason Vega September 2, 20237 min read
How it works and can be used in your research Rafael Valdece Sousa Bastos October 9, 20219 min read
Deep Learning High Resolution Net (HRNet) is a state of the art neural network for human pose estimation - an image processing task which finds the... Peter June 13, 20209 min read
Data Visualization An approach using Bayesian regression with brms Daniel Manrique Castano April 7, 202412 min read
Your home for data science and AI. The world's leading publication for data science, data analytics, data engineering, machine learning, and artificial intelligence professionals. Subscribe to Our NewsletterWrite For TDS•About•Advertise•Privacy Policy•Terms of Use © Insight Media Group, LLC 2026•The New Stack•roadmap.sh•Creator Network
Close