Kaggle提示:TTA(测试时间增加),小,技巧,TTAtesttimeaugmentation,增强
文章目录
1.原理简述
2.代码实现
1.原理简述
TTA:test time augmentation
顾名思义是测试时增强的意思,可将准确率提高若干个百分点,它就是测试时增强(test time augmentation, TTA)。这里会为原始图像造出多个不同版本,包括不同区域裁剪和更改缩放程度等,并将它们输入到模型中;然后对多个版本进行计算得到平均输出,作为图像的最终输出分数。
尽管有作弊的嫌疑。
但这种技术很有效,因为原始图像显示的区域可能会缺少一些重要特征,在模型中输入图像的多个版本并取平均值,能解决上述问题。
2.代码实现
这次打kaggle比赛时,是图像目标检测类的,用到了TTA,提高了LB,实现的主要API类如下:
类中函数说明:
augment:为一张图片制作TTA
batch_augment:为多张图片批量制作TTA
deaugment_boxes:将TTA预测框返回到图像的原始状态中
class BaseTTA:
image_size = 512
def augment(self, image):raise NotImplementedErrordef batch_augment(self, images):raise NotImplementedErrordef deaugment_boxes(self, boxes):raise NotImplementedError
水平翻转
class TTAHorizontalFlip(BaseTTA):
def augment(self, image):
return image.flip(1)
def batch_augment(self, images):return images.flip(2)def deaugment_boxes(self, boxes):boxes[:, [1,3]] = self.image_size - boxes[:, [3,1]]return boxes
垂直翻转
class TTAVerticalFlip(BaseTTA):
def augment(self, image):return image.flip(2)def batch_augment(self, images):return images.flip(3)def deaugment_boxes(self, boxes):boxes[:, [0,2]] = self.image_size - boxes[:, [2,0]]return boxes
旋转90°
class TTARotate90(BaseTTA):
def augment(self, image):
return torch.rot90(image, 1, (1, 2))
def batch_augment(self, images):return torch.rot90(images, 1, (2, 3))def deaugment_boxes(self, boxes):res_boxes = boxes.copy()res_boxes[:, [0,2]] = self.image_size - boxes[:, [1,3]]res_boxes[:, [1,3]] = boxes[:, [2,0]]return res_boxes
组合使用
class TTACompose(BaseTTA):
def init(self, transforms):
self.transforms = transforms
def augment(self, image):for transform in self.transforms:image = transform.augment(image)return imagedef batch_augment(self, images):for transform in self.transforms:images = transform.batch_augment(images)return imagesdef prepare_boxes(self, boxes):result_boxes = boxes.copy()result_boxes[:,0] = np.min(boxes[:, [0,2]], axis=1)result_boxes[:,2] = np.max(boxes[:, [0,2]], axis=1)result_boxes[:,1] = np.min(boxes[:, [1,3]], axis=1)result_boxes[:,3] = np.max(boxes[:, [1,3]], axis=1)return result_boxesdef deaugment_boxes(self, boxes):for transform in self.transforms[::-1]:boxes = transform.deaugment_boxes(boxes)return self.prepare_boxes(boxes)
Kaggle提示:TTA(测试时间增加),小,技巧,TTAtesttimeaugmentation,增强相关推荐
- Micro-Outlier Removal: 一种Kaggle快速提分的小技巧
Micro-Outlier Removal:这个词听起来不错.但是这个术语是本文的作者首创的.所以应该找不到其他相关的资料,但是看完本篇文章你就可以了解这个词的含义. 在Kaggle 的<Tit ...
- idea(水槽)代码左边栏显示代码行数、方法运行图标、折叠代码块,代码块缩进提示线,idea小技巧
找了很久才发现的.没问别摸索出来的,搜索不到帖子就自己写一个了. 单独方法块运行挺好用的. 1:代码块折叠:Idea小技巧 之 折叠代码块_我是一个小石头的博客-CSDN博客 2:代码行数显示: 显示 ...
- 提升Kaggle模型的实用小技巧!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 译者:张峰,Datawhale成员 如果你最近刚入手Kaggle,或者你 ...
- 计算机小技巧集锦 (增加你计算机的安全系数以及一些问题的解决方法)
计算机小技巧集锦 (增加你计算机的安全系数以及一些问题的解决方法) 我们经过长期的摸索和考究,对网络的零零碎碎的安全文档进行了整理,总结出一套解决方案,具体如下: 解决方案: 一.系统安装 1. 磁盘 ...
- ppt给图片增加高斯模糊_PPT图片处理小技巧
一.图片处理的类型 借用印刷的术语,我觉得PPT设计中图片的处理类型可分为三种 :角版,羽化版和挖版.角版一般是经过简单裁剪后的原始图片,羽化也很好理解,稍微有图片处理知识的应该都知道,挖版在PS中大 ...
- Cognos值提示设置小技巧
针对值提示问题做一个小的总结: 1:显示类问题 如上图,如何让"英文参数名"和"分割线----"不显示,或者说指定中文显示值呢 (1):让"英文参数名 ...
- safari 浏览器提示添加到主屏幕_Safari浏览器的几个小技巧你掌握了吗?
众所周知,Safari浏览器是iPhone中最好用的APP之一,功能十分丰富,而且操作十分便捷,那么Safari浏览器到底怎么使用才能更加快捷方便呢?那接下来就为大家介绍几个 Safari的实用小技巧 ...
- 软件测试简历投递小技巧,百分百避免已读不回,成功入职增加30%
简历投递小技巧: 有不少小伙伴会有已读不回或者一直未读的情况,今天,分享一个投简历小技巧,关于投简历的时间: HR 一般会在上午 9 点半左右和下午 2 点打开招聘软件或者邮箱:在上午 11 点和下午 ...
- 网络下如何增加计算机,如何提高网速 电脑提高网速的4个实用小技巧
对于爱看电影或打游戏的人来说,网速慢.网速卡是一件非常烦人的事情,那么要如何提高网速呢?相信很多网友都想知道,下面我们就来详细介绍一下:电脑提高网速的4个实用小技巧,希望可以给你们一些帮助和启示! 如 ...
最新文章
- 如何探测浏览器是否开启js功能
- Hadoop/Spark生态圈里的新气象
- NYOJ 38 布线问题
- 腾讯JAVA岗位四面,腾讯Java社招四面面经分享(4年java经验者)
- 纯属恶搞--javascript的 c#用法
- 如何使用schematics快速创建全新的SAP Spartacus Storefront并启用SSR
- 在Docker容器中的Tomcat上运行ADF Essentials
- OJ1013: 求两点间距离
- centos so查看_等保测评主机安全:CentOS密码修改周期与登录失败处理
- django基础 第一章 环境搭建
- sscms 导航调用方法
- python制作图表放入excel_python- xlsxwriter模块使用(拓展:Excel插入图表)
- Spring| Spring中的动态代理配置(aspectj-autoproxy属性介绍)
- 想要画漫画?掌握风格很关键!
- 使用weixin-java-miniapp配置进行单个小程序的配置
- vmware虚拟机安装win7_vmware虚拟机中安装mac Catalina10.15
- 数论 之 中国剩余定理(孙子定理)
- Quartz自动任务
- 简述云计算机的定义,云计算概念简述(讲解)
- 安装flarum的php扩展,Flarum beta9 安装
热门文章
- Eclipse CDT+Qemu调试Linux 0.11内核
- 数据分析---------指数计算
- SIGIR论文写作技巧
- 我的世界服务器如何制作武器,我的世界2B2T服务器玩家都会去做的7件事 第1件是游戏中的禁忌...
- arm oe linux gnueabi 系统,交叉编译移植openssl
- 【转】关于提示can't load package 'xxx.bpl.' 错误问题的解决方法
- 【千里之行,始于足下】大数据高频面试题——Hadoop篇(一)
- 工业互联网构筑第四次工业革命的基石
- 本人亲测,可以使用,万网虚拟主机绑定多个子域名方法(转载)
- Pandas 时间序列 - DateOffset 对象