目标检测算法——YOLOv5/v7/v8改进结合涨点Trick之Wise-IoU(超越CIOU/SIOU)

news2024/9/27 12:13:25


超越CIOU/SIOU | Wise-IoU助力YOLO强势涨点!!!


论文题目:Wise-IoU: Bounding Box Regression Loss with Dynamic Focusing Mechanism

论文链接:https://arxiv.org/abs/2301.10051

近年来的研究大多假设训练数据中的示例有较高的质量,致力于强化边界框损失的拟合能力。但注意到目标检测训练集中含有低质量示例,如果一味地强化边界框对低质量示例的回归,显然会危害模型检测性能的提升。

Focal-EIoU v1 被提出以解决这个问题,但由于其聚焦机制是静态的,并未充分挖掘非单调聚焦机制的潜能。基于这个观点,作者提出了动态非单调的聚焦机制,设计了 Wise-IoU (WIoU)。动态非单调聚焦机制使用“离群度”替代 IoU 对锚框进行质量评估,并提供了明智的梯度增益分配策略。该策略在降低高质量锚框的竞争力的同时,也减小了低质量示例产生的有害梯度。这使得 WIoU 可以聚焦于普通质量的锚框,并提高检测器的整体性能。将WIoU应用于最先进的单级检测器 YOLOv7 时,在 MS-COCO 数据集上的 AP-75 从 53.03% 提升到 54.50%。

一、 Wise-IoU相关代码

import math

import torch


class 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改进|结合轻量型网络ShuffleNetV2

5.目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块

🌴 持续更新中……

🚀三、注意力机制(持续更新中)🎄🎈

1.目标检测算法——YOLOv5改进之结合CBAM注意力机制

2.目标检测算法——YOLOv7改进之结合CBAM注意力机制

3.目标检测算法——YOLOv5/YOLOv7之结合CA注意力机制

4.目标检测算法——YOLOv5/YOLOv7改进之结合ECA注意力机制

5.目标检测算法——YOLOv5/YOLOv7改进之结合NAMAttention(提升涨点)

6.目标检测算法——YOLOv5/YOLOv7改进之结合GAMAttention

7.目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)

8.目标检测算法——YOLOv5/YOLOv7改进之结合Criss-Cross Attention

9.​目标检测算法——YOLOv5/YOLOv7改进之结合​SOCA(单幅图像超分辨率)

🌴 持续更新中……

🚀四、检测头部改进(持续更新中)🎄🎈

1.魔改YOLOv5/v7高阶版(魔法搭配+创新组合)——改进之结合解耦头Decoupled_Detect

2.目标检测算法——YOLOv5/YOLOv7改进结合涨点Trick之ASFF(自适应空间特征融合)

🌴 持续更新中……

🚀五、空间金字塔池化(持续更新中)🎄🎈

1.目标检测算法——YOLOv5/YOLOv7改进之结合​ASPP(空洞空间卷积池化金字塔)

2.目标检测算法——YOLOv5/YOLOv7改进之结合特征提取网络RFBNet(涨点明显)

🌴 持续更新中……

🚀六、损失函数及NMS改进(持续更新中)🎄🎈

1.目标检测算法——YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss

2.目标检测算法——助力涨点 | YOLOv5改进结合Alpha-IoU

3.目标检测算法——YOLOv5/YOLOv7改进之结合SIoU

4.目标检测算法——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格式txt

6.目标检测算法——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

>>>一起交流!互相学习!共同进步!<<<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java实现发送邮件(定时自动发送邮件)

系列文章目录 Redis缓存穿透、击穿、雪崩问题及解决方法Spring Cache的使用–快速上手篇分页查询–Java项目实战篇全局异常处理–Java实战项目篇 该系列文章持续更新&#xff0c;更多的文章请点击我的主页查看哦&#xff01; 文章目录 目录 系列文章目录 文章目录 前言 一…

算法训练第五十七天 | 647. 回文子串、516.最长回文子序列、动态规划总结篇

动态规划part17 647. 回文子串题目描述思路暴力解法动态规划双指针法 516.最长回文子序列题目描述思路 动态规划总结篇动划基础背包问题系列打家劫舍系列股票系列子序列系列总结 647. 回文子串 题目链接&#xff1a;647. 回文子串 参考&#xff1a;https://programmercarl.com…

hot100:数组——31、33

31. 下一个排列 思路&#xff1a;其实这道题的意思就是&#xff0c;简单地说&#xff0c;就是找到一个比现有的给出的数组代表的值大的最小的数 比如给出的数组是[1,2,3]&#xff0c;它代表的数值是123&#xff0c;现有的元素组成的数值中&#xff0c;比123大的有很多&#xf…

3.6 n维随机变量

学习目标&#xff1a; 学习n维随机变量需要掌握一定的数学知识&#xff0c;包括多元微积分、线性代数和概率论等。要学习n维随机变量&#xff0c;我会采取以下步骤&#xff1a; 复习相关的数学知识&#xff1a;首先&#xff0c;我会复习多元微积分、线性代数和概率论的基本知…

OpenCV介绍与GUI特征(一)

目录0.1 OpenCV-Python教程简介OpenCVOpenCV-PythonOpenCV-Python教程OpenCV需要你!!!贡献者0.2 在Windows中安装OpenCV-Python目标从预制的二进制文件中安装OpenCV从源代码构建OpenCV练习0.3 在Ubuntu中安装OpenCV-Python目标从预制的二进制文件中安装OpenCV-Python从源码构建…

Revit怎么绘制结构梁?一键生成梁?

绘制结构梁是Revit基础的功能&#xff0c;对于不少刚接触Revit的小伙伴来说似乎还无从下手&#xff0c;今天就让小编来告诉大家在Revit中绘制结构梁的方法。 一、Revit中结构梁图文绘制过程 首先&#xff0c;我们选择“结构”选项卡中的“梁”工具&#xff0c;点击选择梁的类…

