位置: IT常识 - 正文
推荐整理分享目标检测算法——YOLOv5/v7/v8改进结合涨点Trick之Wise-IoU(超越CIOU/SIOU)(运动目标检测算法),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:目标检测算法的主要目的是找到图像中用户感兴趣的,目标检测算法排名,最快的目标检测算法,最新目标检测算法,目标检测算法的主要目的是找到图像中用户感兴趣的,SSD目标检测算法,目标检测算法有哪些,目标检测算法的主要目的是找到图像中用户感兴趣的,内容如对您有帮助,希望把文章链接给更多的朋友!
近年来的研究大多假设训练数据中的示例有较高的质量,致力于强化边界框损失的拟合能力。但注意到目标检测训练集中含有低质量示例,如果一味地强化边界框对低质量示例的回归,显然会危害模型检测性能的提升。
Focal-EIoU v1 被提出以解决这个问题,但由于其聚焦机制是静态的,并未充分挖掘非单调聚焦机制的潜能。基于这个观点,作者提出了动态非单调的聚焦机制,设计了 Wise-IoU (WIoU)。动态非单调聚焦机制使用“离群度”替代 IoU 对锚框进行质量评估,并提供了明智的梯度增益分配策略。该策略在降低高质量锚框的竞争力的同时,也减小了低质量示例产生的有害梯度。这使得 WIoU 可以聚焦于普通质量的锚框,并提高检测器的整体性能。将WIoU应用于最先进的单级检测器 YOLOv7 时,在 MS-COCO 数据集上的 AP-75 从 53.03% 提升到 54.50%。
一、 Wise-IoU相关代码import mathimport torchclass IoU_Cal: ''' pred, target: x0,y0,x1,y1 monotonous: { None: origin True: monotonic FM False: non-monotonic FM } momentum: The momentum of running mean (This can be set by the function <momentum_estimation>)''' iou_mean = 1. monotonous = False momentum = 1 - pow(0.05, 1 / (890 * 34)) _is_train = True @classmethod def momentum_estimation(cls, n, t): ''' n: Number of batches per training epoch t: The epoch when mAP's ascension slowed significantly''' time_to_real = n * t cls.momentum = 1 - pow(0.05, 1 / time_to_real) return cls.momentum def __init__(self, pred, target): self.pred, self.target = pred, target self._fget = { # x,y,w,h 'pred_xy': lambda: (self.pred[..., :2] + self.pred[..., 2: 4]) / 2, 'pred_wh': lambda: self.pred[..., 2: 4] - self.pred[..., :2], 'target_xy': lambda: (self.target[..., :2] + self.target[..., 2: 4]) / 2, 'target_wh': lambda: self.target[..., 2: 4] - self.target[..., :2], # x0,y0,x1,y1 'min_coord': lambda: torch.minimum(self.pred[..., :4], self.target[..., :4]), 'max_coord': lambda: torch.maximum(self.pred[..., :4], self.target[..., :4]), # The overlapping region 'wh_inter': lambda: torch.relu(self.min_coord[..., 2: 4] - self.max_coord[..., :2]), 's_inter': lambda: torch.prod(self.wh_inter, dim=-1), # The area covered 's_union': lambda: torch.prod(self.pred_wh, dim=-1) + torch.prod(self.target_wh, dim=-1) - self.s_inter, # The smallest enclosing box 'wh_box': lambda: self.max_coord[..., 2: 4] - self.min_coord[..., :2], 's_box': lambda: torch.prod(self.wh_box, dim=-1), 'l2_box': lambda: torch.square(self.wh_box).sum(dim=-1), # The central points' connection of the bounding boxes 'd_center': lambda: self.pred_xy - self.target_xy, 'l2_center': lambda: torch.square(self.d_center).sum(dim=-1), # IoU 'iou': lambda: 1 - self.s_inter / self.s_union } self._update(self) def __setitem__(self, key, value): self._fget[key] = value def __getattr__(self, item): if callable(self._fget[item]): self._fget[item] = self._fget[item]() return self._fget[item] @classmethod def train(cls): cls._is_train = True @classmethod def eval(cls): cls._is_train = False @classmethod def _update(cls, self): if cls._is_train: cls.iou_mean = (1 - cls.momentum) * cls.iou_mean + \ cls.momentum * self.iou.detach().mean().item() def _scaled_loss(self, loss, alpha=1.9, delta=3): if isinstance(self.monotonous, bool): beta = self.iou.detach() / self.iou_mean if self.monotonous: loss *= beta.sqrt() else: divisor = delta * torch.pow(alpha, beta - delta) loss *= beta / divisor return loss @classmethod def IoU(cls, pred, target, self=None): self = self if self else cls(pred, target) return self.iou @classmethod def WIoU(cls, pred, target, self=None): self = self if self else cls(pred, target) dist = torch.exp(self.l2_center / self.l2_box.detach()) return self._scaled_loss(dist * self.iou) @classmethod def EIoU(cls, pred, target, self=None): self = self if self else cls(pred, target) penalty = self.l2_center / self.l2_box.detach() \ + torch.square(self.d_center / self.wh_box).sum(dim=-1) return self._scaled_loss(self.iou + penalty) @classmethod def GIoU(cls, pred, target, self=None): self = self if self else cls(pred, target) return self._scaled_loss(self.iou + (self.s_box - self.s_union) / self.s_box) @classmethod def DIoU(cls, pred, target, self=None): self = self if self else cls(pred, target) return self._scaled_loss(self.iou + self.l2_center / self.l2_box) @classmethod def CIoU(cls, pred, target, eps=1e-4, self=None): self = self if self else cls(pred, target) v = 4 / math.pi ** 2 * \ (torch.atan(self.pred_wh[..., 0] / (self.pred_wh[..., 1] + eps)) - torch.atan(self.target_wh[..., 0] / (self.target_wh[..., 1] + eps))) ** 2 alpha = v / (self.iou + v) return self._scaled_loss(self.iou + self.l2_center / self.l2_box + alpha.detach() * v) @classmethod def SIoU(cls, pred, target, theta=4, self=None): self = self if self else cls(pred, target) # Angle Cost angle = torch.arcsin(torch.abs(self.d_center).min(dim=-1)[0] / (self.l2_center.sqrt() + 1e-4)) angle = torch.sin(2 * angle) - 2 # Dist Cost dist = angle[..., None] * torch.square(self.d_center / self.wh_box) dist = 2 - torch.exp(dist[..., 0]) - torch.exp(dist[..., 1]) # Shape Cost d_shape = torch.abs(self.pred_wh - self.target_wh) big_shape = torch.maximum(self.pred_wh, self.target_wh) w_shape = 1 - torch.exp(- d_shape[..., 0] / big_shape[..., 0]) h_shape = 1 - torch.exp(- d_shape[..., 1] / big_shape[..., 1]) shape = w_shape ** theta + h_shape ** theta return self._scaled_loss(self.iou + (dist + shape) / 2)二、实验对比结果
🚀🏆🍀【算法创新&算法训练&论文投稿】相关链接👇👇👇✨【YOLO创新算法尝新系列】✨🏂 美团出品 | YOLOv6 v3.0 is Coming(超越YOLOv7、v8)🏂 官方正品 | Ultralytics YOLOv8算法来啦(尖端SOTA模型)🏂 改进YOLOv5/YOLOv7——魔改YOLOv5/YOLOv7提升检测精度(涨点必备)————————————🌴【重磅干货来袭】🎄————————————🚀一、主干网络改进(持续更新中)🎄🎈1.目标检测算法——YOLOv5/YOLOv7改进之结合ConvNeXt结构(纯卷积|超越Swin)2.目标检测算法——YOLOv5/YOLOv7改进之结合MobileOne结构(高性能骨干|仅需1ms)3.目标检测算法——YOLOv5/YOLOv7改进之结合Swin Transformer V2(涨点神器)4.目标检测算法——YOLOv5/YOLOv7改进结合BotNet(Transformer)5.目标检测算法——YOLOv5/YOLOv7改进之GSConv+Slim Neck(优化成本)6.目标检测算法——YOLOv5/YOLOv7改进结合新神经网络算子Involution(CVPR 2021)7.目标检测算法——YOLOv7改进|增加小目标检测层8.目标检测算法——YOLOv5改进|增加小目标检测层🌴 持续更新中……🚀二、轻量化网络(持续更新中)🎄🎈1.目标检测算法——YOLOv5/YOLOv7改进之结合RepVGG(速度飙升)2.目标检测算法——YOLOv5/YOLOv7改进之结合PP-LCNet(轻量级CPU网络)3.目标检测算法——YOLOv5/YOLOv7改进之结合轻量化网络MobileNetV3(降参提速)4.目标检测算法——YOLOv5/YOLOv7改进|结合轻量型网络ShuffleNetV25.目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块🌴 持续更新中……🚀三、注意力机制(持续更新中)🎄🎈1.目标检测算法——YOLOv5改进之结合CBAM注意力机制2.目标检测算法——YOLOv7改进之结合CBAM注意力机制3.目标检测算法——YOLOv5/YOLOv7之结合CA注意力机制4.目标检测算法——YOLOv5/YOLOv7改进之结合ECA注意力机制5.目标检测算法——YOLOv5/YOLOv7改进之结合NAMAttention(提升涨点)6.目标检测算法——YOLOv5/YOLOv7改进之结合GAMAttention7.目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)8.目标检测算法——YOLOv5/YOLOv7改进之结合Criss-Cross Attention9.目标检测算法——YOLOv5/YOLOv7改进之结合SOCA(单幅图像超分辨率)🌴 持续更新中……🚀四、检测头部改进(持续更新中)🎄🎈1.魔改YOLOv5/v7高阶版(魔法搭配+创新组合)——改进之结合解耦头Decoupled_Detect2.目标检测算法——YOLOv5/YOLOv7改进结合涨点Trick之ASFF(自适应空间特征融合)🌴 持续更新中……🚀五、空间金字塔池化(持续更新中)🎄🎈1.目标检测算法——YOLOv5/YOLOv7改进之结合ASPP(空洞空间卷积池化金字塔)2.目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)🌴 持续更新中……🚀六、损失函数及NMS改进(持续更新中)🎄🎈1.目标检测算法——YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss2.目标检测算法——助力涨点 | YOLOv5改进结合Alpha-IoU3.目标检测算法——YOLOv5/YOLOv7改进之结合SIoU4.目标检测算法——YOLOv5将NMS替换为DIoU-NMS🌴 持续更新中……🚀七、其他创新改进项目(持续更新中)🎄🎈1.手把手教你搭建属于自己的PyQt5-YOLOv5目标检测平台(保姆级教程)2.YOLO算法改进之结合GradCAM可视化热力图(附详细教程)3.目标检测算法——YOLOv5/YOLOv7改进之结合SPD-Conv(低分辨率图像和小目标涨点明显)4.目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数5.目标检测算法——YOLOv5/YOLOv7改进之结合BiFPN🌴 持续更新中……🚀八、算法训练相关项目(持续更新中)🎄🎈1.目标检测算法——YOLOv7训练自己的数据集(保姆级教程)2.人工智能前沿——玩转OpenAI语音机器人ChatGPT(中文版)3.深度学习之语义分割算法(入门学习)4.知识经验分享——YOLOv5-6.0训练出错及解决方法(RuntimeError)5.目标检测算法——将xml格式转换为YOLOv5格式txt6.目标检测算法——YOLOv5/YOLOv7如何改变bbox检测框的粗细大小7.人工智能前沿——6款AI绘画生成工具8.YOLOv5结合人体姿态估计9.超越YOLOv5,0.7M超轻量,又好又快(PP-YOLOE&PP-PicoDet)10.目标检测算法——收藏|小目标检测的定义(一)11.目标检测算法——收藏|小目标检测难点分析(二)12.目标检测算法——收藏|小目标检测解决方案(三)🌴 持续更新中……🚀九、数据资源相关项目(持续更新中)🎄🎈1.目标检测算法——小目标检测相关数据集(附下载链接)2.目标检测算法——3D公共数据集汇总(附下载链接)3.目标检测算法——3D公共数据集汇总 2(附下载链接)4.目标检测算法——行人检测&人群计数数据集汇总(附下载链接)5.目标检测算法——遥感影像数据集资源汇总(附下载链接)6.目标检测算法——自动驾驶开源数据集汇总(附下载链接)7.目标检测算法——自动驾驶开源数据集汇总 2(附下载链接)8.目标检测算法——图像分类开源数据集汇总(附下载链接)9.目标检测算法——医学图像开源数据集汇总(附下载链接)10.目标检测算法——工业缺陷数据集汇总1(附下载链接)11.目标检测算法——工业缺陷数据集汇总2(附下载链接)12.目标检测算法——垃圾分类数据集汇总(附下载链接)13.目标检测算法——人脸识别数据集汇总(附下载链接)14.目标检测算法——安全帽识别数据集(附下载链接)15.目标检测算法——人体姿态估计数据集汇总(附下载链接)16.目标检测算法——人体姿态估计数据集汇总 2(附下载链接)17.目标检测算法——车辆牌照识别数据集汇总(附下载链接)18.目标检测算法——车辆牌照识别数据集汇总 2(附下载链接)19.收藏 | 机器学习公共数据集集锦(附下载链接)20.目标检测算法——图像分割数据集汇总(附下载链接)21.目标检测算法——图像分割数据集汇总 2(附下载链接)22.收藏 | 自然语言处理(NLP)数据集汇总(附下载链接)23.自然语言处理(NLP)数据集汇总 2(附下载链接)24.自然语言处理(NLP)数据集汇总 3(附下载链接)25.自然语言处理(NLP)数据集汇总 4(附下载链接)26.目标检测算法——关键点检测数据集汇总(附下载链接)27.目标检测算法——图像去雾开源数据集汇总(速速收藏)🌴 持续更新中……🚀十、论文投稿相关项目(持续更新中)🎄🎈1.论文投稿指南——收藏|SCI论文投稿注意事项(提高命中率)2.论文投稿指南——收藏|SCI论文怎么投?(Accepted)3.论文投稿指南——收藏|SCI写作投稿发表全流程4.论文投稿指南——收藏|如何选择SCI期刊(含选刊必备神器)5.论文投稿指南——SCI选刊6.论文投稿指南——SCI投稿各阶段邮件模板7.人工智能前沿——深度学习热门领域(确定选题及研究方向)8.人工智能前沿——2022年最流行的十大AI技术9.人工智能前沿——未来AI技术的五大应用领域10.人工智能前沿——无人自动驾驶技术11.人工智能前沿——AI技术在医疗领域的应用12.人工智能前沿——随需应变的未来大脑13.目标检测算法——深度学习知识简要普及14.目标检测算法——10种深度学习框架介绍15.目标检测算法——为什么我选择PyTorch?16.知识经验分享——超全激活函数解析(数学原理+优缺点)17.知识经验分享——卷积神经网络(CNN)18.海带软件分享——Office 2021全家桶安装教程(附报错解决方法)19.海带软件分享——日常办公学习软件分享(收藏)20.论文投稿指南——计算机视觉 (Computer Vision) 顶会归纳21.论文投稿指南——中文核心期刊22.论文投稿指南——计算机领域核心期刊23.论文投稿指南——中文核心期刊推荐(计算机技术)24.论文投稿指南——中文核心期刊推荐(计算机技术2)25.论文投稿指南——中文核心期刊推荐(计算机技术3)26.论文投稿指南——中文核心期刊推荐(电子、通信技术)27.论文投稿指南——中文核心期刊推荐(电子、通信技术2)28.论文投稿指南——中文核心期刊推荐(电子、通信技术3)29.论文投稿指南——中文核心期刊推荐(机械、仪表工业)30.论文投稿指南——中文核心期刊推荐(机械、仪表工业2)31.论文投稿指南——中文核心期刊推荐(机械、仪表工业3)32.论文投稿指南——中国(中文EI)期刊推荐(第1期)33.论文投稿指南——中国(中文EI)期刊推荐(第2期)34.论文投稿指南——中国(中文EI)期刊推荐(第3期)35.论文投稿指南——中国(中文EI)期刊推荐(第4期)36.论文投稿指南——中国(中文EI)期刊推荐(第5期)37.论文投稿指南——中国(中文EI)期刊推荐(第6期)38.论文投稿指南——中国(中文EI)期刊推荐(第7期)39.论文投稿指南——中国(中文EI)期刊推荐(第8期)40.【1】SCI易中期刊推荐——计算机方向(中科院3区)41.【2】SCI易中期刊推荐——遥感图像领域(中科院2区)42.【3】SCI易中期刊推荐——人工智能领域(中科院1区)43.【4】SCI易中期刊推荐——神经科学研究(中科院4区)44.【5】SCI易中期刊推荐——计算机科学(中科院2区)45.【6】SCI易中期刊推荐——人工智能&神经科学&机器人学(中科院3区)46.【7】SCI易中期刊推荐——计算机 | 人工智能(中科院4区)47.【8】SCI易中期刊推荐——图像处理领域(中科院4区)48.【9】SCI易中期刊推荐——工程技术-计算机:软件工程(中科院4区)49.【10】SCI易中期刊推荐——工程技术-计算机:人工智能(中科院2区)50.【11】SCI易中期刊推荐——计算机方向(中科院4区)51.【12】SCI易中期刊推荐——计算机信息系统(中科院4区)🌴 持续更新中……关于YOLO算法改进&论文投稿可关注并留言博主的CSDN/QQ>>>一起交流!互相学习!共同进步!<<<上一篇:MNIST数据集下载+idx3-ubyte解析【超详细+上手简单】(mnist数据集下载码)
友情链接: 武汉网站建设