如何用python制作五子棋游戏【第15篇,成功入职字节跳动

image-20211002071826505

虽然增加深度通常会导致性能提升 [13],但它可能会引入额外的优化困难,如图像分类 [41] 的情况。 [42]、[43] 中的研究引入了中间层的辅助分类器来提高非常深网络的收敛性。 在原始 CBNet 中,虽然复合主干是平行的,但后一个主干(例如,图 4.a 中的引导主干)通过前一个主干(例如,图 4.a 中的辅助主干)之间的相邻连接加深了网络。 为了更好地训练基于 CBNet 的检测器,我们建议通过辅助颈部和检测头的监督来生成辅助骨干的初始结果,以提供额外的正则化 。

当 K=2 时,我们的监督 CBNetV2 示例如图 4.b 所示。 除了使用前导骨干特征训练检测头 1 的原始损失外,另一个检测头 2 以辅助骨干特征作为输入,产生辅助监督。 请注意,检测头 1 和检测头 2 是权重共享的,两个脖子也是如此。 辅助监督有助于优化学习过程,而主干的原始损失承担最大的责任。 我们添加权重以平衡辅助监督,其中总损失定义为:

L = L Lead  + ∑ i = 1 K − 1 ( λ i ⋅ L Assist  i ) \mathcal{L}=\mathcal{L}_{\text {Lead }}+\sum_{i=1}^{K-1}\left(\lambda_{i} \cdot \mathcal{L}_{\text {Assist }}^{i}\right) L=LLead ​+i=1∑K−1​(λi​⋅LAssist i​)

其中 L L e a d \mathcal{L}_{Lead} LLead​ 是主干的损失, L A s s i s t \mathcal{L}_{Assist} LAssist​是辅助主干的损失, λ i λ_{i} λi​ 是第 i 个辅助主干的损失权重 。

在推理阶段,我们放弃了辅助监督分支,只利用了 CBNetV2 中主干的输出特征(图 4.b)。 因此,辅助监督不会影响推理速度。

3.4 CBNetV2 的剪枝策略


image-20211002071905919

为了降低 CBNetV2 的模型复杂度,我们探索了第 2 , 3 , . . . , K 2,3,…,K 2,3,…,Kt层主干中修剪不同阶段数量的可能性,而不是以整体方式组合主干(即,向原始主干添加相同的主干)。 为简单起见,我们在图 5 中展示了 K = 2 的情况。有五种方法可以修剪主干。 s i s_{i} si​ 表示主干中有 i 个阶段 ( { x 6 − i , x 7 − i , … , x 5 ∣ i = 0 , 1 , 2 , 3 , 4 } ) \left(\left\{x_{6-i}, x_{7-i}, \ldots, x_{5} \mid i=0,1,2,3,4\right\}\right) ({x6−i​,x7−i​,…,x5​∣i=0,1,2,3,4}),修剪后的阶段由相同阶段的特征填充 第一个骨干。 详细信息可在第 4.4.4 节中找到。

3.5 CBNetV2检测网络架构


CBNetV2 可以应用于各种现成的检测器,而无需对网络架构进行额外修改。 在实践中,我们将主干与功能网络连接起来,例如 FPN [21] 和检测头。 用于物体检测的 CBNetV2 推理阶段如图 1 所示。

4、实验

===============================================================

在本节中,我们通过大量的实验来评估我们提出的方法。在第4.1节中,我们详细介绍了实验装置。在第4.2节中,我们将我们的方法与最先进的检测方法进行比较。在第4.3节中,我们通过在不同的主干和检测器上进行实验来证明我们方法的通用性。在第4.4节中,我们进行了广泛的消融研究和分析,以调查我们框架的各个组成部分。最后,我们在第4.5节中展示了我们提出的方法的一些定性结果。

4.1 实现细节


4.1.1 数据集和评估标准

我们在 COCO [18] 基准上进行实验。 训练在 118k 训练图像上进行,并在 5k 微型图像上进行消融研究。 我们还在 test-dev 中报告了 20k 图像的结果,以与最先进的 (SOTA) 方法进行比较。 对于评估,我们采用 COCO 检测评估标准中的指标,包括不同尺度下 IoU 阈值范围从 0.5 到 0.95 的平均精度 (AP)。

4.1.2 训练和推理细节