android12 displayArea学习

一&#xff1a;数据结构分析 1&#xff1a;android 12 WindowContainer 的类继承关系如下 下图为 WindowContainer 简要的对象图。 下图是 Aosp默认的display层次结构对象图。 Aosp定义的feature有如下 FEATURE_ROOT 0; FEATURE_DEFAULT_TASK_CONTAINER 1; FEATURE_WINDOW_…

DNS服务器 - 理论

DNS服务器1. 概念2. DNS域名结构3. 域名的分级4. 域名服务器5. 域名解析过程5.1 递归查询与迭代查询5.2 解析流程1. 迭代查询2. 递归查询6. 高速缓存&#xff1a;7. 加上主机缓存后的DNS解析流程8. 常见的域名解析记录9. DNS正向解析和反向解析1. 概念 DNS服务器&#xff08;D…

C++指针与其它复合类型

目录 前言&#xff1a; 1.指针与字符串 1.1cout接收char类型的地址的反应 1.2字符串字面值 1.3字符串备份 2.使用new创建动态结构 3.使用new和delete搭配存储键盘输入的字符串 前言&#xff1a; 指针我们已经知道如何使用了&#xff0c;也知道指针和数组配合起来使用&am…

DHCP及中继(UOS)

DHCP服务器 中继器 客户端 服务器 安装DHCP apt install isc-dhcp-server -y 编辑配置文件 vim /etc/dhcp/dhcpd.conf 重启服务 systemctl restart isc-dhcp-server 配置监听网卡 vim /etc/default/isc-dhcp-server 中继器 安装dhcp yum install dhcp -y nmtui 修改…

【LeetCode每日一题: 1042. 不邻接植花 | 图论 | 染色问题】

&#x1f34e;作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域新星创作者&#x1f3c6;&#xff0c;保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享&#x1f48e;&#x1f48e;&#x1f48e; &#x1f34e;座右…

Qt中调用C#制作的com组件

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 这里记录一下在 Qt 64位程序中调用 C# 制作的 com 组件的流程&#xff0c;方便后期自己回顾。 1. 了解 TLB 格式 拿到的依赖库最…

hbase进阶操作——读流程与写流程介绍

系列文章目录 centos7虚拟机下hbase的使用案例讲解 文章目录 系列文章目录 一、hbase架构原理 1.1、StoreFile 1.2、MemStore 1.3、WAL 二、hbase的写流程 2.1、写流程的流程图 2.2、写流程的流程图说明 三、hbase读流程 3.1、读流程的流程图 3.2、读流程的流程图解…

C/C++|物联网开发入门+项目实战|指针|嵌入式C语言高级|C语言内存空间的使用-学习笔记(9)

文章目录2-3 : C语言内存空间的使用指针概述示例&#xff1a;指针修饰符指针运算符示例示例1多级指针例子省略argc&#xff08;个数&#xff09;的常用写法&#xff1a;参考&#xff1a; 麦子学院-嵌入式C语言高级-内存空间2-3 : C语言内存空间的使用 指针概述 内存类型资源地…

CPU工作原理

CPU&#xff08;中央处理器&#xff09;是计算机中的重要组件&#xff0c;它负责执行计算机程序中的指令。在了解CPU的工作原理之前&#xff0c;我们需要先了解一些基本概念。 指令和指令集 指令是计算机程序中的基本单位&#xff0c;它指示计算机执行某个操作。指令集是一组…

我在“Now In Android”中学到的 9 件事

我在“Now In Android”中学到的 9 件事 Now in Android是一款功能齐全的 Android 应用程序&#xff0c;完全使用 Kotlin 和 Jetpack Compose 构建。它遵循 Android 设计和开发最佳实践&#xff0c;旨在为开发人员提供有用的参考。 https://github.com/android/nowinandroid UI…

淘宝悄悄内测“店号一体”的新模式

4月17日消息&#xff0c;淘宝近日已开始小规模测试“店号一体”新模式。新模式下&#xff0c;淘宝店铺将与逛逛、直播等账号完全打通&#xff1b;此前针对达人及内容型商家的新店铺模式“视频内容店”也同步升级。 内测商家透露&#xff0c;目前在淘宝发布的图文、短视频、直播…

腾讯学长分享的这份Java面试八股文手册,让我GitHub下载量破百万!!!

一些不满现状&#xff0c;被外界的“高薪”“好福利”吸引的人&#xff0c;一般就在这时候毅然决然地跳槽了。 跳槽是为了寻求更好的发展&#xff0c;但在跳槽前我们也不能确定下家就是更好的归宿&#xff0c;这就更加需要我们审慎地去对待&#xff0c;不能盲目跳槽。 其次&a…

知识图谱专栏简介:数据增强,智能标注,文本信息抽取(实体关系事件抽取)、知识融合算法方案、知识推理、模型优化、模型压缩技术等

知识图谱专栏简介&#xff1a;数据增强&#xff0c;智能标注&#xff0c;文本信息抽取&#xff08;实体关系事件抽取&#xff09;、知识融合算法方案、知识推理、模型优化、模型压缩技术等 专栏链接&#xff1a;NLP知识图谱相关技术业务落地方案和码源 NLP知识图谱相关技术业…

程序员跳槽薪水涨了一倍,谈谈java工程师找新工作的八大技巧

大家好&#xff0c;这几天发生了一些事情&#xff0c;我找到了一份新工作&#xff0c;明天是第一天上班。我想先谈一下我的新工作待遇&#xff0c;因为我觉得相对来说还算比较满意。接下来我想谈一下我的个人经历&#xff0c;从毕业到现在的工作经历。第三个话题是我最近半个月…