Pytorch:上采样、下采样

  缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。

 放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。

 

      下采样原理:对于一幅图像I尺寸为M*N,对其进行s倍下采样,即得到(M/s)*(N/s)尺寸的得分辨率图像,当然s应该是M和N的公约数才行,如果考虑的是矩阵形式的图像,就是把原始图像s*s窗口内的图像变成一个像素,这个像素点的值就是窗口内所有像素的均值:使用池化 pooling(池化 / 降采样) 的技术下采样,目的就是用来降低特征的维度并保留有效信息,一定程度上避免过拟合。但是池化的目的不仅仅是这些,还有保持旋转、平移、伸缩不变形等。现在比较常见的下采样算法有:farthest point sampling(PointNet++,ShellNet)、random sampling(RandLA-Net)、grid sampling(KPConv,Grid-GCN)等。它们各有特点:

  • farthest point sampling(FPS):采样点分布均匀,时间复杂度高
  • grid sampling(GS):采样点分布较为均匀,时间复杂度一般,采样点个数具有不确定性
  • random sampling(RS):采样点分布具有随机性,时间复杂度低

 

     上采样原理:图像放大几乎都是采用内插值方法,即在原有图像像素的基础上在像素点之间采用合适的插值算法插入新的元素。在算法中常见的上采样方法有双线性插值以及转置卷积、上采样(unsampling)和上池化(unpooling)。常用的就是双线性插值以及转置卷积。

 

无论缩放图像(下采样)还是放大图像(上采样),采样方式有很多种。如最近邻插值,双线性插值,均值插值,中值插值等方法。在AlexNet中就使用了较合适的插值方法。各种插值方法都有各自的优缺点。

你可能感兴趣的:(Pytorch,上采样,下采样)