PySODEvalToolkit

PySODEvalToolkit

Python图像分割评估工具包

PySODEvalToolkit是一个Python工具包,用于评估图像灰度和二值分割算法的性能。它提供多种评估指标如MAE、F-measure和E-measure,适用于显著性目标检测和伪装目标检测等任务。该工具支持批量评估多个数据集和方法,可生成PR曲线等可视化结果,并具备多线程加速和结果导出功能。PySODEvalToolkit为研究人员提供了全面而高效的图像分割评估解决方案。

图像分割评估Python工具箱评估指标PR曲线PySODMetricsGithub开源项目

基于Python的图像灰度/二值分割评估工具箱

[中文文档](https://github.com/lartpang/PySODEvalToolkit/blob/master/./readme_zh.md

待办事项

  • 更灵活的配置脚本。
    • 使用符合matplotlib要求的yaml文件来控制绘图格式。
    • 将json替换为更灵活的配置格式,如yaml或toml。
  • 添加测试脚本。
  • 添加更详细的注释。
  • 优化导出评估结果的代码。
    • 实现将结果导出到XLSX文件的代码。
    • 优化导出到XLSX文件的代码。
    • 考虑使用CSV等文本格式是否更好?可以作为文本文件打开,也可以用Excel整理。
  • pathlib.Path替换os.path
  • 改进数据分组代码,支持CoSOD、视频二值分割等任务。
  • 支持并发策略以加快计算速度。保留多线程支持,移除之前的多进程代码。
    • 目前由于使用多线程,存在额外日志信息写入的问题,需要进一步优化。
  • 将USVOS代码分离到另一个仓库PyDavis16EvalToolbox
  • 使用更快速、准确的度量代码PySODMetrics作为评估基准。

[!tip]

  • 一些方法提供的结果名称与原始数据集的真值名称不匹配。
    • [注意] (2021-11-18) 目前已支持prefixsuffix名称,因此用户通常无需自行更改名称。
    • [可选] 提供的脚本tools/rename.py可用于批量重命名文件。请谨慎使用,以避免数据覆盖。
    • [可选] 其他工具,如Linux上的rename,Windows上的Microsoft PowerToys

特性

  • 得益于PySODMetrics,支持更丰富的度量指标。详见utils/recorders/metric_recorder.py
    • 支持评估灰度图像,如显著性目标检测(SOD)和伪装目标检测(COD)任务的预测结果。
      • MAE
      • Emeasure
      • Smeasure
      • 加权Fmeasure
      • 最大/平均/自适应Fmeasure
      • 最大/平均/自适应精确率
      • 最大/平均/自适应召回率
      • 最大/平均/自适应IoU
      • 最大/平均/自适应Dice
      • 最大/平均/自适应特异性
      • 最大/平均/自适应BER
      • Fmeasure-阈值曲线(运行eval.py时使用度量fmeasure
      • Emeasure-阈值曲线(运行eval.py时使用度量em
      • 精确率-召回率曲线(运行eval.py时使用度量precisionrecall,这与之前版本不同,因为precisionrecall的计算已从fmeasure中分离)
    • 支持评估二值图像,如常见的二值分割任务。
      • 二值Fmeasure
      • 二值精确率
      • 二值召回率
      • 二值IoU
      • 二值Dice
      • 二值特异性
      • 二值BER
  • 更丰富的功能。
    • 支持根据配置评估模型。
    • 支持根据配置和评估结果绘制PR曲线F-measure曲线E-measure曲线
    • 支持将结果导出到TXT文件。
    • 支持将结果导出到XLSX文件(2021年1月4日重新支持)。
    • 支持从生成的.npy文件导出LaTeX表格代码,并用不同颜色标记前三名方法。
    • … :>.

使用方法

安装依赖

安装所需库:pip install -r requirements.txt

度量评估基于我的另一个项目:PySODMetrics。欢迎报告错误!

配置数据集和方法预测的路径

本项目依赖json文件存储数据。./examples中提供了数据集和方法配置的示例:config_dataset_json_example.jsonconfig_method_json_example.json。您可以直接修改它们以进行后续步骤。

[!note]

  • 请注意,由于本项目依赖OpenCV读取图像,请确保路径字符串不包含非ASCII字符。
  • 确保数据集配置文件中的数据集名称方法配置文件中的数据集名称匹配。准备好json文件后,建议使用提供的tools/check_path.py检查json文件中的路径信息是否正确。
<details> <summary> 配置的更多详细信息 </summary>

示例1:数据集配置

注意,这里"image"不是必需的。实际评估只读取"mask"。

{ "LFSD": { "image": { "path": "Path_Of_RGBDSOD_Datasets/LFSD/Image", "prefix": "some_gt_prefix", "suffix": ".jpg" }, "mask": { "path": "Path_Of_RGBDSOD_Datasets/LFSD/Mask", "prefix": "some_gt_prefix", "suffix": ".png" } } }

示例2:方法配置

{ "Method1": { "PASCAL-S": { "path": "Method1路径/PASCAL-S", "prefix": "某方法前缀", "suffix": ".png" }, "ECSSD": { "path": "Method1路径/ECSSD", "prefix": "某方法前缀", "suffix": ".png" }, "HKU-IS": { "path": "Method1路径/HKU-IS", "prefix": "某方法前缀", "suffix": ".png" }, "DUT-OMRON": { "path": "Method1路径/DUT-OMRON", "prefix": "某方法前缀", "suffix": ".png" }, "DUTS-TE": { "path": "Method1路径/DUTS-TE", "suffix": ".png" } } }

这里,path表示存储图像数据的目录。prefixsuffix分别指预测图像和实际真实图像名称中公共部分之外的前缀和后缀。

在评估过程中,方法预测和数据集真实值的匹配是基于文件名的共享部分。它们的命名模式预设为[prefix]+[shared-string]+[suffix]。例如,如果有预测图像如method1_00001.jpgmethod1_00002.jpgmethod1_00003.jpg和真实图像gt_00001.pnggt_00002.pnggt_00003.png,则可以按如下方式配置:

示例3:数据集配置

{ "dataset1": { "mask": { "path": "path/Mask", "prefix": "gt_", "suffix": ".png" } } }

示例4:方法配置

{ "method1": { "dataset1": { "path": "path/dataset1", "prefix": "method1_", "suffix": ".jpg" } } }

运行评估

  • 一旦前面所有步骤正确完成,你就可以开始评估了。关于评估脚本的使用,请参考命令python eval.py --help的输出。
  • 根据你的需求添加配置选项并执行命令。如果没有异常,它将生成指定文件名的结果文件。
    • 如果没有指定所有文件,它将直接输出结果,详见eval.py的帮助信息。
    • 如果指定了--curves-npy,与绘图相关的指标信息将保存在相应的.npy文件中。
  • [可选]你可以使用tools/converter.py直接从生成的npy文件导出LaTeX表格代码。

绘制灰度图像评估的曲线

你可以使用plot.py读取.npy文件,根据需要组织并绘制指定方法和数据集的PRF-measureE-measure曲线。这个脚本的用法可以在python plot.py --help的输出中看到。根据你的要求添加配置项并执行命令。

最基本的指示是根据子图的数量合理地指定配置文件中figure.figsize项的值。

基本执行过程

这里我将以我本地configs文件夹中的RGB SOD配置为例(应根据实际情况进行必要的修改)。

# 检查配置文件 python tools/check_path.py --method-jsons configs/methods/rgb-sod/rgb_sod_methods.json --dataset-jsons configs/datasets/rgb_sod.json # 确保输出信息中没有不合理的地方后,可以用以下命令开始评估: # --dataset-json: 设置`configs/datasets/rgb_sod.json`为数据集配置文件 # --method-json: 设置`configs/methods/rgb-sod/rgb_sod_methods.json`为方法配置文件 # --metric-npy: 设置`output/rgb_sod/metrics.npy`存储npy格式的指标信息 # --curves-npy: 设置`output/rgb_sod/curves.npy`存储npy格式的曲线信息 # --record-txt: 设置`output/rgb_sod/results.txt`存储文本格式的结果信息 # --record-xlsx: 设置`output/rgb_sod/results.xlsx`存储Excel格式的结果信息 # --metric-names: 指定`fmeasure em precision recall`作为要计算的指标 # --include-methods: 指定要评估的`configs/methods/rgb-sod/rgb_sod_methods.json`中的方法 # --include-datasets: 指定要评估的`configs/datasets/rgb_sod.json`中的数据集 python eval.py --dataset-json configs/datasets/rgb_sod.json --method-json configs/methods/rgb-sod/rgb_sod_methods.json --metric-npy output/rgb_sod/metrics.npy --curves-npy output/rgb_sod/curves.npy --record-txt output/rgb_sod/results.txt --record-xlsx output/rgb_sod/results.xlsx --metric-names sm wfm mae fmeasure em precision recall --include-methods MINet_R50_2020 GateNet_2020 --include-datasets PASCAL-S ECSSD # 一旦你获得了曲线数据文件,在这个例子中是'output/rgb_sod/curves.npy'文件,你就可以开始绘图了。 # 对于一个简单的例子,执行以下命令后,结果将保存为 'output/rgb_sod/simple_curve_pr.pdf': # --style-cfg:指定样式配置文件 `examples/single_row_style.yml`,由于只有少量子图,可以直接使用单行配置。 # --num-rows:图中子图的数量。 # --curves-npys:使用曲线数据文件 `output/rgb_sod/curves.npy` 绘制图表。 # --mode:使用 `pr` 绘制 `pr` 曲线,`em` 绘制 `E-measure` 曲线,`fm` 绘制 `F-measure` 曲线。 # --save-name:只提供图像保存路径,不包括文件扩展名;代码会根据您之前在 `--style-cfg` 中指定的 `savefig.format` 添加文件扩展名。 # --alias-yaml:一个yaml文件,指定在图中使用的方法和数据集别名。 python plot.py --style-cfg examples/single_row_style.yml --num-rows 1 --curves-npys output/rgb_sod/curves.npy --mode pr --save-name output/rgb_sod/simple_curve_pr --alias-yaml configs/rgb_aliases.yaml # 更复杂的例子,执行以下命令后,结果将保存为 'output/rgb_sod/complex_curve_pr.pdf'。 # --style-cfg:指定样式配置文件 `examples/single_row_style.yml`,由于只有少量子图,可以直接使用单行配置。 # --num-rows:图中子图的数量。 # --curves-npys:使用曲线数据文件 `output/rgb_sod/curves.npy` 绘制图表。 # --our-methods:指定的方法 `MINet_R50_2020` 在图中用粗红色实线高亮显示。 # --num-col-legend:图例的列数。 # --mode:使用 `pr` 绘制 `pr` 曲线,`em` 绘制 `E-measure` 曲线,`fm` 绘制 `F-measure` 曲线。 # --separated-legend:绘制一个共享的单独图例。 # --sharey:共享y轴,只在每行的第一个图中显示刻度值。 # --save-name:只提供图像保存路径,不包括文件扩展名;代码会根据您之前在 `--style-cfg` 中指定的 `savefig.format` 添加文件扩展名。 python plot.py --style-cfg examples/single_row_style.yml --num-rows 1 --curves-npys output/rgb_sod/curves.npy --our-methods MINet_R50_2020 --num-col-legend 1 --mode pr --separated-legend --sharey --save-name output/rgb_sod/complex_curve_pr

相应结果

精确度-召回率曲线

PRCurves

F-measure曲线

fm-curves

E-measure曲线

em-curves

编程参考

相关文献

@inproceedings{Fmeasure, title={频率调谐显著区域检测}, author={Achanta, Radhakrishna and Hemami, Sheila and Estrada, Francisco and S{\"u}sstrunk, Sabine}, booktitle=CVPR, number={CONF}, pages={1597--1604}, year={2009} } @inproceedings{MAE, title={显著性过滤器:基于对比度的显著区域检测过滤}, author={Perazzi, Federico and Kr{\"a}henb{\"u}hl, Philipp and Pritch, Yael and Hornung, Alexander}, booktitle=CVPR, pages={733--740}, year={2012} } @inproceedings{Smeasure, title={结构度量:评估前景图的新方法}, author={Fan, Deng-Ping and Cheng, Ming-Ming and Liu, Yun and Li, Tao and Borji, Ali}, booktitle=ICCV, pages={4548--4557}, year={2017} } @inproceedings{Emeasure, title="增强对齐度量:二值前景图评估", author="Deng-Ping {Fan} and Cheng {Gong} and Yang {Cao} and Bo {Ren} and Ming-Ming {Cheng} and Ali {Borji}", booktitle=IJCAI, pages="698--704", year={2018} } @inproceedings{wFmeasure, title={如何评估前景图?}, author={Margolin, Ran and Zelnik-Manor, Lihi and Tal, Ayellet}, booktitle=CVPR, pages={248--255}, year={2014} }

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多