IoU Loss及其改进

based on new-yolov1-pytorch project 2.4 IoU Loss IoU Loss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 IoULoss replace origin txtytwth loss 0.558 log_myYOLOWithFPNMultiPredWithIoULoss_iouweight10_yolo_160 添加中心点距离最近的target assign机制,避免按label顺序匹配gt object对应的特征点,IoULoss replace origin txtytwth loss 0.571 log_myYOLOWithFPNMultiPredWithIoULoss_iouweight10_targetassian_by_min_dist_yolo_160 GIoULoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 GIoULoss replace origin txtytwth loss 0.6674 log_myYOLOWithFPNMultiPredWithGIoULoss_SGD_iouweight1_tvgiouloss_sum_target_assign_by_min_dist_yolo_130 DIoULoss CIoULoss SIoULoss EIoULoss Luxury IoU Loss: condition mAP txtytwth_iou_weightsum_loss = txtytwth_loss + giou_loss * 1

November 11, 2024 · 1 min · 61 words · lvsolo

Anchor-free VS Anchor-based

Anchor-free VS Anchor-based 特征 Anchor-based Anchor-free 核心思想 使用预定义的锚框,回归目标的类别和边界框 无需锚框,直接回归目标位置、尺寸或关键点 目标分配 通过 IoU 匹配和锚框选择正负样本 通过中心点、角点或其他关键点进行目标分配 计算复杂度 高,尤其是多尺度、多锚框的情况下 相对较低,避免了锚框生成和匹配过程 训练难度 锚框匹配过程可能导致正负样本不平衡 训练过程更简洁,但可能对目标密集或重叠时有挑战 精度 通常较高,尤其是在多尺度和大物体检测中 通常较好,但在一些任务中(1.密集重叠;2.超大超小目标;)精度略低 适应性 需要手动设计锚框,通过统计学方法(如kemeans等)设计锚框尺寸,适应性较差 更强的适应性,尤其在目标形状、大小多样的任务中 实时性 较低,计算量较大 更高,适合实时检测任务 anchor-free + IOULoss实验中的问题 在anchor-free的YOLOV1模型中,进行IOULoss相关的实验时,发现IoULoss与xywhLoss相比,精度差非常大,IoUloss的改进形式GIoU,DIoU,CIoU几乎完全无法收敛,经过调试发现,在生成FPN对应的的GT targets时,有以下问题: 1.不同尺度的featuremap的GT targets,在hw维度squeeze成一维向量后,顺序会发生变化,在采样率较低的尺度上较为明显; 2.不同尺度中,被分配了对应特征点的gt targets数量不同,导致在有些尺度上,有些目标没有被预测,在采样率较大的尺度上较为明显; 在通常的认知中, 3.anchor-free的模型在重叠密集、特大特小尺寸的目标检测上精度会明显低于有优秀anchor设计的anchor-based模型 这三个问题的原因是什么? 1.不同尺度的featuremap的GT targets,在hw维度squeeze成一维向量后,顺序为何会发生变化 一图看懂 1 2 3 4 0 0 2 0 1 0 0 0 0 0 0 4 3 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 2+3....

November 5, 2024 · 1 min · 135 words · lvsolo

Focal Loss及其改进

based on new-yolov1-pytorch project 2.1 FocalLoss: PaperMode blog MultiHeadFPN+FocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadFPNFocalloss alpha=0.75 0.6742 eval_log/ Loss/MultiHeadFPNFocalloss alpha=0.5 0.6964 eval_log/log_myYOLOWithFPNMultiPredFocalLoss_yolo_143_new Loss/MultiHeadFPNFocalloss alpha=0.25 0.7121 eval_log/log_myYOLOWithFPNMultiPredFocalLoss_alpha0.25_yolo_154 BiFPN+FocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadBiFPNFocalLoss alpha=0.5 0.6975 eval_log/log_myYOLOWithBiFPNMultiPredFocalLoss_yolo_152 Loss/MultiHeadBiFPNFocalLoss alpha=0.25 0.7201 eval_log/log_myYOLOWithBiFPNMultiPredFocalLoss_alpha0.25_yolo_141 AugFPN+FocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadAugFPNFocalLoss alpha=0.5 0.6922 eval_log/log_myYOLOWithAugFPNMultiPredFocalLoss_yolo_143 Loss/MultiHeadAugFPNFocalLoss alpha=0.25 0.7128 eval_log/log_myYOLOWithAugFPNMultiPredFocalLoss_alpha0.25_yolo_154 2.2 PolyFocalLoss Model mAP(07test) LogFile FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 Loss/MultiHeadFPNPolyLossFL poly_scale=1 poly_pow=1 0.7182 Loss/MultiHeadFPNPolyLossFL poly_scale=1 poly_pow=2 0....

