mirror of
https://github.com/deepinsight/insightface.git
synced 2026-05-15 04:37:50 +00:00
42 lines
1.3 KiB
Python
Executable File
42 lines
1.3 KiB
Python
Executable File
from functools import partial
|
|
|
|
import torch
|
|
from six.moves import map, zip
|
|
|
|
|
|
def multi_apply(func, *args, **kwargs):
|
|
"""Apply function to a list of arguments.
|
|
|
|
Note:
|
|
This function applies the ``func`` to multiple inputs and
|
|
map the multiple outputs of the ``func`` into different
|
|
list. Each list contains the same type of outputs corresponding
|
|
to different inputs.
|
|
|
|
Args:
|
|
func (Function): A function that will be applied to a list of
|
|
arguments
|
|
|
|
Returns:
|
|
tuple(list): A tuple containing multiple list, each list contains \
|
|
a kind of returned results by the function
|
|
"""
|
|
pfunc = partial(func, **kwargs) if kwargs else func
|
|
map_results = map(pfunc, *args)
|
|
return tuple(map(list, zip(*map_results)))
|
|
|
|
|
|
def unmap(data, count, inds, fill=0):
|
|
"""Unmap a subset of item (data) back to the original set of items (of size
|
|
count)"""
|
|
if data.dim() == 1:
|
|
ret = data.new_full((count, ), fill)
|
|
ret[inds.type(torch.bool)] = data
|
|
else:
|
|
new_size = (count, ) + data.size()[1:]
|
|
ret = data.new_full(new_size, fill)
|
|
#print(inds)
|
|
#print('CCC', ret.shape, inds.shape, data.shape)
|
|
ret[inds.type(torch.bool), :] = data
|
|
return ret
|