MinkowskiEngine实用函数和类
MinkowskiEngine實用函數和類
sparse_quantize
MinkowskiEngine.utils.sparse_quantize(coords, feats=None, labels=None, ignore_label=- 100, return_index=False, return_inverse=False, quantization_size=None)
給定坐標和特征(optional的標簽),函數將生成量化(體素化)坐標。
Args:
coords(numpy.ndarray或torch.Tensor): N×D矩陣大小 ,其中 N 是點數 ,D是維數空間。
feats(numpy.ndarray或torch.Tensor,optional):大小矩陣N×DF ,其中 N 是點數, DF是特征的尺寸。必須與coords具有相同的容器(即,如果coords是torch.Tensor,則feats 也必須是torch.Tensor)。
labels(numpy.ndarray或torch.IntTensor,optional):與eah坐標關聯的整數標簽。必須與coords具有相同的容器(即,如果coords是torch.Tensor,則 標簽也必須是torch.Tensor)。對于將一組點映射到一個標簽的分類,請勿輸入標簽。
ignore_label(int,optional):IGNORE LABEL的int值。 torch.nn.CrossEntropyLoss(ignore_index=ignore_label)
return_index(bool,optional):如果需要量化坐標的索引,則設置True。默認為False。
return_inverse(bool,optional):如果希望索引可以恢復離散化的原始坐標,則將其設置為True。默認為False。當return_reverse為True時,return_index必須為True。
例:
unique_map, inverse_map = sparse_quantize(discrete_coords, return_index=True, return_inverse=True)
unique_coords = discrete_coords[unique_map]
print(unique_coords[inverse_map] == discrete_coords) # True
quantization_size(float,list或 numpy.ndarray,optional):網格單元的超矩形各邊的長度。
例:Segmentation
criterion = torch.nn.CrossEntropyLoss(ignore_index=-100)
coords, feats, labels = MinkowskiEngine.utils.sparse_quantize(
coords, feats, labels, ignore_label=-100, quantization_size=0.1)
output = net(MinkowskiEngine.SparseTensor(feats, coords))
loss = criterion(output.F, labels.long())Classification
criterion = torch.nn.CrossEntropyLoss(ignore_index=-100)
coords, feats = MinkowskiEngine.utils.sparse_quantize(coords, feats)
output = net(MinkowskiEngine.SparseTensor(feats, coords))
loss = criterion(output.F, labels.long())
batched_coordinates
MinkowskiEngine.utils.batched_coordinates(coords)
根據一系列坐標,創建一個ME.SparseTensor坐標
給定numpy或pytorch張量坐標的列表,返回適合ME.SparseTensor的批處理坐標。
Args:
coords(torch.Tensor或numpy.ndarray的序列):坐標列表。
返回值:
coords(torch.IntTensor):批處理的坐標。
警告
從v0.4開始,批次索引將在所有坐標之前。
sparse_collate
MinkowskiEngine.utils.sparse_collate(coords, feats, labels=None)
為稀疏張量文檔創建輸入參數。
將一組坐標和特征要素轉換為批處理坐標和批處理要素。
Args:
coords(一組torch.Tensor或numpy.ndarray):一組坐標。
feats(一組torch.Tensor或numpy.ndarray):一組功能。
labels(一組torch.Tensor或numpy.ndarray):與輸入關聯的一組標簽。
batch_sparse_collate
MinkowskiEngine.utils.batch_sparse_collate(data)
可以與torch.utils.data.DataLoader結合使用的wrapper包裝器函數,為稀疏張量生成輸入。
請參閱訓練示例以了解用法。
Args:
data:(coordinates, features, labels)元組的列表。
稀疏整理
類MinkowskiEngine.utils.SparseCollation(limit_numpoints = -1)
為coords, feats, labels生成集成功能。
請參閱訓練示例以了解用法。
Args:
limit_numpoints(int):如果為正整數,則限制批量大小,以使輸入坐標的數量低于limit_numpoints。如果為0或False,則連接所有點。默認為-1。
例:data_loader = torch.utils.data.DataLoader(
dataset,
…,
collate_fn=SparseCollation())
for d in iter(data_loader):
print(d)
init(limit_numpoints = -1)
初始化self. See help(type(self))有關準確的簽名。
get_coords_map
MinkowskiEngine.utils.get_coords_map(x,y)
獲取稀疏張量1和稀疏張量2之間的映射。
Args:
x(MinkowskiEngine.SparseTensor):x.tensor_stride <= y.tensor_stride的稀疏張量 。
y(MinkowskiEngine.SparseTensor):x.tensor_stride <= y.tensor_stride的稀疏張量 。
返回值:
x_indices(torch.LongTensor):x的索引與返回的y索引相對應。
x_indices(torch.LongTensor):y的索引,它對應于返回的x的索引。
例:
… code-block:: python
sp_tensor = ME.SparseTensor(features, coords=coordinates)
out_sp_tensor = stride_2_conv(sp_tensor)
ins, outs = get_coords_map(sp_tensor, out_sp_tensor)
for i, o in zip(ins, outs):
print(f"{i} -> {o}")
cat
MinkowskiEngine.cat(* sparse_tensors)
級聯稀疏張量
連接稀疏張量特征。所有稀疏張量必須具有相同的 coords_key(相同的坐標)。要連接具有不同稀疏性模式的稀疏張量,請使用SparseTensor二進制運算或 MinkowskiEngine.MinkowskiUnion。
例:
import MinkowskiEngine as ME
sin = ME.SparseTensor(feats, coords)
sin2 = ME.SparseTensor(feats2, coords_key=sin.coords_key, coords_man=sin.coords_man)
sout = UNet(sin) # Returns an output sparse tensor on the same coordinates
sout2 = ME.cat(sin, sin2, sout) # Can concatenate multiple sparse tensors
總結
以上是生活随笔為你收集整理的MinkowskiEngine实用函数和类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Minkowski坐标管理
- 下一篇: MinkowskiEngine Misc