Kaggle小技巧:TTA(test time augmentation)测试时增强
文章目录
- 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)测试时增强相关推荐
- 深度学习中的TTA(Test Time Augmentation)--测试时数据增强技术
定义:TTA(Test Time Augmentation):测试时数据增强 方法:测试时将原始数据做不同形式的增强,然后取结果的平均值作为最终结果 作用:可以进一步提升最终结果的精度 原因:如果只对 ...
- TTA(测试时增强)
TTA(测试时增强)test time augmentation:为原始图像造出多个不同的版本,包括不同区域裁剪和更改缩放程度,并将它们输入到模型中,然后对多个版本进行计算得到平均输出,作为图像的最终 ...
- 12个小技巧让你在小组讨论时游刃有余(上)
翻译自:Twelve secret skills to make you look professional in group discussion 作者Joe Bloggs,发表于Professio ...
- 深度学习_深度学习基础知识_TTA(测试时增强)
TTA(测试时增强)test time augmentation:为原始图像造出多个不同的版本,包括不同区域裁剪和更改缩放程度,并将它们输入到模型中,然后对多个版本进行计算得到平均输出,作为图像的最终 ...
- 12个小技巧让你在小组讨论时游刃有余(下)
翻译自:Twelve secret skills to make you look professional in group discussion 作者Joe Bloggs,发表于Professio ...
- 小米手机小技巧:小米手机心率测试
小米手机是怎么测心率?用过小米手机的米粉虽然对小米已经摸索的非常熟悉了,但还是有很多小米手机的小功能我们没有找到,比如小米手机心率测试就是其中一个. 有小伙伴突然冒出了问号,小米手机还能测心率的?很正 ...
- 磁盘满了怎么办?实用小技巧,做不做测试都非常好用
♥ 前 言 工作了多年的测试,应该多少都会遇到磁盘空间不够的情况,比方你现在正在用的测试环境,因为要测试,所以,项目一直启动,那么就会一直在写日志,如果不定期清理日志,随着时间拉长,磁盘空间就可能完全 ...
- 【Unity开发小技巧】iOS APP下载安装时,如果出现此时无法下载安装APP的字样时,一些解决思路
目录 一.OS系统和IOS版本更新 二:App-Store方式 三:Ad-hoc方式 四:In-house 方式 五: Architecture设置错误 六:App 支持的 iOS 系统版本,和当前 ...
- 【LabVIEW小技巧】LabVIEW自定义系统按钮时图片项设置说明
对于LabVIEW中的按钮控件进行自定义时,图片项中的几个图片困扰的许久,这次仔细的记录一下. 右键单击前面板上要自定义的布尔按钮控件. 从快捷菜单中选择高级--»自定义,打开控件编辑器窗口. 单击 ...
最新文章
- git 查看公共commit_git使用点滴:如何查看commit的内容
- 网站内容优化——什么样的文章可以帮助提升网站优化水平呢?
- Python:SMOTE算法——样本不均衡时候生成新样本的算法
- SAP中过账码or记账码posting code
- 面向对象编程设计练习题(1)
- mysql 5.1.x 比较 5.6.x版本的日志
- IIS安装与部署,站点的部署与配置
- matlab模拟排队论,排队论的matlab仿真(包括仿真代码)
- 什么是YottaChain存储,为什么说是未来数据存储的趋势?
- gimp图片编辑器_GIMP图像编辑器改变我生活的10种方式
- ppt抽奖vba代码
- 智能优化与机器学习结合算法实现数据预测matlab代码清单
- 使用TextPaint实现自由加粗字体:BoldTextView,支持中粗
- Proximity sensor---Px318J
- 低成本快速开发 LoRa 终端:从 1 到 10000
- vb ajax提交post,使用jQuery AJAX将JS数组传递给VB.Net post
- 深度学习(九) GAN 生成对抗网络 理论部分
- Verilog 实现占空比为3/5 2/5 1/5 50% 的五分频信号 断言SVA查看波形
- 连接工作站跑机器学习(Linux命令)
- Xftp传输文件发生错误
热门文章
- Error:(7, 21) java: 程序包javax.servlet不存在,Maven项目请求资源不可用
- 【u3d泰斗破坏神】08 --- UGUI 制作艺术字体
- windows server 2012 r2 standard 通过堡垒机远程桌面服务器报错Remote Desktop Service CALs Request Failed
- 《Activiti/Flowable 深入BPM工作流》- Activiti 与springboot 怎么进行整合?
- JS+COOKIES实现健壮的购物车!
- Golang helloWord
- 叠加三角形的绘制,使用turtle库中的turtle.fd()函数和turtle.seth()函数绘制一个叠加等边三角形
- php展厅控制系统,智能展厅控制系统- 展馆智慧管理系统
- Android自定义优惠券解析
- 【数据结构】第一章绪论习题加答案