调研汇总CV中图像分类任务常用框架优缺点对比

目录

        • 引言
        • open-mmlab/mmclassification
        • huggingface/pytorch-image-models(timm)
        • facebookresearch/pycls
        • PaddleClas
        • 写在最后

引言

  • 工作中,有时仍然需要做一些图像分类的任务,但是不同于以前打比赛时那样,只关注精度即可。工作中需要考虑模型大小、推理速度、是否有预训练模型等诸多因素。
  • 因此,需要慎重选择已有框架,这也是这篇文章的来源。
  • 整理了Gihub上开源的图像分类仓库,每一个简单给出优缺点,给到大家参考。

open-mmlab/mmclassification

  • 所属公司:商汤科技
  • MMClassification 是一款基于 PyTorch 的开源图像分类工具箱,是 OpenMMLab 项目的成员之一。
  • 目前Star具有2k。
  • 支持的backbones,参考这里
  • 优点:
    • 基于PyTorch构建,且社区积极活跃。
  • 缺点:
    • 封装过于复杂,文档不甚明朗,依赖有些乱。
    • 导出模型为ONNX较为复杂。

huggingface/pytorch-image-models(timm)

  • 所属公司:HuggingFace
  • timm是一个包含SOTA计算机视觉模型、层、实用程序、优化器、调度器、数据加载器、扩充和训练/评估脚本的库。它包装有700多种预训练的模型,设计灵活且易于使用。由于支持模型太多了,详情大家去这里查看。
  • 目前仓库Star: 24k
  • 优点:
    • 依托于HuggingFace,内有诸多模型,可方便快速使用。
  • 缺点:
    • 接口文档不太友好,对于一个新手来说,上手比较困难。(这点主要是前几天打算用这个仓库尝试做图像分类任务,发现好多接口和文档对不上,需要去看源码来对应写法)

facebookresearch/pycls

  • 所属公司:Meta
  • pycls的目标是为图像分类提供一个简单而灵活的代码库。它旨在支持研究理念的快速实施和评估。pycls还提供了大量的基线结果(model zoo)。该代码库支持高效的单机多gpu训练,由PyTorch分布式包提供支持,并提供标准模型的实现,包括ResNet、ResNeXt、EfficientNet和RegNet。
  • 目前仓库Star: 2k
  • 优点:
    • 背靠Meta
  • 缺点:
    • 这个仓库似乎快要死了,最新的提交是去年7月

PaddleClas

  • 所属公司:百度
  • 飞桨图像识别套件PaddleClas是飞桨为工业界和学术界所准备的一个图像识别和图像分类任务的工具集,助力使用者训练出更好的视觉模型和应用落地。
  • 目前Star: 4.7k
  • 优点:
    • 对新手友好,按照文档可快速上手使用
    • 有庞大的预训练模型库和垂直领域的各种模型,可谓良心。
    • 搭配PaddleOCR、Paddle2ONNX等仓库,有着很好的生态。
  • 缺点:
    • 唯一的缺点可能就是基于Paddle,也不能算是缺点。毕竟现在Paddle整个生态很好

写在最后

  • 经过上述一系列比较,最终基于PyTorch自己简单写了一个MobileNet的分类代码。‍♀️,原因是我用不到那么多的技巧和backbone,只需要用最原始的即可。

你可能感兴趣的:(深度学习,分类,深度学习,计算机视觉)