October 24, 2024 · 1 min · 102 words · lvsolo

Focal Loss在分类loss中的应用

目录: BCE与CE公式的差别 Entropy Cross Entropy 二分类交叉熵损失 Binary Cross Entropy 如果将此思路扩展到多分类 公式解释 多分类交叉熵损失 Multi-classes Cross Entropy 标准的多分类交叉熵损失 注意事项 总结 Focal Loss理解 代码实现两种CE+FocalLoss 设计实验 BCE与CE公式的差别 Entropy 一个分布中的信息熵: $$ H(p) = - \sum_{i} p_i \log(p_i) $$ Cross Entropy 两个分布的交叉熵: $$ \text{Cross-Entropy} = - \sum_{i} p_i \log(q_i) $$ 二分类交叉熵损失 Binary Cross Entropy 在二分类问题中,交叉熵损失函数同时考虑了正类和负类的预测损失。公式如下: $$ \text{Binary Cross-Entropy Loss}(y, \hat{y}) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] $$ 其中,$(1 - y) \log(1 - \hat{y})$ 是对负类(错误分类)的惩罚。...

October 14, 2024 · 4 min · 654 words · lvsolo

Paper Realization on No Anchor-based YOLO Pipeline

Code Project: yolov3-pytorch BaseLine:原代码中的初始模型 Target Assigner 1. IoU Aware OD https://readpaper.com/pdf-annotate/note?pdfId=4545076807438327809&noteId=2569501418004823040 解决问题: iou 作为重要的检测指标没有直接引导模型训练; nms操作时只考虑cls score或者conf score的问题,加入iou预测分支,与cls/conf score相乘作为联合分数作nms排序; 做法: 除了常规的cls loss和location loss之外,引入了一个iou prediction分支: 训练过程中该分支的gt是每次对模型输出进行解码得到prediction的bbox,跟真实的gt进行计算得到iou,作为iou prediction的gt; 将iou prediction输出的iou值与cls score相乘,作为nms排序时使用的分数。 2. PAA:用于anchor based模型 Probabilistic Anchor Assignment with IoU Prediction for Object Detection 沿用了[IoU Aware OD]中的IoU prediction分支,将cls score和iou prediction分支的输出相乘作为最终的score,进行GMM概率分布估计。 PAA(Probabilistic Anchor Assignment,概率锚框分配)是用于基于锚框(Anchor-based)物体检测方法中的一种优化技术,旨在提高锚框分配的准确性和效率。基于锚框的方法,如 Faster R-CNN、YOLO 和 SSD,依赖于预定义的锚框来预测目标的边界框(bounding box)。然而,传统的锚框分配策略(例如,最大重叠(IoU)分配或是固定的锚框匹配规则)可能存在一些问题,如误匹配或过度依赖于单一的评分标准。 PAA的背景与问题 在基于锚框的物体检测中,常见的做法是通过计算预测锚框与真实目标框之间的**交并比(IoU, Intersection over Union)**来进行匹配。对于每个锚框,会选择与之重叠度最高的真实框进行分配,这种策略称为硬分配(hard assignment)。 然而,这种方法有以下几个问题: 过度依赖IoU阈值:使用硬IoU阈值进行锚框分配,可能会导致误匹配或错过一些具有较低IoU但仍然能正确预测的目标。 锚框的多样性不足:一个固定的锚框策略可能无法涵盖目标物体在不同尺度、形状等方面的多样性。 负样本问题:传统方法容易将一些与真实目标无关的锚框当作负样本,导致训练时的负样本过多,从而影响学习效率。 PAA的优化思路 PAA(概率锚框分配)优化通过引入概率模型来代替传统的硬分配方式,从而提供更灵活的锚框分配方式。其核心思想是根据预测框与真实框之间的匹配度(如IoU)来概率性地分配锚框,而不是直接将锚框分配为正样本或负样本。 具体来说,PAA的优化策略如下: 基于概率的锚框分配:PAA不再使用固定的阈值来进行锚框的硬分配,而是通过计算每个锚框与目标框的匹配概率来进行软分配。这种方法能够更好地处理那些IoU值较低但仍然能够准确检测到目标的情况。 概率分配机制:对于每个锚框,PAA根据它与每个真实目标框之间的匹配程度(通常是IoU或其他匹配度度量)计算一个匹配概率,并将锚框以概率的方式分配给不同的目标。这种分配方式可以缓解传统硬分配方法中由于误匹配带来的影响。 改进的负样本处理:在传统的锚框分配中,负样本(即没有与任何目标框重叠的锚框)往往会影响模型的训练,特别是当锚框的负样本数量过多时。PAA通过对负样本的概率分配,使得负样本对模型的影响更小,从而提高了训练效率。...

