基于opencv的torchvision包中“transforms”的重写
opencv-torchvision-transforms-yuzhiyang的Python项目详细描述
opencv_torchvision_transform
这是基于opencv重写torchvisionpackage中的“transforms”。
所有功能仅依赖于CV2和Pythorch(无PIL)。正如{a2}所说,cv2比pil快三倍。
转换中的大多数函数都是重新实现的,除了:
忽略原始版本中不推荐使用的topilimage(opencv:)、scale和randomSizedCrop。
原来的仿射变换只有5个自由度,我实现了6个自由度的仿射变换randomAffine6(可以在master/cvtorchvision/cvtransforms/cvtransforms.py中找到)。原始方法(randomAffine)仍然保留,并使用opencv重新实现。
我的旋转函数是顺时针的,而原来的是逆时针的。
添加一些可以在support中找到的新方法(粗体)。
opencv版本的所有输出几乎与原始版本相同(在master/cvtorchvision/cvtransforms/cvfunctional.py中测试:ifname='main':…)。
支持:
合成,传感器,图像,标准化
调整大小,中心裁剪,填充
lambda(在wihdows中的多进程中不起作用)
随机应用,随机顺序,随机选择,随机裁剪,
RandomHorizontalFlip、RandomVerticalFlip、RandomResizedCrop,
fivecrop,tencrop,线性变换,颜色抖动,
随机旋转,随机仿射,randomAffine6,randomPerspective
随机高斯噪声“,”随机泊松噪声“,”随机噪声
灰度,随机灰度
使用方法:
git克隆https://github.com/YU-Zhiyang/opencv_torchvision_transforms.git。
将cvtorchvision添加到python路径中。
在pythion文件中添加“from cvtorchvision import cvtransforms”。
您可以使用所有功能作为原始版本,例如:
transform = cvtransforms.Compose([ cvtransforms.RandomAffine(degrees=10, translate=(0.1, 0.1), scale=(0.9, 1.1), shear=(-10, 0), cvtransforms.Resize(size=(350, 350), interpolation='BILINEAR'), cvtransforms.ToTensor(), cvtransforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), ])
更多细节可以在官方tutorials的例子中找到。
注意:
pytorch的dataloader中使用的多处理对windows中的lambda函数不友好,因为lambda函数不能被pickle(https://docs.python.org/3/library/pickle.html#what-can-be-pickled-and-unpickled)。
因此cvtransform.py中的lambda在windows中可能无法正常工作。
要求
python=3.5.2
numpy>;=1.10('@'运算符在此版本之前不能重载)
Pythorch=0.4.1
火炬视野=0.2.1
opencv-contrib-python-3.4.2(使用此版本进行测试,但我认为任何版本的opencv3都可以)
后记
欢迎指点并帮助修复错误!
手表、星星和叉子被拒绝:微笑:
谢谢你的帮助。