当前位置: 首页 > article >正文

LingBot-Depth进阶使用:结合API实现批量图片深度估计自动化

LingBot-Depth进阶使用结合API实现批量图片深度估计自动化1. 引言为什么需要批量深度估计在日常的计算机视觉项目中我们经常需要处理大量图片的深度估计任务。无论是构建3D场景数据集、开发机器人导航系统还是进行AR/VR内容创作手动一张张上传图片到Web界面显然效率太低。这就是为什么我们需要掌握LingBot-Depth的API调用方法实现批量图片处理的自动化流程。LingBot-Depth提供的FastAPI接口让我们可以绕过图形界面直接通过编程方式发送请求并获取深度图结果。本文将手把手教你如何搭建一个完整的自动化处理流水线从环境准备到代码实现再到错误处理和性能优化。2. 环境准备与API基础2.1 确认服务状态在开始之前请确保你已经按照基础教程部署了LingBot-Depth镜像并且服务正常运行。可以通过以下方式验证# 检查FastAPI服务是否运行 curl http://localhost:8000/docs如果看到Swagger API文档页面说明服务已就绪。2.2 了解核心API端点LingBot-Depth提供了两个主要API端点/predict/monocular- 单目深度估计/predict/completion- 深度补全我们主要关注单目深度估计端点其基本请求格式如下{ image: base64编码的RGB图像, output_type: heatmap|raw|both, # 输出类型 resize: null # 可选缩放尺寸 }3. 构建批量处理脚本3.1 基础脚本框架下面是一个完整的Python脚本框架用于批量处理指定目录下的所有图片import os import base64 import requests from PIL import Image import numpy as np import time class DepthBatchProcessor: def __init__(self, api_urlhttp://localhost:8000/predict/monocular): self.api_url api_url self.headers {Content-Type: application/json} def image_to_base64(self, image_path): with open(image_path, rb) as image_file: return base64.b64encode(image_file.read()).decode(utf-8) def process_single_image(self, image_path, output_dir): try: # 准备请求数据 image_b64 self.image_to_base64(image_path) payload { image: image_b64, output_type: both, resize: None } # 发送API请求 start_time time.time() response requests.post( self.api_url, jsonpayload, headersself.headers ) processing_time time.time() - start_time if response.status_code 200: result response.json() # 保存结果 self.save_results(image_path, output_dir, result) return True, processing_time else: print(f处理失败: {image_path}, 状态码: {response.status_code}) return False, 0 except Exception as e: print(f处理异常: {image_path}, 错误: {str(e)}) return False, 0 def save_results(self, image_path, output_dir, result): # 创建输出目录 os.makedirs(output_dir, exist_okTrue) # 提取文件名 base_name os.path.splitext(os.path.basename(image_path))[0] # 保存伪彩色深度图 if heatmap in result: heatmap_data base64.b64decode(result[heatmap]) with open(f{output_dir}/{base_name}_depth.png, wb) as f: f.write(heatmap_data) # 保存原始深度数据 if raw_depth in result: depth_array np.frombuffer( base64.b64decode(result[raw_depth]), dtypenp.float32 ).reshape(result[height], result[width]) np.save(f{output_dir}/{base_name}_depth.npy, depth_array) def process_batch(self, input_dir, output_dir, max_workers4): # 获取所有图片文件 image_files [ f for f in os.listdir(input_dir) if f.lower().endswith((.png, .jpg, .jpeg)) ] total_images len(image_files) success_count 0 total_time 0 print(f开始处理 {total_images} 张图片...) for idx, image_file in enumerate(image_files, 1): image_path os.path.join(input_dir, image_file) print(f正在处理 [{idx}/{total_images}]: {image_file}) success, time_taken self.process_single_image(image_path, output_dir) if success: success_count 1 total_time time_taken print(f完成处理 [{idx}/{total_images}], 耗时: {time_taken:.2f}s) else: print(f跳过 [{idx}/{total_images}] 由于处理失败) print(\n批量处理完成!) print(f成功处理: {success_count}/{total_images}) if success_count 0: print(f平均处理时间: {total_time/success_count:.2f}s/张)3.2 脚本使用方法要使用这个批量处理脚本只需按照以下步骤将上述代码保存为depth_batch_processor.py准备输入图片目录如./input_images创建输出目录如./output_depth运行脚本python depth_batch_processor.py --input ./input_images --output ./output_depth4. 高级功能与优化技巧4.1 并行处理加速对于大批量图片我们可以使用多线程/多进程来加速处理。下面是修改后的并行处理版本from concurrent.futures import ThreadPoolExecutor class DepthBatchProcessor: # ... 保留之前的其他方法 ... def process_batch_parallel(self, input_dir, output_dir, max_workers4): image_files [ f for f in os.listdir(input_dir) if f.lower().endswith((.png, .jpg, .jpeg)) ] total_images len(image_files) success_count 0 total_time 0 print(f开始并行处理 {total_images} 张图片 (workers{max_workers})...) with ThreadPoolExecutor(max_workersmax_workers) as executor: futures [] for idx, image_file in enumerate(image_files, 1): image_path os.path.join(input_dir, image_file) futures.append(executor.submit( self.process_single_image, image_path, output_dir )) for idx, future in enumerate(futures, 1): success, time_taken future.result() if success: success_count 1 total_time time_taken print(f完成 [{idx}/{total_images}], 耗时: {time_taken:.2f}s) else: print(f跳过 [{idx}/{total_images}] 由于处理失败) print(\n批量处理完成!) print(f成功处理: {success_count}/{total_images}) if success_count 0: print(f平均处理时间: {total_time/success_count:.2f}s/张)4.2 错误处理与重试机制网络请求可能会遇到临时性问题添加重试机制可以提高稳定性def process_single_image(self, image_path, output_dir, max_retries3): retry_count 0 while retry_count max_retries: try: # 准备请求数据 image_b64 self.image_to_base64(image_path) payload { image: image_b64, output_type: both, resize: None } # 发送API请求 start_time time.time() response requests.post( self.api_url, jsonpayload, headersself.headers, timeout30 # 添加超时 ) processing_time time.time() - start_time if response.status_code 200: result response.json() self.save_results(image_path, output_dir, result) return True, processing_time else: print(f尝试 {retry_count1}/{max_retries} 失败: {image_path}) retry_count 1 time.sleep(1) # 等待1秒再重试 except Exception as e: print(f尝试 {retry_count1}/{max_retries} 异常: {str(e)}) retry_count 1 time.sleep(1) print(f达到最大重试次数 {max_retries}, 跳过: {image_path}) return False, 04.3 内存优化技巧处理大量高分辨率图片时内存管理很重要图片尺寸调整在发送到API前可以先将大图缩小def resize_image(self, image_path, max_size1024): img Image.open(image_path) if max(img.size) max_size: ratio max_size / max(img.size) new_size (int(img.size[0] * ratio), int(img.size[1] * ratio)) img img.resize(new_size, Image.LANCZOS) return img分批处理对于超大图片集可以分批加载处理def process_batch_in_chunks(self, input_dir, output_dir, chunk_size100): all_files [f for f in os.listdir(input_dir) if f.lower().endswith((.png, .jpg, .jpeg))] for i in range(0, len(all_files), chunk_size): chunk all_files[i:ichunk_size] print(f处理批次 {i//chunk_size 1}/{(len(all_files)-1)//chunk_size 1}) self.process_batch_parallel( input_dir, output_dir, image_fileschunk )5. 实际应用案例5.1 3D场景重建流水线将批量深度估计集成到3D重建流程中class SceneReconstructor: def __init__(self, depth_processor): self.depth_processor depth_processor def process_scene_sequence(self, image_dir, output_dir): # 第一步批量生成深度图 self.depth_processor.process_batch(image_dir, output_dir) # 第二步加载深度图和彩色图 depth_maps self.load_depth_maps(output_dir) color_images self.load_color_images(image_dir) # 第三步点云生成与配准 point_clouds self.generate_point_clouds(color_images, depth_maps) merged_cloud self.align_point_clouds(point_clouds) # 保存最终3D模型 self.save_3d_model(merged_cloud, os.path.join(output_dir, scene.ply)) # 其他辅助方法...5.2 机器人导航数据集生成为机器人导航系统自动生成训练数据def generate_navigation_dataset(rgb_dir, output_dir, camera_params): processor DepthBatchProcessor() # 处理所有RGB图像 processor.process_batch(rgb_dir, output_dir) # 为每张图片生成3D语义信息 for depth_file in glob.glob(os.path.join(output_dir, *_depth.npy)): base_name os.path.basename(depth_file).replace(_depth.npy, ) rgb_path os.path.join(rgb_dir, f{base_name}.jpg) depth_map np.load(depth_file) rgb_image cv2.imread(rgb_path) # 生成点云 points depth_to_pointcloud(depth_map, camera_params) # 保存为机器人导航系统需要的格式 save_navigation_data( points, rgb_image, os.path.join(output_dir, f{base_name}_navdata.bin) )6. 总结与最佳实践通过本文的指导你应该已经掌握了使用LingBot-Depth API进行批量图片深度估计的完整流程。以下是几个关键的最佳实践建议预处理很重要确保输入图片格式正确必要时进行尺寸调整合理设置并行度根据服务器性能调整max_workers避免过载实施错误处理网络请求可能失败要有重试和日志记录机制结果验证定期抽样检查生成的深度图质量资源管理大批量处理时注意内存和磁盘空间使用自动化批量处理可以极大提高工作效率特别是在需要处理成百上千张图片的项目中。LingBot-Depth的API接口设计简洁高效结合Python的强大生态能够轻松集成到各种计算机视觉流水线中。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

