文章目录
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,增强相关推荐

  1. Micro-Outlier Removal: 一种Kaggle快速提分的小技巧

    Micro-Outlier Removal:这个词听起来不错.但是这个术语是本文的作者首创的.所以应该找不到其他相关的资料,但是看完本篇文章你就可以了解这个词的含义. 在Kaggle 的<Tit ...

  2. idea(水槽)代码左边栏显示代码行数、方法运行图标、折叠代码块,代码块缩进提示线,idea小技巧

    找了很久才发现的.没问别摸索出来的,搜索不到帖子就自己写一个了. 单独方法块运行挺好用的. 1:代码块折叠:Idea小技巧 之 折叠代码块_我是一个小石头的博客-CSDN博客 2:代码行数显示: 显示 ...

  3. 提升Kaggle模型的实用小技巧!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 译者:张峰,Datawhale成员 如果你最近刚入手Kaggle,或者你 ...

  4. 计算机小技巧集锦 (增加你计算机的安全系数以及一些问题的解决方法)

    计算机小技巧集锦 (增加你计算机的安全系数以及一些问题的解决方法) 我们经过长期的摸索和考究,对网络的零零碎碎的安全文档进行了整理,总结出一套解决方案,具体如下: 解决方案: 一.系统安装 1. 磁盘 ...

  5. ppt给图片增加高斯模糊_PPT图片处理小技巧

    一.图片处理的类型 借用印刷的术语,我觉得PPT设计中图片的处理类型可分为三种 :角版,羽化版和挖版.角版一般是经过简单裁剪后的原始图片,羽化也很好理解,稍微有图片处理知识的应该都知道,挖版在PS中大 ...

  6. Cognos值提示设置小技巧

    针对值提示问题做一个小的总结: 1:显示类问题 如上图,如何让"英文参数名"和"分割线----"不显示,或者说指定中文显示值呢 (1):让"英文参数名 ...

  7. safari 浏览器提示添加到主屏幕_Safari浏览器的几个小技巧你掌握了吗?

    众所周知,Safari浏览器是iPhone中最好用的APP之一,功能十分丰富,而且操作十分便捷,那么Safari浏览器到底怎么使用才能更加快捷方便呢?那接下来就为大家介绍几个 Safari的实用小技巧 ...

  8. 软件测试简历投递小技巧,百分百避免已读不回,成功入职增加30%

    简历投递小技巧: 有不少小伙伴会有已读不回或者一直未读的情况,今天,分享一个投简历小技巧,关于投简历的时间: HR 一般会在上午 9 点半左右和下午 2 点打开招聘软件或者邮箱:在上午 11 点和下午 ...

  9. 网络下如何增加计算机,如何提高网速 电脑提高网速的4个实用小技巧

    对于爱看电影或打游戏的人来说,网速慢.网速卡是一件非常烦人的事情,那么要如何提高网速呢?相信很多网友都想知道,下面我们就来详细介绍一下:电脑提高网速的4个实用小技巧,希望可以给你们一些帮助和启示! 如 ...

最新文章

  1. 如何探测浏览器是否开启js功能
  2. Hadoop/Spark生态圈里的新气象
  3. NYOJ 38 布线问题
  4. 腾讯JAVA岗位四面,腾讯Java社招四面面经分享(4年java经验者)
  5. 纯属恶搞--javascript的 c#用法
  6. 如何使用schematics快速创建全新的SAP Spartacus Storefront并启用SSR
  7. 在Docker容器中的Tomcat上运行ADF Essentials
  8. OJ1013: 求两点间距离
  9. centos so查看_等保测评主机安全:CentOS密码修改周期与登录失败处理
  10. django基础 第一章 环境搭建
  11. sscms 导航调用方法
  12. python制作图表放入excel_python- xlsxwriter模块使用(拓展:Excel插入图表)
  13. Spring| Spring中的动态代理配置(aspectj-autoproxy属性介绍)
  14. 想要画漫画?掌握风格很关键!
  15. 使用weixin-java-miniapp配置进行单个小程序的配置
  16. vmware虚拟机安装win7_vmware虚拟机中安装mac Catalina10.15
  17. 数论 之 中国剩余定理(孙子定理)
  18. Quartz自动任务
  19. 简述云计算机的定义,云计算概念简述(讲解)
  20. 安装flarum的php扩展,Flarum beta9 安装

热门文章

  1. Eclipse CDT+Qemu调试Linux 0.11内核
  2. 数据分析---------指数计算
  3. SIGIR论文写作技巧
  4. 我的世界服务器如何制作武器,我的世界2B2T服务器玩家都会去做的7件事 第1件是游戏中的禁忌...
  5. arm oe linux gnueabi 系统,交叉编译移植openssl
  6. 【转】关于提示can't load package 'xxx.bpl.' 错误问题的解决方法
  7. 【千里之行,始于足下】大数据高频面试题——Hadoop篇(一)
  8. 工业互联网构筑第四次工业革命的基石
  9. 本人亲测,可以使用,万网虚拟主机绑定多个子域名方法(转载)
  10. Pandas 时间序列 - DateOffset 对象