我们的实验基于开源检测工具箱 MMDetection [48]。 对于消融研究和简单比较,如果未指定,我们在训练和推理期间将输入大小调整为 800 × 500。 我们选择以 FPN [21] 作为基线的 Faster R-CNN (ResNet50 [13])。 我们使用 SGD 优化器,初始学习率为 0.02,动量为 0.9,权重衰减为 10−4。 我们训练了 12 个 epoch 的检测器,在 epoch 8 和 11 学习率降低了 10 倍。我们仅使用随机翻转进行数据增强并将批量大小设置为 16。请注意,未突出显示的与 Swin Transformer 相关的实验专门遵循 hyper - [19] 的参数。 检测器的推理速度 FPS(每秒帧数)是在1块 V100 GPU 的机器上测量的。

为了与最先进的检测器进行比较,我们利用多尺度训练 [49](短边调整为 400 ∼ 1400,长边最多为 1600)和更长的训练计划(详细信息可以在第 4.2 节中找到 )。 在推理阶段,我们使用 SoftNMS [50],阈值为 0.001,输入大小设置为 1600 × 1400。如果未指定,本文中的所有其他超参数都遵循 MMDetection。

4.2 与最先进技术的比较


我们将我们的方法与最前沿的检测器进行比较。 我们根据在训练期间是否使用实例分割注释将结果分为对象检测(表 1)和实例分割(表 2)。 继 [19] 之后,我们通过在每个边界框头中添加四个卷积层 [54] 并使用 GIoU 损失 [55] 代替平滑来改进上述两个表中的 Cascade R-CNN、Cascade Mask RCNN 和 HTC 的检测器头 L1 [56]。

image-20210930213059452

4.2.1 物体检测

对于仅使用边界框注释训练的检测器,我们将它们归纳为两类:基于锚点 和基于无锚在表1中。我们选择ATSS [7]作为我们的无锚代表,Cascade R-CNN作为我们的基于锚点的代表 。

无锚。 配备 ATSS 的 Dual-Res2Net101-DCN 训练了 20 个时期,其中学习率在第 16 和第 19 时期衰减了 10 倍。 值得注意的是,我们的 Dual-Res2Net101-DCN 实现了 52.8% 的 AP,在单尺度下优于以前的无锚方法 [7]、[25]、[26]、[27]、[30]、[36]、[44] 测试协议。

基于锚点。 我们的 Dual-Res2Net101-DCN 实现了 55.6% 的 AP,超过了其他基于锚的检测器 [22]、[23]、[31]、[32]、[33]、[35]、[46]、[57]。 值得注意的是,我们的 CBNetV2 仅训练了 32 个 epoch(前 20 个 epoch 是常规训练,其余 12 个 epoch 使用随机权重平均训练 [58]),分别比 EfficientDet 和 YOLOv4 短 16 倍和 12 倍。

4.2.2 实例分割

image-20211002072034035

我们使用表 2 中的边界框和实例分割注释进一步将我们的方法与最先进的结果 [19]、[51]、[52]、[53] 进行比较。在 [19] 之后,我们提供了结果 在常规 ImageNet-1K 和 ImageNet-22K 上预训练的主干以展示 CBNetV2 的高容量。

常规 ImageNet-1K 预训练的结果。 遵循 [19],3x 计划(36 个时期,学习率在第 27 和 33 时期衰减 10 倍)用于 Dual-Swin-S。 使用 Cascade Mask R-CNN,我们的 Dual-Swin-S 在 COCO minival 上在边界框和实例分割方面实现了 56.3% 的 box AP 和 48.6% 的 mask AP,显示了 +4.4% box AP 和 +3.6% mask 的显着增益 具有相似模型大小和相同训练协议的 AP 到 Swin-B。 此外,Dual-Swin-S 在 COCO dev 上实现了 56.9% 的 box AP 和 49.1% 的 mask AP,性能优于其他 ImageNet-1K 预训练的基于主干的检测器。

ImageNet-22K 预训练的结果。 我们的 Dual-Swin-B 在 COCO minival 上实现了 58.4% box AP 和 50.7% mask AP 的单尺度结果,比 Swin-L (HTC++) [19] 高 1.3% box AP 和 1.2% mask AP,而 参数数量减少了 17%,训练计划减少了 3.6 倍。 特别是,仅用 12 个 epochs 训练(比 Swin-L 短 6 倍),我们的 Dual-Swin-L 在 COCO test-dev 上实现了 59.4% 的 box AP 和 51.6% 的 mask AP,优于现有技术。 我们可以通过多尺度测试将当前最好的结果推到60.1%的box AP和52.3%的mask AP的新记录。 这些结果表明,我们的 CBNetV2 提出了一个高效、有效且资源友好的框架来构建高性能骨干网络。