LingBot-Depth进阶使用:结合API实现批量图片深度估计自动化

LingBot-Depth进阶使用:结合API实现批量图片深度估计自动化 1. 引言:为什么需要批量深度估计? 在日常的计算机视觉项目中,我们经常需要处理大量图片的深度估计任务。无论是构建3D场景数据集、开发机器人导航系统,还是…...

有人向OpenAI CEO家扔了燃烧弹:对AI的恐惧,真的要走到这一步吗?

有人向OpenAI CEO家扔了燃烧弹,来源他自己记录的播客: blog.samaltman.com他在博文里附上了全家福。他说,希望这张照片,能让下一个想动手的人犹豫一下。他在博文里附上了全家福。他说,希望这张照片,能让下一…...

SiameseUIE部署案例:中小企业文档结构化信息抽取落地实践

SiameseUIE部署案例:中小企业文档结构化信息抽取落地实践 1. 项目背景与价值 在日常业务运营中,中小企业往往需要处理大量非结构化的文档数据。比如从合同文件中提取关键人物信息,从业务报告中抽取地点信息,或者从新闻稿件中识别…...

StructBERT文本相似度模型Web服务开发:从零搭建RESTful API

StructBERT文本相似度模型Web服务开发:从零搭建RESTful API 你是不是也有过这样的想法:手头有一个很棒的AI模型,比如能精准判断两段文字相似度的StructBERT,但不知道怎么把它变成一个大家都能方便使用的服务?总不能每…...

