卫星视角下的深度估计:Depth Anything V2 模型应用
Mark Litwintschik
我在英国、美国、瑞典、爱尔兰和德国拥有 15 年的咨询和实践经验。过去的客户包括 Bank of America Merrill Lynch, Blackberry, Bloomberg, British Telecom, Ford, Google, ITV, LeoVegas, News UK, Pizza Hut, Royal Mail, T-Mobile, Williams Formula 1, Wise & UBS。我持有加拿大和英国护照。我的简历, Twitter & LinkedIn. 主页 | 基准测试 | 分类 | Atom Feed 发布于 2025 年 5 月 21 日星期三,分类:人工智能
卫星视角下的深度估计:Depth Anything V2 模型应用
Depth Anything V2 是去年发布的一个深度估计模型,由 TikTok 和香港大学 (HKU) 的团队开发。它使用了大约 60 万张合成的、带有标签的图像,以及超过 6200 万张真实的、未标记的图像进行训练。
在这篇文章中,我将使用 Depth Anything V2 的最大模型来处理 Maxar 公司 2025 年的泰国曼谷卫星图像。
我的工作站
我使用的是 5.7 GHz 的 AMD Ryzen 9 9950X CPU。它有 16 个核心和 32 个线程,以及 1.2 MB 的 L1 缓存、16 MB 的 L2 缓存和 64 MB 的 L3 缓存。它配有一个液冷散热器,并安装在一个宽敞的全尺寸 Cooler Master HAF 700 电脑机箱中。
系统有 96 GB 的 DDR5 RAM,时钟频率为 4,800 MT/s,以及一个第五代的 Crucial T700 4 TB NVMe M.2 SSD,其读取速度高达 12,400 MB/s。SSD 上有一个散热片,以帮助降低其温度。这是我系统的 C 盘。
该系统由一个 1,200 瓦的全模块化 Corsair 电源供电,并安装在 ASRock X870E Nova 90 主板上。
我通过 Microsoft 的 Ubuntu for Windows 在 Windows 11 Pro 上运行 Ubuntu 24 LTS。如果你想知道我为什么不使用基于 Linux 的桌面作为我的主要工作环境,原因是我仍然使用 Nvidia GTX 1080 GPU,它在 Windows 上有更好的驱动支持,而且我时不时会使用 ArcGIS Pro,它只原生支持 Windows。
安装先决条件
我正在运行 Esri 的 ArcGIS Pro 3.5。这个版本是他们最新的,上周发布的。
在这篇文章中,我还会使用 Python 3.12.3。
$sudoadd-apt-repositoryppa:deadsnakes/ppa
$sudoaptupdate
$sudoaptinstall\
python3-pip\
python3.12-venv
我将克隆 DepthAnything 的 v2 仓库。
$gitclonehttps://github.com/DepthAnything/Depth-Anything-V2\
~/Depth-Anything-V2
我将设置一个 Python 虚拟环境,并安装 Depth Anything 的依赖项。
$python3-mvenv~/.depth_anything_v2
$source~/.depth_anything_v2/bin/activate
$python3-mpipinstall\
-r~/Depth-Anything-V2/requirements.txt
DepthAnything v2 有三个不同的预训练模型可用。我将下载他们最大的 335.3M 参数模型,该模型大约有 1.3 GB。
$mkdir-p~/Depth-Anything-V2/checkpoints
$cd~/Depth-Anything-V2/checkpoints
$wget'https://huggingface.co/depth-anything/Depth-Anything-V2-Large/resolve/main/depth_anything_v2_vitl.pth?download=true'
Maxar 的曼谷卫星图像
Maxar 有一个 开放数据计划,几年前我写过一篇关于它的文章。在上个月缅甸和泰国发生地震后,我重新访问了这个源。
在这篇文章中,我将使用来自此源的两张图像。第一张图像覆盖了乍都乍区的一部分,包括 Ratchadaphisek 路,这条路上有几座高楼。
该图像是一个 GeoTIFF 金字塔,包含一个 17408x17408 像素的 JPEG,覆盖了大约 5.2 x 4.2 公里的区域。该图像于 2 月 14 日由 Maxar 的 WorldView 3 卫星拍摄,分辨率为 38 厘米。
$wgethttps://maxar-opendata.s3.amazonaws.com/events/Earthquake-Myanmar-March-2025/ard/47/122022102203/2025-02-14/10400100A4C67F00-visual.tif
下图显示了该图像相对于曼谷周边地区的地理位置。
下面我放大了 Ratchadaphisek 路,您可以看到高楼。
这是上述图像的元数据。
{
"geometry":{
"coordinates":[
[
[
100.574350016387555,
13.833249903918164
],
[
100.525209298594646,
13.833560533960037
],
[
100.525429970258031,
13.86737334
],
[
100.574579936582708,
13.86737334
],
[
100.574350016387555,
13.833249903918164
]
]
],
"type":"Polygon"
},
"properties":{
"ard_metadata_version":"0.0.1",
"catalog_id":"10400100A4C67F00",
"data-mask":"https://maxar-opendata.s3.amazonaws.com/events/Earthquake-Myanmar-March-2025/ard/47/122022102203/2025-02-14/10400100A4C67F00-data-mask.gpkg",
"datetime":"2025-02-14T04:02:15Z",
"grid:code":"MXRA-Z47-122022102203",
"gsd":0.38,
"ms_analytic":"https://maxar-opendata.s3.amazonaws.com/events/Earthquake-Myanmar-March-2025/ard/47/122022102203/2025-02-14/10400100A4C67F00-ms.tif",
"pan_analytic":"https://maxar-opendata.s3.amazonaws.com/events/Earthquake-Myanmar-March-2025/ard/47/122022102203/2025-02-14/10400100A4C67F00-pan.tif",
"platform":"WV03",
"proj:bbox":"664843.75,1529843.75,670156.25,1533619.8386004784",
"proj:code":"EPSG:32647",
"proj:geometry":{
"coordinates":[
[
[
670156.25,
1529843.75
],
[
664843.75,
1529843.75
],
[
664843.75,
1533585.6070091636
],
[
670156.25,
1533619.8386004784
],
[
670156.25,
1529843.75
]
]
],
"type":"Polygon"
},
"quadkey":"122022102203",
"tile:clouds_area":0.0,
"tile:clouds_percent":0,
"tile:data_area":19.9,
"utm_zone":47,
"view:azimuth":243.9,
"view:incidence_angle":59.9,
"view:off_nadir":27.2,
"view:sun_azimuth":139.3,
"view:sun_elevation":55.3,
"visual":"https://maxar-opendata.s3.amazonaws.com/events/Earthquake-Myanmar-March-2025/ard/47/122022102203/2025-02-14/10400100A4C67F00-visual.tif"
},
"type":"Feature"
}
第二张图像是从 Maxar 的原始源图像中裁剪出来的,重点是曼谷北部 Bang Kraso 地区的 Rattanathibet 路和 Tiwanon 路的交叉口。
由于我将在本文后面解释的原因,上面的图像比另一张小得多。 这是一个 3829x1936 像素的 JPEG 屏幕截图,以 100% 的比例从其源图像中捕获。
首次推理尝试
我将创建一个输出文件夹,并通过 DepthAnything 的最大模型运行较大的图像。
$cd~/Depth-Anything-V2/
$mkdir-pout
$pythonrun.py\
--encodervitl\
--pred-only\
--grayscale\
--img-path10400100A4C67F00-visual.tif\
--outdirout/
生成的深度图没有突出显示图像中的任何建筑物。
这很可能是因为源图像的一部分完全是黑色的。 这让模型出错,将空白区域视为图像的峰值。
第二次推理尝试
我将通过 DepthAnything 的最大模型运行较小的图像。
$pythonrun.py\
--encodervitl\
--pred-only\
--grayscale\
--img-pathPhotos_epK2mkc7uS.jpg\
--outdirout/
这个结果好多了。屏幕截图中缺少位置数据,所以我将深度图重新进行地理配准。
下图是深度图与 Maxar 的原始源图像的关系。
深度信息本身是相对的,因此需要进行一些工作才能确定图像中最高建筑物的高度并相应地调整比例。
可以构建一个工作流程,在该工作流程中,图像被平铺,并且可以从 Overture 的建筑物数据集中获取任何一个切片中最高的建筑物。 然后可以根据该高度设置高度比例。
航拍图像
该模型在高空拍摄的图像(例如从高楼上拍摄的图像)方面也表现出色。 以下是从 Viru Hotel 顶层拍摄的塔林老城的示例。
感谢您抽出时间阅读这篇文章。 我为北美和欧洲的客户提供咨询和实践开发服务。 如果您想讨论我的产品如何帮助您的业务,请通过 LinkedIn 与我联系。 ← 返回索引 版权所有 © 2014 - 2025 Mark Litwintschik。 本网站的模板基于 Giulio Fidente 的 模板。