4.3 CBNetV2的通用性


CBNetV2 通过并行组合主干来扩展感受野,而不是简单地增加网络的深度。 为了证明我们设计策略的有效性和通用性,我们对检测器架构的各种主干和不同头部设计进行了实验。

4.3.1 主流骨干架构的通用性

image-20211002072053346

有效性为了证明 CBNetV2 的有效性,我们对具有不同主干架构的 Faster R-CNN 进行了实验。 如表 3 所示,对于基于 CNN 的主干(例如,ResNet、ResNeXt-32x4d 和 Res2Net),我们的方法可以提升 基线超过 3.4% AP。 此外,CBNetV2 不仅兼容基于 CNN 的主干,还兼容基于 Transformer 的主干(详见 4.3.2 节)。

image-20211002072127831

效率 请注意,与基线相比,CBNetV2 中的参数数量有所增加。 为了更好地展示复合架构的效率,我们将 CBNetV2 与更深、更宽的主干网络进行了比较。 如表 4 所示,在 FLOP 数量和推理速度相当的情况下,CBNetV2 分别将 ResNet101、ResNeXt101-32x4d、Res2Net101 的 AP 提高了 1.7%、2.1% 和 1.1%。 此外,DualResNeXt50-32x4d 的 AP 比 ResNeXt101-64x4d 高 1.1%,而参数数量仅为 70%。 结果表明,我们的复合骨干架构比简单地增加网络的深度和宽度更有效。

4.3.2 Swin Transformer的一般性

Transformer 以使用注意力来模拟数据中的远程依赖关系而著称,Swin Transformer [19] 是最近最具代表性的艺术之一。 具体来说,Swin Transformer 是一个通用的 Transformer 主干,它构建分层特征图,并且在图像大小上具有线性计算复杂度。 我们在 Swin Transformer 上进行实验以展示 CBNetV2 的模型通用性。 为了公平比较,我们遵循与 [19] 相同的训练策略,进行多尺度训练(短边调整为 480 ∼ 800,长边最大为 1333),AdamW 优化器(初始学习率为 0.0001,权重衰减为 0.05,批量大小为 16)和 3x 计划(36 个时期)。

image-20211002072150228

如表 5 所示,模型的精度随着 Swin Transformer 的加深和加宽而缓慢增加,并在 Swin-S 处饱和。 Swin-B 仅比 Swin-S 高 0.1% AP,但参数量增加了 38M。 在使用 Dual-Swin-T 时,我们通过改进 Swin-T 3.1% 的 box AP 和 2.5% 的 mask AP,实现了 53.6% 的 box AP 和 46.2% 的 mask AP。 令人惊讶的是,我们的 Dual-Swin-T 比更深、更宽的 Swin-B 高 1.7% 的盒 AP 和 1.2% 的掩码 AP,而模型复杂度更低(例如,FLOPs 836G vs. 975G,Params 113.8M vs. 145.0 米)。 这些结果证明 CBNetV2 也可以改进非纯卷积架构。 他们还证明了 CBNetV2 比简单地增加网络的深度和宽度更有效地推动了高性能检测器的准确度上限。

4.3.4 CBNetV2 与 Deformable Convolution 的兼容性

image-20211002072252264

可变形卷积 [59] 增强了 CNN 的变换建模能力,并广泛用于精确的目标检测器(例如,简单地添加 DCN 将 Faster R-CNN ResNet50 从 34.6% 提高到 37.4% AP)。为了展示我们的 CBNetV2 架构与可变形卷积的兼容性,我们在配备了 Faster R-CNN 的 ResNet 和 ResNeXt 上进行了实验。如表 7 所示,DCN 对 Dual-Backbone 仍然有效,AP 提高了 2.3%~2.7%。这种改进大于 ResNet152 和 ResNeXt101-64x4d 上的 2.0% AP 和 1.3% AP 增量。另一方面,DualBackbone 将 ResNet50-DCN 提高了 3.0% AP,比更深的 ResNet152-DCN 提高了 0.6%。此外,DualBackbone 使 ResNet50-32x4d-DCN 增加了 3.7% AP,即 比更深更宽的 ResNeXt101-64x4d-DCN 高 1.3%。结果表明,CBNetV2和可变形卷积的效果可以叠加,互不冲突。

image-20211002072316149

4.4 消融研究


我们为我们提出的 CBNetV2 消除了各种设计选择。 为简单起见,如果未指定,此处的所有准确度结果均在输入大小为 800 × 500 的 COCO 验证集上。

4.4.1 不同复合风格的有效性

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值