ZoeDepth 部署与实战:从环境搭建到单目深度估计应用
1. 为什么你需要关注ZoeDepth如果你玩过手机的人像模式或者用过一些AR应用肯定对“背景虚化”和“物体距离感知”不陌生。这些酷炫功能背后核心就是深度估计技术——让计算机从一张普通的2D图片里“猜”出每个像素点距离摄像机的远近。传统的深度估计要么需要昂贵的专用硬件比如双目摄像头、激光雷达要么计算复杂、精度有限。而今天我们要聊的ZoeDepth就是单目深度估计领域一个“开箱即用”的明星模型。简单说ZoeDepth就像一个拥有“透视眼”的AI。你给它一张用普通手机或相机拍的照片它就能生成一张对应的“深度图”。这张图上颜色越亮的地方代表离你越近颜色越暗的地方代表离你越远。有了这张图你能做的事情就多了给照片做背景虚化、为3D建模提供基础数据、辅助机器人或自动驾驶汽车理解环境甚至帮你把老照片转换成有立体感的3D场景。我最初接触ZoeDepth是因为一个室内机器人导航的项目。我们需要让机器人在陌生的房间里仅凭一个普通的RGB摄像头就能避开障碍物。试了好几个开源模型不是速度太慢就是精度感人直到用上ZoeDepth效果和速度的平衡让我眼前一亮。更重要的是它的部署过程相对友好社区也比较活跃对于想快速上手、验证想法的开发者和研究者来说是个非常不错的选择。所以无论你是计算机视觉的初学者想亲手体验一下AI“看”深度的魔力还是有一定经验的开发者正在为你的应用寻找一个可靠、高效的深度估计解决方案这篇从环境搭建到实战应用的指南都将带你一步步走通整个流程。我们不只讲怎么跑通Demo更会分享我踩过的坑、优化的技巧以及如何把它集成到你自己的项目里。准备好了吗我们开始吧。2. 动手之前理清思路与准备工具在一头扎进代码之前花几分钟理清我们要做什么、需要什么能省下后面好几个小时的折腾时间。ZoeDepth本质上是一个预训练的PyTorch深度学习模型。我们的目标是在自己的电脑上把它“请下来”配置好它运行所需的一切环境最后通过一个Web界面和它互动上传图片看效果。整个流程可以拆解成几个清晰的步骤我画了个简单的脑图帮你理解环境准备给你的电脑安装Python、PyTorch等基础软件就像给新房子通水电。获取代码与模型把ZoeDepth的“操作说明书”源代码和“大脑”预训练模型文件下载到本地。安装依赖与配置根据“操作说明书”的要求安装所有必要的工具包并处理一些常见的版本兼容问题。启动与测试运行提供的Web应用在浏览器里上传图片亲眼看看深度估计的效果。进阶与应用了解如何在自己的Python脚本里调用ZoeDepth以及一些性能优化的思路。你需要准备的工具清单一台电脑Windows 10/11或者Ubuntu等Linux发行版都可以。Mac也行但本文主要基于Windows/Linux环境。稳定的网络下载模型文件大约几百MB和Python包需要网络。基础的命令行操作知识知道怎么打开终端Windows叫CMD或PowerShellLinux/Mac叫Terminal会用cd命令切换目录就行。一个代码编辑器VS Code、PyCharm甚至记事本都行用来偶尔查看和修改代码。大约5GB的可用磁盘空间主要留给Python环境、PyTorch和模型文件。我个人强烈推荐使用Anaconda或Miniconda来管理Python环境。这就像给你的每个项目单独准备一个工具箱不同项目需要的工具库版本可能冲突用Conda可以完美隔离避免“一把扳手搞坏所有机器”的窘境。如果你还没安装去Anaconda官网下载安装包一路下一步就行非常简单。好了思路理清工具备齐我们接下来就从最基础的环境搭建开始。3. 第一步搭建专属的Python工作环境很多新手容易犯的一个错误是直接在电脑全局的Python环境里安装项目依赖。这非常危险一旦版本冲突可能导致其他项目甚至系统工具崩溃。所以我们的第一步就是为ZoeDepth创建一个干净的、独立的“沙盒”环境。打开你的终端Windows用户可以在开始菜单搜索“Anaconda Prompt”或“PowerShell”我们开始操作。3.1 创建并激活Conda环境首先我们创建一个新的Python环境名字就叫zoedepth_env并指定使用Python 3.8。为什么是3.8因为这是经过大量项目验证与PyTorch各版本兼容性非常好的一个Python版本能避开很多潜在的依赖地狱问题。# 创建名为 zoedepth_env 的环境并安装 python 3.8 conda create -n zoedepth_env python3.8 -y命令执行成功后你需要激活这个环境。激活意味着你后续的所有操作都只在这个“沙盒”里进行。# 激活环境 (Windows) conda activate zoedepth_env # 激活环境 (Linux/Mac) # source activate zoedepth_env # 旧版本conda # conda activate zoedepth_env # 新版本conda激活后你应该能看到命令行提示符前面变成了(zoedepth_env)这就对了如果没看到或者报错可能是Conda没有正确初始化可以尝试关闭终端重新打开或者搜索“conda activate 无效”的解决办法。3.2 安装PyTorch核心框架ZoeDepth是基于PyTorch构建的所以我们必须安装PyTorch。这里有个关键点你需要根据自己电脑是否有NVIDIA显卡来选择不同的PyTorch版本。如果你有NVIDIA显卡并且希望利用GPU加速强烈推荐 你需要先确认电脑上安装了正确版本的CUDA驱动。在终端输入nvidia-smi查看。记下显示的CUDA Version例如12.1。然后去PyTorch官网获取安装命令。假设你的CUDA是11.8命令通常如下# 示例安装支持CUDA 11.8的PyTorch pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118如果你没有NVIDIA显卡或者暂时不想折腾GPU 那就安装CPU版本的PyTorch。计算速度会慢很多但用于学习和初步测试完全没问题。# 安装CPU版本的PyTorch pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu安装完成后可以在Python里简单测试一下import torch print(torch.__version__) # 查看PyTorch版本 print(torch.cuda.is_available()) # 查看GPU是否可用返回True则恭喜你如果torch.cuda.is_available()返回True说明GPU环境配置成功后续深度估计的速度会有质的飞跃。3.3 安装其他必要工具包除了PyTorch我们还需要一些通用的数据处理和图像处理库。pip install numpy opencv-python pillow matplotlibnumpy科学计算基础包处理数组数据。opencv-python(cv2)强大的计算机视觉库用于读写和处理图片。pillow(PIL)另一个常用的图像处理库。matplotlib画图库方便我们可视化结果。至此一个坚实的基础环境就搭建好了。接下来我们去把ZoeDepth的“本体”请下来。4. 第二步获取ZoeDepth源代码与预训练模型ZoeDepth是英特尔实验室Intel ISL开源的项目代码托管在GitHub上。我们需要两部分东西一是程序源代码二是已经训练好的模型权重文件。4.1 克隆项目仓库“克隆”就是把GitHub上的代码仓库完整地复制到你的本地电脑。找一个你喜欢的目录比如D:\Projects或~/projects在终端里用cd命令切换过去然后执行克隆命令。# 克隆ZoeDepth的官方仓库 git clone https://github.com/isl-org/ZoeDepth.git # 进入项目文件夹 cd ZoeDepth如果git命令提示未找到你需要先安装Git。克隆完成后你会看到一个ZoeDepth文件夹里面包含了所有的源代码、示例和工具脚本。4.2 下载核心的预训练模型模型权重文件是ZoeDepth的“知识”所在没有它代码只是一副空壳。官方提供了几个不同精度和速度权衡的模型对于入门和大多数应用我们下载最通用的ZoeD_M12_N.pt即可。你可以直接从GitHub Releases页面下载也可以使用命令行工具。这里我推荐用wget或curl一步到位。# 在 ZoeDepth 项目根目录下创建一个目录存放模型如果不存在 mkdir -p .cache/torch/hub/checkpoints # 使用 wget 下载模型 (Linux/Mac通常自带Windows可安装或使用PowerShell的Invoke-WebRequest) wget -O .cache/torch/hub/checkpoints/ZoeD_M12_N.pt https://github.com/isl-org/ZoeDepth/releases/download/v1.0/ZoeD_M12_N.pt # 如果wget不可用可以尝试用curl # curl -L -o .cache/torch/hub/checkpoints/ZoeD_M12_N.pt https://github.com/isl-org/ZoeDepth/releases/download/v1.0/ZoeD_M12_N.pt重要提示模型文件大约700MB下载时间取决于你的网速。请确保下载完整。下载后最好用命令行检查一下文件大小ls -lh .cache/torch/hub/checkpoints/确认文件存在且大小正常。为什么要把模型放在.cache/torch/hub/checkpoints这个看起来有点奇怪的路径因为这是PyTorch Hub默认查找预训练模型的目录。把模型放在这里后续代码在加载模型时如果发现本地已有就不会再重新下载非常方便。5. 第三步安装项目依赖与解决“拦路虎”现在我们有了代码和模型但项目运行还需要一些特定的Python库。这些依赖通常写在一个叫requirements.txt的文件里。我们进入项目目录安装它们。# 确保你在 ZoeDepth 项目根目录下 pip install -r requirements.txt这个过程会安装一系列包比如timm,einops,gradio等。gradio就是用来构建我们即将使用的Web界面的库它能让AI模型快速变身成一个小网站。然而现实很少一帆风顺。根据我的经验以及很多社区朋友的反馈直接运行很可能遇到两个经典的错误。别担心我们见招拆招。5.1 错误一模型加载的严格模式问题当你第一次运行程序时可能会遇到类似这样的报错Unexpected key(s) in state_dict: ... Missing key(s) in state_dict: ...这是因为PyTorch在加载模型权重时默认要求strictTrue即模型结构必须与权重文件完全匹配键名一个不多一个不少。但有时因为版本迭代会有一些细微的不匹配。解决方法很简单找到报错提示的文件通常是zoedepth/models/model_io.py修改其中加载权重的那一行代码。用你的代码编辑器打开这个文件找到load_state_dict那一行大概在第49行附近给它加上参数strictFalse。修改前model.load_state_dict(state)修改后model.load_state_dict(state, strictFalse)这个改动告诉PyTorch“加载权重时宽松一点只加载能匹配上的部分忽略那些不匹配的键。”对于使用预训练模型来说这通常是安全且有效的。5.2 错误二网络结构中的函数签名不匹配第二个错误可能更隐蔽报错信息会指向一个beit.py文件提示某个函数调用缺少参数shared_rel_pos_bias。这是因为ZoeDepth依赖的某个底层视觉模型库timm的版本更新导致了接口变化。你需要找到这个文件它的路径通常类似于C:/Users/你的用户名/.cache/torch/hub/intel-isl_MiDaS_master/midas/backbones/beit.py或者在你项目虚拟环境的site-packages目录下。打开这个文件找到block_forward这个函数大约在第94行。你需要确保函数定义中包含shared_rel_pos_bias参数并且在函数体内所有调用self.attn的地方都传入了这个参数。关键修改点如下注意看函数定义和调用处def block_forward(self, x, resolution, shared_rel_pos_bias: Optional[torch.Tensor] None): # 确保这里有 shared_rel_pos_bias 参数 # ... 函数体内其他代码 ... # 在调用 self.attn 的地方确保传入了 shared_rel_pos_bias x x self.drop_path(self.attn(self.norm1(x), resolution, shared_rel_pos_biasshared_rel_pos_bias)) # 注意这行 # ... 函数体内其他代码 ...具体修改可能因版本略有不同但核心原则是让函数签名和函数体内的调用保持一致。如果函数体内有多处调用self.attn都要逐一检查并补上shared_rel_pos_biasshared_rel_pos_bias这个参数。这两个错误是我在部署时真实遇到的修改后就能顺利运行。如果你遇到了其他错误可以搜索错误信息大概率能在项目的GitHub Issues里找到答案。6. 第四步启动Web应用亲眼见证深度估计解决了依赖和错误最激动人心的时刻来了——让模型跑起来ZoeDepth项目贴心地提供了一个基于Gradio的Web界面让我们不用写一行前端代码就能通过浏览器上传图片并查看深度图。启动命令非常简单python run.py或者根据项目结构你也可以运行python web_demo.py # 如果项目根目录下有这个文件 # 或者 python app.py # 如果根目录下有这个文件通常项目根目录或ui/子目录下会有一个入口脚本。如果上述命令不对你可以用ls或dir命令查看当前目录有哪些.py文件尝试名字里带demo,app,web,gradio的脚本。运行成功后终端会输出类似下面的信息Running on local URL: http://127.0.0.1:7860 Running on public URL: https://xxxxx.gradio.live这说明一个本地Web服务器已经启动。你只需要打开浏览器访问http://127.0.0.1:7860如果端口7860被占用可能会是其他端口注意看终端输出。6.1 界面操作与效果解读打开的网页界面通常非常简洁主要包含图片上传区域可以拖拽图片或者点击上传。“提交”或“预测”按钮点击后开始处理。结果展示区域并排显示你上传的原图和模型生成的深度图。我找了一张室内房间的照片做测试。上传后点击按钮几秒钟后如果用了GPU速度会更快结果就出来了。左边是色彩丰富的原图右边是一张灰度或彩色映射的深度图。如何解读深度图在默认的视觉化效果下白色/亮色区域代表物体距离相机很近。比如照片前景的桌子、椅子。黑色/暗色区域代表物体距离相机很远。比如房间的墙壁深处、窗外的景物。灰色渐变代表了中间的距离层次。你可以清晰地看到地板的纵深、家具之间的前后关系。你可以多试几张不同类型的图片人物肖像、户外风景、建筑街景。观察一下模型在哪些场景下表现优异比如结构清晰的室内外在哪些场景下可能有挑战比如透明物体、纹理缺失的表面、极度复杂的远景。这能帮助你未来在实际应用中更好地界定它的能力边界。7. 第五步进阶使用与集成到你的项目跑通Demo很有成就感但我们的目标不止于此。最终我们可能需要把ZoeDepth的能力集成到自己的Python程序、机器人系统或者其他应用中。这就需要了解如何以编程的方式调用它。7.1 在Python脚本中调用ZoeDepthZoeDepth提供了简洁的API。在你的项目里可以像下面这样使用import torch from zoedepth.models.builder import build_model from zoedepth.utils.misc import pil_to_batched_tensor from PIL import Image import matplotlib.pyplot as plt # 1. 选择设备 (优先GPU) device torch.device(cuda if torch.cuda.is_available() else cpu) print(fUsing device: {device}) # 2. 加载模型 (这里以N版本为例在K版本上训练适用于NYU Depth V2数据集) model build_model(ZoeD_N, pretrained_resourcelocal::.cache/torch/hub/checkpoints/ZoeD_M12_N.pt).to(device) model.eval() # 设置为评估模式 # 3. 准备输入图像 image_path your_image.jpg image Image.open(image_path).convert(RGB) # 确保是RGB三通道 # 4. 预处理将PIL图像转换为模型需要的张量 input_tensor pil_to_batched_tensor(image).to(device) # 5. 推理预测 with torch.no_grad(): # 禁用梯度计算节省内存和计算资源 prediction model(input_tensor) # 6. 后处理与可视化 # prediction 是一个字典深度图通常在 metric_depth 这个key里 depth_map prediction[metric_depth].squeeze().cpu().numpy() # 转为numpy数组 # 显示深度图 plt.imshow(depth_map, cmapplasma) # 使用‘plasma’色彩映射更直观 plt.colorbar(labelDistance (相对值)) plt.axis(off) plt.title(ZoeDepth Prediction) plt.show() # 你也可以保存深度图 plt.imsave(depth_output.png, depth_map, cmapplasma)这段代码做了几件关键事指定运行设备、加载模型、预处理图片、执行推理、后处理结果。model.eval()和with torch.no_grad()在推理时非常重要它们能关闭Dropout等训练特有的层并阻止PyTorch跟踪计算图大幅提升效率并减少内存占用。7.2 模型选择与性能考量你可能会注意到我们下载的模型叫ZoeD_M12_N.pt代码里加载的是ZoeD_N。这里涉及ZoeDepth的模型变体ZoeD_N在NYU Depth V2室内场景数据集上训练适合室内环境。ZoeD_K在KITTI户外驾驶场景数据集上训练适合户外道路环境。ZoeD_NK在以上两个数据集上联合训练是一个通用的模型。后缀_M12可能指的是模型的具体配置。对于大多数通用场景从ZoeD_NK开始尝试是个好选择。你可以在官方发布页面找到不同变体的下载链接只需替换模型文件路径和build_model函数中的名字即可。关于性能在RTX 3060这样的消费级GPU上处理一张1080p的图片ZoeDepth大概只需要0.1到0.3秒完全能满足实时或准实时的应用需求。如果在CPU上时间可能会延长到数秒。因此强烈建议在支持GPU的环境下部署。7.3 常见问题与调试技巧内存不足 (CUDA out of memory)如果图片分辨率太高可能会撑爆GPU显存。尝试在预处理阶段将图片缩放到一个固定尺寸如384x384, 512x512模型对输入尺寸并不特别敏感。可以在pil_to_batched_tensor之前用image image.resize((512, 512))。结果看起来不对深度图全是噪声或没有层次感。首先检查输入图片是否是正常的RGB图片。其次确认你使用的模型变体N/K/NK是否与你的场景大致匹配。室内照片用ZoeD_N街景照片用ZoeD_K。想获取真实的物理距离ZoeDepth默认输出的是相对深度即值的大小表示相对的远近但不是以米为单位的绝对距离。如果需要绝对尺度你需要进行尺度对齐这通常需要已知场景中的至少一个真实距离例如已知图中桌子的宽度是0.8米然后根据这个参考来缩放整个深度图。这是一个高级话题官方仓库和论文中可能有相关讨论。想用在视频流上核心就是循环读取视频帧对每一帧调用上面的推理代码。注意处理好帧之间的时间间隔并考虑使用队列等机制来平衡处理速度和实时性。走到这一步你已经成功地将一个前沿的单目深度估计模型部署到了本地并且掌握了从可视化测试到代码集成的全流程。ZoeDepth是一个强大的工具但它也只是一个工具。真正的挑战和乐趣在于你如何利用它生成的深度信息去解决实际的问题比如开发一款更有趣的拍照App或者让你的机器人更智能地感知世界。我自己的项目里就把它用在了无人机避障的初步感知层效果比预想的要好。多尝试多结合具体场景你肯定能发现更多有价值的应用点。如果在集成过程中遇到新的问题不妨回头检查一下环境配置或者去开源社区看看有没有类似的讨论绝大多数坑都已经有人踩过并留下了答案。

