# mmeval
**Repository Path**: likyoo/mmeval
## Basic Information
- **Project Name**: mmeval
- **Description**: from https://github.com/open-mmlab/mmeval
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-07-24
- **Last Updated**: 2023-07-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[](https://pypi.org/project/mmeval/)
[](https://pypi.org/project/mmeval)
[](https://github.com/open-mmlab/mmeval/blob/main/LICENSE)
[](https://github.com/open-mmlab/mmeval/issues)
[](https://github.com/open-mmlab/mmeval/issues)
[📘使用文档](https://mmeval.readthedocs.io/zh_CN/latest/) |
[🛠️安装教程](https://mmeval.readthedocs.io/zh_CN/latest/get_started/installation.html) |
[🤔报告问题](https://github.com/open-mmlab/mmeval/issues/new/choose)
[English](README.md) | 简体中文
## 简介
MMEval 是一个机器学习算法评测库,提供高效准确的分布式评测以及多种机器学习框架后端支持,具有以下特点:
- 提供丰富的计算机视觉各细分方向评测指标(自然语言处理方向的评测指标正在支持中)
- 支持多种分布式通信库,实现高效准确的分布式评测。
- 支持多种机器学习框架,根据输入自动分发对应实现。
支持的分布式通信后端
| MPI4Py | torch.distributed | Horovod | paddle.distributed | oneflow.comm |
| :---------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------: |
| [MPI4PyDist](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.core.dist_backends.MPI4PyDist.html#mmeval.core.dist_backends.MPI4PyDist) | [TorchCPUDist](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.core.dist_backends.TorchCPUDist.html#mmeval.core.dist_backends.TorchCPUDist)
[TorchCUDADist](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.core.dist_backends.TorchCUDADist.html#mmeval.core.dist_backends.TorchCUDADist) | [TFHorovodDist](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.core.dist_backends.MPI4PyDist.html#mmeval.core.dist_backends.TFHorovodDist) | [PaddleDist](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.core.dist_backends.PaddleDist.html#mmeval.core.dist_backends.PaddleDist) | [OneFlowDist](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.core.dist_backends.OneFlowDist.html#mmeval.core.dist_backends.OneFlowDist) |
支持的评测指标及机器学习框架
`注:MMEval 在 PyTorch 1.6+,TensorFlow 2.4+, Paddle 2.2+ 和 OneFlow 0.8+ 测试通过。`
| 评测指标 | numpy.ndarray | torch.Tensor | tensorflow.Tensor | paddle.Tensor | oneflow.Tensor |
| :-----------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------: | :----------: | :---------------: | :-----------: | :------------: |
| [Accuracy](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.Accuracy.html#mmeval.metrics.Accuracy) | ✔ | ✔ | ✔ | ✔ | ✔ |
| [SingleLabelMetric](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.SingleLabelMetric.html#mmeval.metrics.SingleLabelMetric) | ✔ | ✔ | | | ✔ |
| [MultiLabelMetric](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.MultiLabelMetric.html#mmeval.metrics.MultiLabelMetric) | ✔ | ✔ | | | ✔ |
| [AveragePrecision](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.AveragePrecision.html#mmeval.metrics.AveragePrecision) | ✔ | ✔ | | | ✔ |
| [MeanIoU](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.MeanIoU.html#mmeval.metrics.MeanIoU) | ✔ | ✔ | ✔ | ✔ | ✔ |
| [VOCMeanAP](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.VOCMeanAP.html#mmeval.metrics.VOCMeanAP) | ✔ | | | | |
| [OIDMeanAP](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.OIDMeanAP.html#mmeval.metrics.OIDMeanAP) | ✔ | | | | |
| [COCODetection](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.COCODetection.html#mmeval.metrics.COCODetection) | ✔ | | | | |
| [ProposalRecall](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.ProposalRecall.html#mmeval.metrics.ProposalRecall) | ✔ | | | | |
| [F1Score](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.F1Score.html#mmeval.metrics.F1Score) | ✔ | ✔ | | | ✔ |
| [HmeanIoU](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.HmeanIoU.html#mmeval.metrics.HmeanIoU) | ✔ | | | | |
| [PCKAccuracy](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.PCKAccuracy.html#mmeval.metrics.PCKAccuracy) | ✔ | | | | |
| [MpiiPCKAccuracy](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.MpiiPCKAccuracy.html#mmeval.metrics.MpiiPCKAccuracy) | ✔ | | | | |
| [JhmdbPCKAccuracy](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.JhmdbPCKAccuracy.html#mmeval.metrics.JhmdbPCKAccuracy) | ✔ | | | | |
| [EndPointError](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.EndPointError.html#mmeval.metrics.EndPointError) | ✔ | ✔ | | | ✔ |
| [AVAMeanAP](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.AVAMeanAP.html#mmeval.metrics.AVAMeanAP) | ✔ | | | | |
| [StructuralSimilarity](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.StructuralSimilarity.html#mmeval.metrics.StructuralSimilarity) | ✔ | | | | |
| [SignalNoiseRatio](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.SignalNoiseRatio.html#mmeval.metrics.SignalNoiseRatio) | ✔ | | | | |
| [PeakSignalNoiseRatio](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.PeakSignalNoiseRatio.html#mmeval.metrics.PeakSignalNoiseRatio) | ✔ | | | | |
| [MeanAbsoluteError](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.MeanAbsoluteError.html#mmeval.metrics.MeanAbsoluteError) | ✔ | | | | |
| [MeanSquaredError](https://mmeval.readthedocs.io/zh_CN/latest/api/generated/mmeval.metrics.MeanSquaredError.html#mmeval.metrics.MeanSquaredError) | ✔ | | | | |
## 安装
MMEval 依赖 Python 3.6+,可以通过 pip 来安装 MMEval。安装 MMEval 的过程中会安装一些 MMEval 运行时的依赖库:
```bash
pip install mmeval
```
如果要安装 MMEval 中所有评测指标都需要的依赖,可以通过以下命令安装:
```bash
pip install 'mmeval[all]'
```
## 快速上手
MMEval 中的评测指标提供两种使用方式,以 `Accuracy` 为例:
```python
from mmeval import Accuracy
import numpy as np
accuracy = Accuracy()
```
第一种是直接调用实例化的 Accuracy 对象,计算评测指标:
```python
labels = np.asarray([0, 1, 2, 3])
preds = np.asarray([0, 2, 1, 3])
accuracy(preds, labels)
# {'top1': 0.5}
```
第二种是累积多个批次的数据后,计算评测指标:
```python
for i in range(10):
labels = np.random.randint(0, 4, size=(100, ))
predicts = np.random.randint(0, 4, size=(100, ))
accuracy.add(predicts, labels)
accuracy.compute()
# {'top1': ...}
```
## 了解更多
入门教程
- [自定义评测指标](https://mmeval.readthedocs.io/zh_CN/latest/tutorials/custom_metric.html)
- [使用分布式评测](https://mmeval.readthedocs.io/zh_CN/latest/tutorials/dist_evaluation.html)
示例
- [MMCls](https://mmeval.readthedocs.io/zh_CN/latest/examples/mmclassification.html)
- [TensorPack](https://mmeval.readthedocs.io/zh_CN/latest/examples/tensorpack.html)
- [PaddleSeg](https://mmeval.readthedocs.io/zh_CN/latest/examples/paddleseg.html)
设计
- [BaseMetric 设计](https://mmeval.readthedocs.io/zh_CN/latest/design/base_metric.html)
- [分布式通信后端](https://mmeval.readthedocs.io/zh_CN/latest/design/distributed_backend.html)
- [基于参数类型注释的多分派](https://mmeval.readthedocs.io/zh_CN/latest/design/multiple_dispatch.html)
## 未来工作规划
- 持续添加更多评测指标,扩展更多任务领域(例如:NLP,语音等)。
- 支持更多机器学习框架,探索多机器学习框架支持模式。
## 贡献指南
我们感谢所有的贡献者为改进和提升 MMEval 所作出的努力。请参考[贡献指南](CONTRIBUTING_zh-CN.md)来了解参与项目贡献的相关指引。
## 开源许可证
该项目采用 [Apache 2.0 license](LICENSE) 开源许可证。
## OpenMMLab 的其他项目
- [MMEngine](https://github.com/open-mmlab/mmengine): OpenMMLab 深度学习模型训练基础库
- [MIM](https://github.com/open-mmlab/mim): MIM 是 OpenMMLab 项目、算法、模型的统一入口
- [MMCV](https://github.com/open-mmlab/mmcv/tree/dev-2.x): OpenMMLab 计算机视觉基础库
- [MMClassification](https://github.com/open-mmlab/mmclassification/tree/dev-1.x): OpenMMLab 图像分类工具箱
- [MMDetection](https://github.com/open-mmlab/mmdetection/tree/dev-3.x): OpenMMLab 目标检测工具箱
- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d/tree/dev-1.x): OpenMMLab 新一代通用 3D 目标检测平台
- [MMRotate](https://github.com/open-mmlab/mmrotate/tree/dev-1.x): OpenMMLab 旋转框检测工具箱与测试基准
- [MMYOLO](https://github.com/open-mmlab/mmyolo): OpenMMLab YOLO 系列工具箱与测试基准
- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation/tree/dev-1.x): OpenMMLab 语义分割工具箱
- [MMOCR](https://github.com/open-mmlab/mmocr/tree/dev-1.x): OpenMMLab 全流程文字检测识别理解工具包
- [MMPose](https://github.com/open-mmlab/mmpose/tree/dev-1.x): OpenMMLab 姿态估计工具箱
- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 人体参数化模型工具箱与测试基准
- [MMSelfSup](https://github.com/open-mmlab/mmselfsup/tree/dev-1.x): OpenMMLab 自监督学习工具箱与测试基准
- [MMRazor](https://github.com/open-mmlab/mmrazor/tree/dev-1.x): OpenMMLab 模型压缩工具箱与测试基准
- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab 少样本学习工具箱与测试基准
- [MMAction2](https://github.com/open-mmlab/mmaction2/tree/dev-1.x): OpenMMLab 新一代视频理解工具箱
- [MMTracking](https://github.com/open-mmlab/mmtracking/tree/dev-1.x): OpenMMLab 一体化视频目标感知平台
- [MMFlow](https://github.com/open-mmlab/mmflow/tree/dev-1.x): OpenMMLab 光流估计工具箱与测试基准
- [MMEditing](https://github.com/open-mmlab/mmediting/tree/dev-1.x): OpenMMLab 图像视频编辑工具箱
- [MMGeneration](https://github.com/open-mmlab/mmgeneration/tree/dev-1.x): OpenMMLab 图片视频生成模型工具箱
- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab 模型部署框架
## 欢迎加入 OpenMMLab 社区
扫描下方的二维码可关注 OpenMMLab 团队的 [知乎官方账号](https://www.zhihu.com/people/openmmlab),加入 OpenMMLab 团队的 [官方交流 QQ 群](https://jq.qq.com/?_wv=1027&k=K0QI8ByU),或通过添加微信“Open小喵Lab”加入官方交流微信群。
我们会在 OpenMMLab 社区为大家
- 📢 分享 AI 框架的前沿核心技术
- 💻 解读 PyTorch 常用模块源码
- 📰 发布 OpenMMLab 的相关新闻
- 🚀 介绍 OpenMMLab 开发的前沿算法
- 🏃 获取更高效的问题答疑和意见反馈
- 🔥 提供与各行各业开发者充分交流的平台
干货满满 📘,等你来撩 💗,OpenMMLab 社区期待您的加入 👬