告别抽佣,源码交付,新能源充电桩运营管理平台支持聚合管理云快充、特来电、星星充电,灵活配置分时电价、停车限免、超时占位费

充电桩运营管理平台支持领充、云快充、特来电、星星充电等2025年底,我国新能源汽车保有量已达到 4397 万辆,而全国公共充电桩仅480万台,在节假日期间“找桩难、充电烦”的问题突出,普遍存在“充电一小时,排队四小时”的…...

小白必看:Qwen3-ASR-0.6B语音识别镜像开箱即用教程

小白必看:Qwen3-ASR-0.6B语音识别镜像开箱即用教程 你是不是经常遇到这样的场景:开会录音需要整理成文字、外语视频需要字幕、或者想给一段语音快速生成文字稿?手动转写不仅耗时耗力,还容易出错。今天我要给你介绍一个超级好用的…...

如何在Blender中轻松导入导出3MF格式:3D打印工作流完整指南

如何在Blender中轻松导入导出3MF格式:3D打印工作流完整指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经在Blender中创建了精美的3D模型&#x…...

网易云音乐NCM格式解密:3步快速解锁加密音乐的终极指南

网易云音乐NCM格式解密:3步快速解锁加密音乐的终极指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否在网易云音乐下载了VIP歌曲,却发现只能在特定客户端播放?这正是NCM加密格式带来的困扰…...

