使用OpenCV替换Torchvision变换的dropin
opencv-transforms的Python项目详细描述
opencv_变换
此存储库旨在更快地替换Pytorch's Torchvision augmentations。此回购使用OpenCV为PyTorch计算机视觉管道提供快速图像增强。我写这段代码是因为基于枕头的Torchvision变换由于图像增强速度慢而使我的GPU快饿死了。在
要求
- OpenCV的工作装置。使用OpenCV 3.4.1、4.1.0版进行测试
- 在Windows10和Ubuntu18.04上测试过。有证据表明OpenCV不能很好地处理Linux/MacOS上的多线程,例如pytorch中的
num_workers >0
。我还没碰到这个问题。在
安装
opencv_transforms现在是一个pip包!简单使用
pip install opencv_transforms
使用
打破零钱!请注意导入语法!
from opencv_transforms import transforms
- 从这里开始,几乎所有的东西都应该和原来的一样工作{
}。在
示例:调整图像大小
importnumpyasnpimage=np.random.randint(low=0,high=255,size=(1024,2048,3))resize=transforms.Resize(size=(256,256))image=resize(image)
应该比PIL快1.5到10倍。见基准
性能
- 在OpenCV中,大多数转换速度在1.5倍到4倍之间。在OpenCV中,大图像大小调整速度快10倍。在
- 要复制以下基准测试,请下载Cityscapes dataset。在
- 在笔记本bencharming_v2.ipynb我用HDF5文件包装了Cityscapes默认目录,以便更快地读取。在
当您将多个转换组合在一起时,这些更改开始累积。
托多
- [x] 所有当前实现的torchvision转换的初始提交
- [x] 城市景观基准
- []使
resample
标志在RandomRotation
,RandomAffine
上实际做些什么 - []加快饱和度和色调的增强。目前,最快的方法是转换成PIL图像,执行和Torchvision相同的增强,然后再转换回np.ndarray公司在
- 项目
标签: