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} }

编辑推荐精选

TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多