避坑指南:ESP32 Deep Sleep下GPIO状态保持,为什么你的RTC GPIO没锁住?

ESP32深度睡眠GPIO状态保持:从原理到实战的避坑指南 引言 凌晨三点,你的ESP32设备突然失控了——明明配置了深度睡眠状态下的GPIO保持功能,唤醒后却发现某个关键引脚的电平莫名其妙发生了变化。这不是什么灵异事件,而是很多开发者…...

Qwen3-Embedding-0.6B快速上手:搭建本地嵌入服务的完整步骤

Qwen3-Embedding-0.6B快速上手:搭建本地嵌入服务的完整步骤 1. 引言:认识Qwen3-Embedding-0.6B 文本嵌入技术是现代AI应用的基础组件,它能将文字转化为数值向量,让计算机理解语义关系。Qwen3-Embedding-0.6B作为通义千问家族的最…...

nli-distilroberta-base行业落地:保险条款与客户告知书语义一致性自动化审查

nli-distilroberta-base行业落地:保险条款与客户告知书语义一致性自动化审查 1. 项目概述 在保险行业,条款文档与客户告知书之间的语义一致性审查一直是个耗时费力的工作。传统人工审核方式不仅效率低下,还容易因人为疏忽导致合规风险。nli…...

卡证检测矫正模型边防应用:边境地区居民证件图像离线矫正方案

卡证检测矫正模型边防应用:边境地区居民证件图像离线矫正方案 边境地区的日常工作中,处理居民身份证、护照、驾照等证件是高频且关键的业务。无论是边民登记、通关查验还是日常管理,工作人员常常需要手动拍摄或接收大量角度各异、光线不一的…...

Qwen2.5-7B-Instruct效果展示:vLLM推理加速实测,Chainlit界面流畅对话

Qwen2.5-7B-Instruct效果展示:vLLM推理加速实测,Chainlit界面流畅对话 1. 模型能力概览 Qwen2.5-7B-Instruct是通义千问团队最新推出的70亿参数指令微调语言模型,基于vLLM推理框架部署,并通过Chainlit构建了直观的对话界面。这个…...

YOLOv12官版镜像实测:交通监控多目标检测效果有多强?

YOLOv12官版镜像实测:交通监控多目标检测效果有多强? 1. 引言:为什么选择YOLOv12进行交通监控? 在现代智能交通系统中,实时准确的目标检测能力是核心需求。传统的交通监控方案往往面临以下挑战: 复杂场景…...

LeetCode 删除无效的括号:python 题解臼

这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

哔哩下载姬DownKyi:5分钟快速掌握B站视频下载的终极指南

哔哩下载姬DownKyi:5分钟快速掌握B站视频下载的终极指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&…...

告别网盘限速的终极方案:网盘直链下载助手完全指南

告别网盘限速的终极方案:网盘直链下载助手完全指南 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否曾经被网盘的龟速下载折磨得失去耐心?明明拥有百兆宽带&#…...

S2-Pro代码审查助手:自动发现潜在Bug与安全漏洞

S2-Pro代码审查助手:自动发现潜在Bug与安全漏洞 1. 引言:代码审查的痛点与解决方案 在软件开发过程中,代码审查是保证质量的重要环节。但传统的人工审查方式面临诸多挑战:耗时耗力、容易遗漏细节、标准不统一等问题。特别是当项…...

Z-Image-Turbo新手教程:无需代码,用Gradio界面轻松玩转AI绘画

Z-Image-Turbo新手教程:无需代码,用Gradio界面轻松玩转AI绘画 1. 为什么选择Z-Image-Turbo? 如果你正在寻找一个既强大又易用的AI绘画工具,Z-Image-Turbo绝对值得一试。这个由阿里巴巴通义实验室开源的高效文生图模型&#xff0…...

Git-RSCLIP模型训练全流程:从数据准备到模型评估