相关新闻

BLDC电机驱动电路设计:从电源管理到三相桥接的完整避坑指南

BLDC电机驱动电路设计:从电源管理到三相桥接的完整避坑指南

BLDC电机驱动电路设计:从电源管理到三相桥接的完整避坑指南 对于许多硬件工程师和电子爱好者而言,无刷直流(BLDC)电机驱动电路的设计,既是一个充满挑战的技术高地,也是一个容易“踩坑”的实践领域。它不像简…

2026/7/5 12:53:49 阅读更多 →
【HomeAssistant智能家居系统远程控制】利用Docker与内网穿透技术实现跨地域智能家居管理

【HomeAssistant智能家居系统远程控制】利用Docker与内网穿透技术实现跨地域智能家居管理

1. 为什么你需要远程控制你的智能家居? 想象一下这个场景:你正在公司开会,突然想起来出门时好像忘记关客厅的空调了。或者,你正在外地出差,家人打电话说家里的智能门锁好像有点问题,想让你帮忙看看。又或者…

2026/7/6 6:23:05 阅读更多 →
SystemVerilog中forever循环的3种优雅终止方式(附Testbench实战代码)

SystemVerilog中forever循环的3种优雅终止方式(附Testbench实战代码)

SystemVerilog中forever循环的3种优雅终止方式(附Testbench实战代码) 在数字验证和FPGA开发的日常工作中,我们常常需要模拟那些永不停止的进程,比如一个主时钟源,或者一个持续监听总线的事务生成器。SystemVerilog的fo…