October 10, 2024 · 1 min · 81 words · lvsolo

Paper Realization on No Anchor-based YOLO Pipeline

Code Project: new-YOLOv1_PyTorch BaseLine:原代码中的初始模型 改进方式一:FPN 加入FPN模块,在多个尺度的特征图上进行预测; BiFPN实现 AugFPN实现 改进方式二:Loss FocalLoss实现+应用: Focal Loss在分类loss中的应用 1.1 PolyFocalLoss 1.2 VariFocalLoss: IoULoss: IoU及其改进形式 2.1 GIoULoss 改进方式三:Attention 改进方式四:layer、算子结构优化 其他改进方式: EMA DHSA IoU Aware FCOS?ATSS?CenterNet Multi Head FPN VS BaseLine Table Based on new-YOLOv1_PyTorch 0.Baseline Model mAP(07test) LogFile BaseLine 0.6709 eval_log/log_eval_416X416_160_baseline 1.FPNs 1.1 Origin FPN Model mAP(07test) LogFile BaseLine 0.6709 eval_log/log_eval_416X416_160_baseline FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 1.2 BiFPN Model mAP(07test) LogFile BaseLine 0.6709 eval_log/log_eval_416X416_160_baseline FPN/MultiHeadFPN 0.7149 eval_log/log_eval_myYOLOWithFPNMultiPred_with_sam_for_3_head_142 FPN/MultiHeadBiFPN upsample nearest 0....

October 10, 2024 · 2 min · 287 words · lvsolo

YOLO Series

YOLOv2 对于 YOLOv1 的改进主要包括以下几个方面: Batch Normalization(批归一化):在每个卷积层后添加了批归一化,提高了模型的收敛速度,减少了对其他正则化方法的依赖,提升了模型的泛化能力,使得 mAP 提升了约 2% 。 High Resolution Classifier(高分辨率分类器):在 ImageNet 数据集上使用更高分辨率(448x448)的图片进行预训练,使得模型在检测数据集上微调之前已经适应了高分辨率输入,提升了 mAP 约 4% 。 Convolutional With Anchor Boxes(带 Anchor Boxes 的卷积):借鉴了 Faster R-CNN 的思想,引入了 Anchor Boxes,使用卷积层预测边界框,提高了目标的定位准确率 。 Dimension Clusters(维度聚类):通过 K-means 聚类自动确定 Anchor Boxes 的尺寸,使得模型更容易学习预测好的检测结果 。 Direct location prediction(直接位置预测):改进了坐标的预测方式,使得模型在预测时更加直接和准确 。 Fine-Grained Features(细粒度特征):引入了 passthrough 层来利用更精细的特征图,有助于检测小物体,提升了模型性能约 1% 。 Multi-Scale Training(多尺度训练):在训练过程中,每隔一定的迭代次数后改变模型的输入图片大小,增强了模型对不同尺寸图片的鲁棒性,提升了 mAP 。 这些改进使得 YOLOv2 在保持原有速度优势的同时,显著提高了检测精度。

September 16, 2024 · 1 min · 57 words · lvsolo

Tricks for Training

data balance/hardcase mining 1.Group Sampling CBGS,GS 2.focal loss 3.OHEM

May 16, 2024 · 1 min · 9 words · lvsolo