Git-RSCLIP模型训练全流程:从数据准备到模型评估 1. 引言 如果你对多模态AI感兴趣,想要亲手训练一个能够理解图像和文本关系的模型,那么Git-RSCLIP绝对是个不错的起点。这个基于改进CLIP架构的模型,通过对比学习让计算机学会理解…...

Youtu-VL-4B-Instruct环境部署:WSL2+Windows本地开发环境完整配置流程

Youtu-VL-4B-Instruct环境部署:WSL2Windows本地开发环境完整配置流程 想在自己的Windows电脑上跑一个能“看懂”图片、识别文字、分析图表的AI模型吗?今天,我就带你一步步在Windows系统上,通过WSL2(Windows Subsystem…...

CLIP-GmP-ViT-L-14模型服务化:使用SpringBoot构建高可用API网关

CLIP-GmP-ViT-L-14模型服务化:使用SpringBoot构建高可用API网关 想象一下这个场景:你的团队开发了一个基于CLIP-GmP-ViT-L-14的智能图像理解服务,效果非常出色。刚开始,几个同事通过命令行调用,一切顺利。但随着业务发…...

Visio图表高效转EPS:完整步骤与常见问题解析

1. Visio转EPS的必备工具与前期准备 第一次把Visio图表转成EPS格式时,我对着论文投稿系统里的格式要求发愁了半天。作为科研狗必备技能,这个转换其实比你想象的简单得多。先说说需要准备的软件组合:Visio本身(2013及以上版本更稳…...

10分钟上手:忍者像素绘卷在PyCharm中的开发与调试技巧

10分钟上手:忍者像素绘卷在PyCharm中的开发与调试技巧 1. 前言:为什么选择PyCharm开发忍者像素绘卷 忍者像素绘卷是一款基于深度学习的像素风格图像生成工具,能够根据文本描述快速生成复古游戏风格的像素画。对于Python开发者来说&#xff…...

Langchain .. 学习 --- LCEL和Runnable对

一、什么是 Q 饱和运算? 1. 核心痛点:普通运算的 “数值回绕” 普通算术运算(如 ADD/SUB)溢出时,数值会按补码规则 “回绕”,导致结果完全错误: 示例:int8_t 类型最大值 127 1 → 结…...

Mathtype公式处理难题解决:Nanbeige 4.1-3B识别图片公式并转为LaTeX

Mathtype公式处理难题解决:Nanbeige 4.1-3B识别图片公式并转为LaTeX 每次看到论文或者PDF里那些复杂的数学公式,你是不是也头疼过?想把它们弄到自己的文档里,要么得一个字一个字地敲,要么用Mathtype之类的工具慢慢点&…...

实时口罩检测-通用开源大模型部署:ModelScope Hub一键部署

实时口罩检测-通用开源大模型部署:ModelScope Hub一键部署 1. 引言:为什么你需要一个开箱即用的口罩检测工具? 想象一下,你正在开发一个智能门禁系统,需要自动识别访客是否佩戴口罩;或者你是一家商场的运…...

解放双手:3分钟快速上手智慧树自动化学习工具的完整指南

解放双手:3分钟快速上手智慧树自动化学习工具的完整指南 【免费下载链接】Autovisor 2025智慧树刷课脚本 基于Python Playwright的自动化程序 [有免安装版] 项目地址: https://gitcode.com/gh_mirrors/au/Autovisor 你是否厌倦了每天手动点击智慧树视频的重复…...

单调队列优化多重背包 学习笔记 详解斯

背景 StreamJsonRpc 是微软官方维护的用于 .NET 和 TypeScript 的 JSON-RPC 通信库,以其强大的类型安全、自动代理生成和成熟的异常处理机制著称。在 HagiCode 项目中,为了通过 ACP (Agent Communication Protocol) 与外部 AI 工具(如 iflow …...

CYBER-VISION零号协议Win11系统优化与定制指南

CYBER-VISION零号协议Win11系统优化与定制指南 每次打开电脑,看着Windows 11那个有点陌生的界面,你是不是偶尔会怀念Windows 10那种“一切尽在掌握”的感觉?尤其是那个右键菜单,想找个“刷新”或者“新建文件夹”,还得…...