OpenMMLab是深度学习视觉算法开源平台,是目前最大最全的开源深度学习视觉算法库,为学术和产业界提供一个可跨方向、结构精良、易复现的统一算法工具库。与NLP领域的HuggingFace类似,我们可以将OpenMMLab理解为CV领域的HuggingFace。
OpenMMLab 已经累计开源了超过 30 个算法库,涵盖分类、检测、分割、视频理解等众多研究领域,拥有超过 300 种算法、2,400 多个预训练模型。在 GitHub 上获得超过 72,000 个标星,同时吸引了超过 1,500 名社区开发者参与项目贡献,用户遍及超过 110 个国家和地区,覆盖全国全球顶尖高校、研究机构和企业。
图像分类
图像分类的名字是MMClassification,但是实际的项目是MMPretrain,可以实现图像分类、图像描述、视觉问答、视觉定位、图像检索(ReID)等功能,收录77个算法共508个预训练模型。典型的算法有:ResNet、EfficientNet、ViT、Swin-Transformer、ConvNeXt等。实际上,在这个项目里,还包括现在比较火热的自监督学习MMSelfsup项目的内容。
物体检测
物体检测分为2D目标检测、3D目标检测、旋转目标检测。
2D物体检测
目前有两个独立的子项目:MMDetection、MMYolo。MMDetection推出效早,实现的算法较丰富,但是至少对Yolo系列算法而言,比较老旧。MMYolo推出较新,仅支持Yolo系列。对于初学者来说,不是太好选择。以我为例,我最终选择了MMYolo中的RTMDet来做目标检测和实例分割。
3D物体检测
MMDetection3D项目主要包括单摄像头、多摄像头、激光雷达点云处理中的3D物体检测和语义分割,偏重于基于点云的检测和分割,如果对点云处理感兴趣,还可以参考OpenPCDet项目。这一块比较遗憾的是没有包括目前在自动驾驶领域比较火爆的BEV类算法,如BEVFormer、MapTR等,希望后面能够添加这方面的内容。
旋转目标检测
MMRotate是针对旋转目标的检测,对于无人机画面的物体检测,检测是否系安全带等情况,使用旋转框进行检测可以更精准的检测出物体,虽然我在Yolo系列算法应用中,针对司机安全带检测,开发了旋转目标检测的功能,但是我在新项目中,还是会使用这个项目,因为他实现的比我的方法要更优雅。
语义分割
MMSegmentation用于实现语义分割,可以实现医疗影像分割,卫星遥感分析,街景分割等(给像素进行分类)。
图像生成
MMMagic是基于GAN的图像生成模型,计算机底层视觉和AIGC算法库,可以实现超分辨率、视频插帧、照片上色、图像填充等功能。比较遗憾的是没有集成Stable Diffusion算法。
关键点检测
关键点检测又叫姿态估计,包括MMPose和MMHuman3D。MMPose用于人脸、人体、动物、服装等检测,MMHuman3D用于人体姿态估计,如运动捕捉、虚拟现实。
动作识别
MMAction2来实现视频动作识别算法库(描述视频动作),进行行为识别、时序动作检测、时空动作检测。
目标跟踪
MMTracking实现单目标和多目标跟踪,可以绘制目标移动轨迹。可以用于无人机、人流量、动物跟踪等领域。比较遗憾的是算法相对较老,较新的算法像ByteTrack等,还没有集成进来。
算法部署
MMDeploy用来将训练好的算法部署到实际的AI硬件上去,通常转为Onnx然后再转为对应平台的离线模型,可以支持市面上主流的AI硬件平台。这一块是之前OpenMMLab比较欠缺的,目前已经补齐了这个短板。不过,像MMYolo项目,目前还是提供了自己的EasyDeploy,用于进行部署,各个项目对MMDeploy的支持程度,还需要进一步加强。
总结
OpenMMLab收集了深度学习CV领域典型算法,可以实现各个模块的个性化替换,如换Backbone等,对于做研究出论文非常方便,同时因为集成了主流算法,可以节省开发团队做各种算法复现和比较择优的工作,是一个比较好的平台,称为CV领域的HuggingFace也不为过。