2026/5/17 11:37:00 阅读更多 →

最新新闻

现代简约客餐厅一体,小户型显大方案

现代简约客餐厅一体,小户型显大方案

现代简约客餐厅一体,小户型显大方案 近年来,随着城市居住空间日益紧凑,郑州本地越来越多的中产家庭在装修时倾向于选择“客餐厅一体化”布局,尤其在80-120㎡的小户型中,通过现代简约风格实现视觉扩容、功能融合与动线优…

2026/7/6 7:17:07 阅读更多 →
Axure RP终极汉化指南:3分钟让你的英文界面变中文

Axure RP终极汉化指南:3分钟让你的英文界面变中文

Axure RP终极汉化指南:3分钟让你的英文界面变中文 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英…

2026/7/6 7:15:06 阅读更多 →
工业级条码扫描系统架构与核心技术解析

工业级条码扫描系统架构与核心技术解析

1. 工业级条码扫描系统架构解析LV30条码扫描器与MKV42F64VLH16微控制器的组合,构成了一个完整的工业级条码识别解决方案。这套系统在硬件设计上采用了模块化架构,主要包含三个核心部分:光学采集模块:LV30扫描器采用1/3英寸全局快门…

2026/7/6 7:13:06 阅读更多 →
STM32F439ZG驱动RGB灯带实现智能灯光控制系统

