【开放集检测OSR】RPL(Reciprocal Point Learning)、ARPL和ARPL+CS 概念辨析

一、RPL(Reciprocal Point Learning)

在开放集检测中,RPL(Reciprocal Point Learning)方法旨在识别出不属于任何已知类别的开放集样本

RPL方法基于以下原则:开放集样本与已知类别之间的差异性较大,因此可以通过寻找一个特殊点来表示这种差异性。

核心思想

RPL方法的核心思想是学习一个互补点(reciprocal point),该点在特征空间中代表与已知类别的“其他性(otherness)”。

  • 互补点被设计为与已知类别的特征分布相反或互补的特征表示。

训练阶段

在RPL方法中,训练阶段通过使用已知类别的样本来学习互补点。一种常见的方法是最小化已知类别样本与互补点之间的距离,同时最大化已知类别样本与其真实类别中心之间的距离,以确保互补点能够有效地表示“其他性”。

测试阶段

在测试阶段,对于一个待分类的样本,可以计算其与互补点的距离。

  • 如果样本与互补点的距离较大,那么它被认为是开放集样本,不属于任何已知类别;
  • 如果样本与互补点的距离较小,则说明属于已知类;

根据定义,开放集样本与互补点之间的距离应该相对较大,因为互补点代表了与已知类别的差异性。

二、ARPL

ARPL : 在计算特征距离时同时考虑欧氏距离和余弦距离来扩展RPL(互补点学习)方法。

在ARPL中, S ( y ∈ C ∣ x ) S(y ∈ C|x) S(yCx) 的计算基于图像与任何互补点之间在特征空间中的最大距离。这个距离是通过结合欧氏距离和余弦距离计算得到的。

  • 欧氏距离衡量特征空间中两个点之间的直线距离,
  • 余弦距离衡量两个特征向量之间的角度差异。

S ( y ∈ C ∣ x ) = m a x y ∈ C ( d e ( x , y ) + d c ( x , y ) ) S(y ∈ C|x) = max_{y∈C} (d_e(x, y) + d_c(x, y)) S(yCx)=maxyC(de(x,y)+dc(x,y))

通过考虑这两种距离,ARPL旨在捕捉图像与互补点之间的不同相似性或差异性。最大距离表示图像与任何互补点之间最大的差异性,表明存在开放集样本的可能性。

三、ARPL+CS

ARPL + CS (Chen et al., 2021)是对ARPL方法的扩展,通过引入 “混淆样本”(confusing samples) 来模拟“未知类别”样本。

学习数据的潜在表示,使得相似样本在 潜在空间 中更接近,而不相似样本则更远离。为了实现这一目标,ARPL+CS方法通过引入混淆样本来增加训练数据的多样性。

混淆样本

如何生成: 通过对原始样本进行扰动或变换而生成。这些扰动可以是像素级别的扰动,也可以是对输入进行旋转、缩放、平移等几何变换。通过在训练过程中将混淆样本与原始样本一起使用,模型被迫学习到对这些扰动具有鲁棒性的表示。

目的

用于代表“未见过的类别”样本。引入对抗性扰动,以增强模型的鲁棒性和泛化能力。

作用

  1. 增加数据多样性:混淆样本通过引入扰动,使得训练数据更加多样化。这有助于模型学习到更丰富的数据表示,提高对不同变化和变体的泛化能力。

  2. 鲁棒性训练:通过训练模型对混淆样本进行区分,模型被迫学习到对扰动具有鲁棒性的表示。这有助于提高模型对输入变化、噪声和干扰的鲁棒性。

  3. 对抗性学习:混淆样本的引入可以看作是一种对抗性学习的方式,模型需要学习将原始样本与混淆样本区分开来。这使得模型能够更好地区分相似和不相似的样本,从而更好地学习到数据的潜在结构和表示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用python的ogr和osr库,根据很多坐标点使用gdal.warp函数裁剪栅格数据的示例代码: ```python import gdal import ogr import osr # 设置输入栅格数据路径 input_raster_path = '/path/to/input/raster.tif' # 设置输出栅格数据路径 output_raster_path = '/path/to/output/raster.tif' # 设置裁剪范围的坐标点 # 这里假设有一个shapefile文件,其中包含了多个矩形范围的坐标点 clip_shapefile_path = '/path/to/clip/shapefile.shp' # 打开输入栅格数据 input_raster = gdal.Open(input_raster_path) # 获取输入栅格数据的投影信息 input_projection = input_raster.GetProjection() # 打开裁剪范围的shapefile文件 clip_shapefile = ogr.Open(clip_shapefile_path) # 获取shapefile文件中的第一个图层 clip_layer = clip_shapefile.GetLayer(0) # 获取shapefile文件中每个图形的几何体 clip_geometries = [feature.GetGeometryRef() for feature in clip_layer] # 将输入栅格数据的投影信息转换为裁剪范围的投影信息 clip_spatial_reference = clip_layer.GetSpatialRef() input_spatial_reference = osr.SpatialReference(input_projection) transform = osr.CoordinateTransformation(input_spatial_reference, clip_spatial_reference) # 将裁剪范围的坐标点转换为输入栅格数据的投影坐标系中的坐标点 clip_bounds = [] for clip_geometry in clip_geometries: clip_geometry.Transform(transform) clip_bounds.append(clip_geometry.GetEnvelope()) # 使用gdal.warp函数裁剪栅格数据 gdal.Warp(output_raster_path, input_raster, cutlineDSName=clip_shapefile_path, cropToCutline=True) ``` 在以上代码中,使用gdal.Open函数打开输入栅格数据和裁剪范围的shapefile文件,然后使用gdal.Warp函数裁剪栅格数据。在裁剪栅格数据之前,需要将输入栅格数据的投影信息转换为裁剪范围的投影信息,并将裁剪范围的坐标点转换为输入栅格数据的投影坐标系中的坐标点。最后,使用gdal.Warp函数裁剪栅格数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值