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小说写作助手,一站式润色、改写、扩写

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

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

问小白

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

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

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

Transly

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

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

讯飞智文

讯飞智文

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

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

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

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多