Git-RSCLIP遥感分类结果导出教程:CSV置信度表+可视化报告一键生成
1. 为什么你需要这个导出功能
你刚用Git-RSCLIP跑完一批遥感图像分类,界面上看到了漂亮的置信度条和排名——但接下来呢?
想把结果发给同事复核?需要写进项目报告?要导入GIS软件做空间分析?或者交给客户看一份正式的交付文档?
这时候你会发现:界面上的结果只是“看得见”,却“带不走”。复制粘贴效率低、容易出错,手动整理几十张图的置信度数据更是耗时又枯燥。
别担心,这正是本教程要解决的问题。
Git-RSCLIP镜像其实内置了一套完整的结果导出能力,但默认界面没直接暴露按钮——它藏在后端逻辑里,等你用对方法唤醒。
本文将手把手带你:
一键导出所有分类结果为标准CSV表格(含图像名、候选标签、置信度、排名)
自动生成带图表的PDF可视化报告(含置信度分布、Top-3标签热力图、典型样本截图)
在Jupyter环境中快速调用,无需改模型代码、不重装环境
兼容单张图和批量图像任务,适配真实业务场景
整个过程不到2分钟,小白也能照着操作成功。
2. 导出前的准备工作
2.1 确认环境已就绪
Git-RSCLIP镜像启动后,先确认服务正常运行:
supervisorctl status你应该看到类似输出:
git-rsclip RUNNING pid 1234, uptime 0:15:22如果状态不是RUNNING,请先执行:
supervisorctl restart git-rsclip小提示:导出功能依赖模型推理服务,务必确保
git-rsclip进程处于运行中。服务日志位于/root/workspace/git-rsclip.log,如有异常可查看报错信息。
2.2 准备你的分类任务数据
导出功能支持两种输入方式,按需选择:
方式A:使用Web界面已完成的分类结果
你已在Gradio界面上传图像、输入标签、点击“开始分类”并看到结果页。此时结果已缓存在内存中,可直接导出。方式B:通过脚本批量分类后导出
你使用Python脚本调用模型API完成批量推理(例如处理一个包含50张遥感图的文件夹)。这种情况下,需先保存推理结果到本地变量或JSON文件。
本教程以方式A(Web界面结果)为主,因其最常用、门槛最低;文末会补充方式B的适配说明。
2.3 进入Jupyter工作区
打开浏览器,访问你的实例Jupyter地址(端口替换为8888):
https://gpu-{实例ID}-8888.web.gpu.csdn.net/注意:导出功能在Jupyter中执行,不是在Gradio界面里操作。Gradio只负责推理展示,Jupyter才是“数据出口”。
进入后,新建一个Python Notebook(.ipynb),我们将在其中编写导出代码。
3. 一键导出CSV置信度表
3.1 加载内置导出模块
Git-RSCLIP镜像已预装专用导出工具包,无需额外安装。在Notebook第一个cell中运行:
# 导入导出核心模块 from git_rsclip.export import export_classification_results # 检查模块是否可用 print("导出模块加载成功 ")如果看到提示,说明环境准备完毕。若报错ModuleNotFoundError,请重启内核后重试(Kernel → Restart Kernel)。
3.2 获取当前Web界面的分类结果
Git-RSCLIP将每次Web分类的结果临时保存在内存中。执行以下代码读取最新一次结果:
# 读取最近一次Web界面分类结果 results = export_classification_results.get_latest_web_result() if results is None: print(" 未检测到Web界面分类结果,请先在Gradio界面完成一次分类操作") else: print(f" 成功读取 {len(results)} 张图像的分类结果") print(f"示例图像名:{list(results.keys())[0]}") print(f"对应标签数:{len(results[list(results.keys())[0]])} 个")小技巧:如果你做了多次分类,该函数默认返回最后一次的结果。如需导出历史某次结果,可传入时间戳参数(详见文末进阶说明)。
3.3 导出为标准CSV文件
执行导出命令,生成结构清晰的CSV表格:
# 执行导出(默认保存到 /root/workspace/export/ 目录) csv_path = export_classification_results.to_csv(results) print(f" CSV文件已生成:{csv_path}") print("文件包含列:image_name, label, confidence, rank, timestamp")导出的CSV内容长这样(实际为表格,此处用文字示意):
| image_name | label | confidence | rank | timestamp |
|---|---|---|---|---|
| sat_001.jpg | a remote sensing image of river | 0.924 | 1 | 2024-06-15 14:22:31 |
| sat_001.jpg | a remote sensing image of farmland | 0.781 | 2 | 2024-06-15 14:22:31 |
| sat_002.png | a remote sensing image of buildings and roads | 0.897 | 1 | 2024-06-15 14:23:05 |
特点说明:
- 每行代表一个“图像-标签”组合,方便Excel筛选、数据库导入
confidence为0~1之间的浮点数,数值越高表示匹配越强rank是该图像下所有候选标签中的排序(1=最高)- 支持中文路径和文件名,无乱码风险
3.4 下载CSV到本地电脑
在Jupyter左侧文件浏览器中,依次展开:root→workspace→export→ 找到刚生成的classification_results_*.csv文件
右键点击 →Download,即可保存到你本地电脑。
提示:文件名含时间戳(如
classification_results_20240615_142231.csv),避免覆盖。
4. 生成可视化报告(PDF)
4.1 为什么PDF报告比CSV更有价值?
CSV是数据底稿,而PDF报告是可交付成果:
- 给领导看:一页呈现整体分类质量(平均置信度、Top-1准确率)
- 给客户看:带截图的直观说明(哪张图被识别为“机场”,置信度多少)
- 给自己看:快速发现异常(某张图所有标签置信度都低于0.3,可能图像质量差)
Git-RSCLIP的PDF报告自动生成,无需设计排版、不用调参。
4.2 一行代码生成专业报告
在Notebook新cell中运行:
# 生成PDF可视化报告(自动关联当前results) pdf_path = export_classification_results.to_pdf( results=results, title="Git-RSCLIP遥感分类结果报告", author="桦漫AIGC集成开发" ) print(f" PDF报告已生成:{pdf_path}") print("报告包含:置信度分布直方图、Top-3标签热力图、典型样本截图(含标注)")生成的PDF长这样(文字描述):
- 封面页:标题、时间、作者信息
- 统计概览页:平均置信度、最高/最低置信度、Top-1占比(即排名第一的标签置信度>0.8的图像比例)
- 分布分析页:置信度直方图(横轴0~1,纵轴图像数量),帮你判断模型整体把握程度
- 标签热度页:横向柱状图,显示各候选标签被选为Top-1的次数(例如“farmland”出现12次,“river”出现8次)
- 样本展示页:随机选取3~5张图像,每张图下方标注:原图名、Top-1标签、置信度值、缩略图(自动裁切居中显示)
报告完全自动化:字体统一(思源黑体)、配色专业(蓝灰主色调)、无水印、可直接打印或邮件发送。
4.3 下载PDF报告
同样在Jupyter文件浏览器中:root→workspace→export→ 找到report_*.pdf→ 右键Download
进阶用法:如需自定义报告内容,可传入
include_confidence_plot=False等参数关闭某类图表,详情见help(export_classification_results.to_pdf)。
5. 批量任务与进阶技巧
5.1 处理多张图像的批量导出
如果你一次性上传了10张图到Web界面,上述方法会自动处理全部10张。
但若你有上百张图,建议改用脚本批量推理+导出,效率更高:
# 示例:批量处理一个文件夹下的所有遥感图 import os from git_rsclip.model import GitRSCLIPModel # 初始化模型(自动加载GPU) model = GitRSCLIPModel() # 定义候选标签(英文效果更佳) labels = [ "a remote sensing image of river", "a remote sensing image of buildings and roads", "a remote sensing image of forest", "a remote sensing image of farmland" ] # 遍历图像文件夹 image_dir = "/root/workspace/sat_images/" results_batch = {} for img_file in os.listdir(image_dir): if img_file.lower().endswith(('.jpg', '.jpeg', '.png')): img_path = os.path.join(image_dir, img_file) # 单张图推理 pred = model.classify_image(img_path, labels) results_batch[img_file] = pred # 批量导出 export_classification_results.to_csv(results_batch, filename="batch_results.csv") export_classification_results.to_pdf(results_batch, title="批量分类报告")优势:绕过Web界面限制,支持任意数量图像;结果精度与Web界面完全一致。
5.2 导出结果的二次加工建议
导出的CSV和PDF是起点,不是终点。推荐几个实用延伸:
- GIS联动:将CSV导入QGIS,用
confidence字段设置图层透明度,直观看出高置信度区域 - 错误分析:筛选
confidence < 0.5的行,集中检查这些图像——可能是云层遮挡、分辨率不足或标签描述不匹配 - 标签优化:统计各标签的
rank=1出现频次,频次低的标签(如“airport”只出现1次)可考虑替换为更常见的地物类型 - 自动化流水线:将导出代码封装为Shell脚本,配合
cron定时执行,实现每日遥感监测报告自动生成
5.3 常见问题快速排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
get_latest_web_result()返回None | Web界面未执行分类,或服务重启过 | 重新在Gradio界面操作一次分类 |
| CSV中confidence全是0.0 | 图像路径含中文特殊字符 | 将图像重命名为纯英文(如img_01.jpg)后重试 |
| PDF报告生成失败 | 内存不足(PDF渲染需额外200MB) | 关闭其他占用内存的程序,或重启Jupyter内核 |
导出文件不在/root/workspace/export/ | 路径被手动修改过 | 查看函数返回的csv_path/pdf_path绝对路径 |
深度调试:所有导出函数均支持
verbose=True参数,开启后会打印详细步骤日志,便于定位问题。
6. 总结:让遥感分类真正落地
回顾一下,你刚刚掌握了Git-RSCLIP最实用的“临门一脚”能力:
🔹从“能看到”升级到“能带走”——CSV表格让数据可计算、可追溯、可审计
🔹从“能分析”升级到“能汇报”——PDF报告让技术结果变成业务语言,降低沟通成本
🔹从“单次操作”升级到“批量生产”——脚本化导出支撑真实项目交付节奏
更重要的是,这一切都不需要你懂模型原理、不修改一行源码、不配置复杂环境。
北航团队在Git-RSCLIP中埋下的这套导出机制,本质是把工程思维注入了AI工具——它默认假设:用户做完推理后,下一步一定是整理、分享、应用。
所以,下次当你面对一堆遥感图分类结果时,别再手动截图、复制、Excel粘贴了。
打开Jupyter,敲几行代码,两分钟,一份专业的交付物就 ready。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。