文章目录

  • 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 = 512def 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 = transformsdef 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(test time augmentation)测试时增强相关推荐

  1. 深度学习中的TTA(Test Time Augmentation)--测试时数据增强技术

    定义:TTA(Test Time Augmentation):测试时数据增强 方法:测试时将原始数据做不同形式的增强,然后取结果的平均值作为最终结果 作用:可以进一步提升最终结果的精度 原因:如果只对 ...

  2. TTA(测试时增强)

    TTA(测试时增强)test time augmentation:为原始图像造出多个不同的版本,包括不同区域裁剪和更改缩放程度,并将它们输入到模型中,然后对多个版本进行计算得到平均输出,作为图像的最终 ...

  3. 12个小技巧让你在小组讨论时游刃有余(上)

    翻译自:Twelve secret skills to make you look professional in group discussion 作者Joe Bloggs,发表于Professio ...

  4. 深度学习_深度学习基础知识_TTA(测试时增强)

    TTA(测试时增强)test time augmentation:为原始图像造出多个不同的版本,包括不同区域裁剪和更改缩放程度,并将它们输入到模型中,然后对多个版本进行计算得到平均输出,作为图像的最终 ...

  5. 12个小技巧让你在小组讨论时游刃有余(下)

    翻译自:Twelve secret skills to make you look professional in group discussion 作者Joe Bloggs,发表于Professio ...

  6. 小米手机小技巧:小米手机心率测试

    小米手机是怎么测心率?用过小米手机的米粉虽然对小米已经摸索的非常熟悉了,但还是有很多小米手机的小功能我们没有找到,比如小米手机心率测试就是其中一个. 有小伙伴突然冒出了问号,小米手机还能测心率的?很正 ...

  7. 磁盘满了怎么办?实用小技巧,做不做测试都非常好用

    ♥ 前 言 工作了多年的测试,应该多少都会遇到磁盘空间不够的情况,比方你现在正在用的测试环境,因为要测试,所以,项目一直启动,那么就会一直在写日志,如果不定期清理日志,随着时间拉长,磁盘空间就可能完全 ...

  8. 【Unity开发小技巧】iOS APP下载安装时,如果出现此时无法下载安装APP的字样时,一些解决思路

    目录 一.OS系统和IOS版本更新 ​二:App-Store方式 三:Ad-hoc方式 四:In-house 方式 五: Architecture设置错误 六:App 支持的 iOS 系统版本,和当前 ...

  9. 【LabVIEW小技巧】LabVIEW自定义系统按钮时图片项设置说明

    对于LabVIEW中的按钮控件进行自定义时,图片项中的几个图片困扰的许久,这次仔细的记录一下. 右键单击前面板上要自定义的布尔按钮控件.  从快捷菜单中选择高级--»自定义,打开控件编辑器窗口. 单击 ...

最新文章

  1. git 查看公共commit_git使用点滴:如何查看commit的内容
  2. 网站内容优化——什么样的文章可以帮助提升网站优化水平呢?
  3. Python:SMOTE算法——样本不均衡时候生成新样本的算法
  4. SAP中过账码or记账码posting code
  5. 面向对象编程设计练习题(1)
  6. mysql 5.1.x 比较 5.6.x版本的日志
  7. IIS安装与部署,站点的部署与配置
  8. matlab模拟排队论,排队论的matlab仿真(包括仿真代码)
  9. 什么是YottaChain存储,为什么说是未来数据存储的趋势?
  10. gimp图片编辑器_GIMP图像编辑器改变我生活的10种方式
  11. ppt抽奖vba代码
  12. 智能优化与机器学习结合算法实现数据预测matlab代码清单
  13. 使用TextPaint实现自由加粗字体:BoldTextView,支持中粗
  14. Proximity sensor---Px318J
  15. 低成本快速开发 LoRa 终端:从 1 到 10000
  16. vb ajax提交post,使用jQuery AJAX将JS数组传递给VB.Net post
  17. 深度学习(九) GAN 生成对抗网络 理论部分
  18. Verilog 实现占空比为3/5 2/5 1/5 50% 的五分频信号 断言SVA查看波形
  19. 连接工作站跑机器学习(Linux命令)
  20. Xftp传输文件发生错误

热门文章

  1. Error:(7, 21) java: 程序包javax.servlet不存在,Maven项目请求资源不可用
  2. 【u3d泰斗破坏神】08 --- UGUI 制作艺术字体
  3. windows server 2012 r2 standard 通过堡垒机远程桌面服务器报错Remote Desktop Service CALs Request Failed
  4. 《Activiti/Flowable  深入BPM工作流》- Activiti 与springboot 怎么进行整合?
  5. JS+COOKIES实现健壮的购物车!
  6. Golang helloWord
  7. 叠加三角形的绘制,使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形
  8. php展厅控制系统,智能展厅控制系统- 展馆智慧管理系统
  9. Android自定义优惠券解析
  10. 【数据结构】第一章绪论习题加答案