Yolov5-6.2 正式发布 | Yolov5 也可以训练分类模型啦,语义分割+实例分割很快到来

火山方舟向量数据库大模型

picture.image

yolov5-6.2增加了分类训练、验证、预测和导出(所有 11 种格式),还提供了 ImageNet 预训练的 YOLOv5m-cls、ResNet(18、34、50、101) 和 EfficientNet (b0-b3) 模型。

此次发布的主要目标是引入超级简单的 YOLOv5 分类工作流程,就像现有的目标检测模型一样。以下新的 v6.2 YOLOv5-cls 模型只是一个开始,作者将继续与现有的检测模型一起改进这些模型。

下一个版本 v6.3 计划于 9 月发布,将为 YOLOv5 带来官方实例分割支持,今年晚些时候将发布一个主要的 v7.0 版本,更新所有 3 个任务的架构——分类、检测和分割。

1、重要更新

分类模型:TensorFlow、Keras、TFLite、TF.js 模型导出现在使用 python export.py --include saved_model pb tflite tfjs 完全集成。

ClearML日志记录:与开源实验跟踪器 ClearML 集成。使用 pip install clearml 安装将启用集成并允许用户跟踪在 ClearML 中运行的每个训练。这反过来又允许用户跟踪和比较运行,甚至远程安排运行。

Deci.ai优化:一键自动编译和量化 YOLOv5 以获得更好的推理性能。

GPU导出基准:使用 python utils/benchmarks.py --weights yolov5s.pt --device 0 用于 GPU 基准测试或 --device cpu 用于 CPU 基准测试,对所有 YOLOv5 导出格式进行基准测试(mAP 和速度)。

训练可再现性:使用 torch>=1.12.0 的单 GPU YOLOv5 训练现在完全可再现,并且可以使用新的 --seed 参数(默认种子 = 0)。

Apple Metal Performance Shader (MPS) 支持:通过 --device mps 对 Apple M1/M2 设备的 MPS 支持(完整功能在 pytorch/pytorch#77764 中等待更新)。

2、分类模型与精度

使用 4×A100 在 ImageNet 上训练了 YOLOv5-cls 分类模型 90 个 epoch,并且训练了 ResNet 和 EfficientNet 模型以及相同的默认训练设置进行比较。将所有模型导出到 ONNX FP32 进行 CPU 速度测试,并将所有模型导出到 TensorRT FP16 进行 GPU 速度测试。在 Google Colab Pro 上进行了所有速度测试,以便轻松重现。

picture.image

picture.image

3、使用

YOLOv5 分类训练支持使用 --data 参数自动下载 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet 数据集。例如,要开始在 MNIST 上进行训练,使用 --data mnist。

train


        
          
# Single-GPU  
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128  
  
# Multi-GPU DDP  
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3  

      

val


        
          
bash data/scripts/get_imagenet.sh --val  # download ImageNet val split (6.3G, 50000 images)  
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224  # validate  

      

test


        
          
python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg  

      

4、构建形式

分类模型的构建依旧是YOLOv5的风格,加入了分类的head,这里点赞,不怕没有预训练权重了!


        
          
class ClassificationModel(BaseModel):  
    # YOLOv5 classification model  
    def \_\_init\_\_(self, cfg=None, model=None, nc=1000, cutoff=10):  # yaml, model, number of classes, cutoff index  
        super().__init__()  
        self._from_detection_model(model, nc, cutoff) if model is not None else self._from_yaml(cfg)  
  
    def \_from\_detection\_model(self, model, nc=1000, cutoff=10):  
        # Create a YOLOv5 classification model from a YOLOv5 detection model  
        if isinstance(model, DetectMultiBackend):  
            model = model.model  # unwrap DetectMultiBackend  
        model.model = model.model[:cutoff]  # backbone  
        m = model.model[-1]  # last layer  
        ch = m.conv.in_channels if hasattr(m, 'conv') else m.cv1.conv.in_channels  # ch into module  
        c = Classify(ch, nc)  # Classify()  
        c.i, c.f, c.type = m.i, m.f, 'models.common.Classify'  # index, from, type  
        model.model[-1] = c  # replace  
        self.model = model.model  
        self.stride = model.stride  
        self.save = []  
        self.nc = nc  
  
    def \_from\_yaml(self, cfg):  
        # Create a YOLOv5 classification model from a *.yaml file  
        self.model = None  

      

参考

https://github.com/ultralytics/yolov5/releases

长按扫描下方二维码添加小助手并加入交流群,群里博士大佬云集,每日讨论话题有目标检测、语义分割、超分辨率、模型部署、数学基础知识、算法面试题分享的等等内容,当然也少不了搬砖人的扯犊子

长按扫描下方二维码添加小助手。

可以一起讨论遇到的问题

picture.image

声明:转载请说明出处

扫描下方二维码关注【 集智书童 】公众号,获取更多实践项目源码和论文解读,非常期待你我的相遇,让我们以梦为马,砥砺前行!

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
vivo 容器化平台架构与核心能力建设实践
为了实现规模化降本提效的目标,vivo 确定了基于云原生理念构建容器化生态的目标。在容器化生态发展过程中,平台架构不断演进,并针对业务的痛点和诉求,持续完善容器化能力矩阵。本次演讲将会介绍 vivo 容器化平台及主要子系统的架构设计,并分享重点建设的容器化核心能力。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论