python工具方法35 实现SWA,再一次提升模型的性能_mmdetection swa-程序员宅基地

技术标签: python工具方法  

SWA是论文Averaging Weights Leads to Wider Optima and Better Generalization所提出的一种无痛涨点的方式,只需要在模型训练的最后阶段保存模型权重,然后取模型权重的平均值,就可以提升模型的权重。按照论文描述,针对不同的模型基本上可以涨一个点。论文:SWA Object Detection详细描述了实验SWA后,模型的涨点效果。

SWA的论文翻译:https://github.com/timgaripov/swa
SWA的项目地址:https://github.com/timgaripov/swa

为此,博主根据论文描述和SWA作者公布的源码,仿照ema的模型增强技术代码,重新实现了swa。这里的实现支持torch、paddle(博主亲测,tf2模型也应该是支持的,只是要修改权重加载与保存的部分)。这里的实现是针对模型权重,对于pytorch的mmdetection框架,paddle的paddledetection框架中的模型都是支持的。博主亲测,用swa提升了0.5的map。

按照swa论文所述,当模型带bn层时,swa_model中的bn层参数需要重新更新。因此,博主刻意实现了一个forward函数,用于更新bn层的参数【针对mmdetection、paddledetection等框架时无效】。

1、SWA实现

博主这里实现的SWA支持在训练过程中使用,也支持在模型训练完成后选择模型进行权重平均。
针对于用户只需要关注两个函数update和smooth_dir。update用于在训练过程中调用(在合适的epoch中[epoch数大于budget时]进行权重平均),smooth_dir用于在模型训练

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a486259/article/details/126966337

智能推荐

[号外号外]ios系统中应用webview、safari浏览器cors请求跨域不携带cookie问题解决-程序员宅基地

文章浏览阅读1.7k次。【Android党不必操心此问题】一、问题描述最近手机升级ios11,在做项目测试时,遇到微信webview和safari浏览器cors跨域情况不携带cookie。百度之后,没有找到相关解决办法,经过几天折腾终于解决。直接看问题(1)已登录,其他请求登录超时二、解决办法 (系统设置/Safari/阻止跨网站跟踪.勾掉)(1)系统设置(2)Safari(3)阻止跨网站跟踪..._ios safari 跨域

RSA key lengths-程序员宅基地

文章浏览阅读69次。RSA key lengthsFrom http://www.javamex.com/tutorials/cryptography/rsa_key_length.shtmlWhen you create an RSA key pair, you specify a key length in bits, as generally you would for other algorithms..._rsa key mod len

DVBS/S2在数字电视系统中的应用 三 (LNB介绍)-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏12次。DVBS/S2在数字电视系统中的应用 三 (LNB介绍)老谢在前面两篇文章中(例如以下)。都有提到LNB这一概念。 DVBS/S2在数字电视系统中的应用 一 (DVBS/S2接收系统Block Diagram) DVBS/S2在数字电视系统中的应用 二 (DiSEqC/SingleCable的接法) 那LNB究竟是一个什么玩意? 在这片文章中,老谢就和大家来好好..._dvb-s lnb 电源控制

GAN相关模型理论以及Pytorch实现_infogan pytorch-程序员宅基地

文章浏览阅读4.9k次,点赞7次,收藏78次。GAN相关模型理论分析以及Pytorch实现因为是从论文的内容上出发,从最粗糙慢慢走向成熟。在这样的一个过程当中学习GAN相关的内容,以及其他的深度学习的内容。体会论文作者的改进思路,提出创新的出发点,已经用到的在别的领域的成熟技巧。以此来提高自己的深度学习的能力,我想这会是一次独特的体验吧。因为我都是上传到我公众号上的,当然这篇博客也会持续更新。但是保持 公众号日更 ,以及这篇 博客周更 的速度直到后续的情况吧?所以还是推荐大家到公众号上看啦(随便帮我点点推送中的广告或者转发推送,就当做是对我的赞赏_infogan pytorch

azure kinect标定文件_KinectAzureDK编程实战_实时双 Azure Kinect 标定优化-程序员宅基地

文章浏览阅读1k次。在上篇文章中,我们实现了一个使用双 Azure Kinect 的实时重建应用。首先基于 ArUco 第三方库做关于两个 Azure Kinect 的相对姿态的标定,然后把其中一个 Azure Kinect 输出的点云转换到另一个 Azure Kinect 坐标系中,最后我们仅仅把两者的点云叠加。这是当时的效果。 最近,我在Azure Kinect 的官方开源 SDK 所在的 Github 源码中..._azure kinect dk的ros驱动支持标定吗

安装React教程-程序员宅基地

文章浏览阅读2.3k次。安装React教程_安装react

随便推点

angular基础11【表单】_angular 表单-程序员宅基地

文章浏览阅读930次。在 Angular 中,表单有两种类型,分别为模板驱动和模型驱动。_angular 表单

visual assist x 2406 和 2435,2443 原版安装下载,只要一分_visual ass 2476-程序员宅基地

文章浏览阅读4.5k次,点赞9次,收藏8次。下载地址:https://download.csdn.net/download/zdhsoft/19816256可以用everything找到VA_X.dll,替换就可以了,已经在vs2019下面通过,非飘云版。资源分,只要1分,不是动态调分了_visual ass 2476

android ota 服务器搭建,构建 OTA 软件包  |  Android 开源项目  |  Android Open Source Project...-程序员宅基地

文章浏览阅读1.2k次。您可以使用 build/make/tools/releasetools 中提供的 ota_from_target_files 工具,针对使用 A/B 系统更新或非 A/B 系统更新的设备构建完整 OTA 软件包和增量 OTA 软件包。该工具将 Android 构建系统生成的 target-files.zip 文件作为输入文件。注意:请勿使用或修改(或允许应用使用或修改)/data/ota_pack..._/data/ota_package/

Properties类简介_properties 类-程序员宅基地

文章浏览阅读1.3w次,点赞33次,收藏63次。概述Properties 继承于 Hashtable。表示一个持久的属性集,属性列表以key-value的形式存在,key和value都是字符串。Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变..._properties 类

WIFI基础入门--802.11--直接序列物理层(DSSS)--12_cs/cca-程序员宅基地

文章浏览阅读4.3k次。WIFI基础入门--802.11--直接序列物理层--15直接序列传输2.编码方式直接序列传输直接序列传输时一种不同的扩频技术,可以通过较宽的频带传送信号。直接序列技术的基本运作方式,是通过精确的控制将RF能量分散至某个宽频带。当无线电载波的变动被分散至较宽的频带时,接收器可以通过相关处理找出变动所在。窄带无线电信号经过扩频器的处理后,以数学转换公式将窄带输入信号的振幅平坦化,分布至相对较宽..._cs/cca

Chrome中的消息循环-程序员宅基地

文章浏览阅读182次。主要是自己做个学习笔记吧,我经验也不是很丰富,以前学习多线程的时候就感觉写多线程程序很麻烦。主要是线程之间要通信,要切线程,要同步,各种麻烦。我本身的工作经历决定了也没有太多的工作经验,所以chrome的messageloop可以说是我用到的第一个成熟的线程消息封装库,用的很简单,舒服。主要涉及MessageLoop和MessagePump这两个类系。以前不太清楚chrome当时在设计这两..._chrome taskloop