STM32F439ZG驱动RGB灯带实现智能灯光控制系统

1. 项目概述:用智能灯光打造沉浸式空间体验这个项目的核心目标是通过IN-PC55TBTRGB全彩LED灯带和STM32F439ZG高性能微控制器的组合,将普通空间转化为动态光影艺术装置。作为一名嵌入式开发工程师,我最近完成了这个智能灯光控制系统的完整实现…

2026/7/6 7:11:06 阅读更多 →
基于CEC1302与IN-PC55TBTRGB的环境光效系统设计

基于CEC1302与IN-PC55TBTRGB的环境光效系统设计

1. IN-PC55TBTRGB与CEC1302的硬件组合解析这个项目核心在于利用IN-PC55TBTRGB可编程RGB LED和CEC1302控制器,打造沉浸式环境照明系统。IN-PC55TBTRGB是Inolux推出的5x5mm可寻址RGB LED模块,采用串行移位寄存器设计,支持逐颗编程控制。实测单个…

2026/7/6 7:11:06 阅读更多 →
基于MC6470 IMU与dsPIC30F4011的运动控制系统设计

基于MC6470 IMU与dsPIC30F4011的运动控制系统设计

1. 项目背景与核心器件选型在工业自动化和机器人控制领域,精确的运动控制和位置感知一直是核心技术挑战。MC6470作为一款6自由度(6DOF)惯性测量单元(IMU),集成了三轴加速度计和三轴陀螺仪,能够提供高精度的运动追踪数据。而dsPIC30F4011是Mic…

2026/7/6 7:09:05 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