mirror of
https://github.com/iperov/DeepFaceLab.git
synced 2025-07-06 04:52:13 -07:00
fix
This commit is contained in:
parent
21b25038ac
commit
ea33541177
2 changed files with 92 additions and 100 deletions
|
@ -1,5 +1,6 @@
|
|||
import multiprocessing
|
||||
import operator
|
||||
import pickle
|
||||
import traceback
|
||||
from pathlib import Path
|
||||
|
||||
|
@ -14,23 +15,23 @@ from .Sample import Sample, SampleType
|
|||
|
||||
|
||||
class SampleHost:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
samples_cache = dict()
|
||||
@staticmethod
|
||||
def get_person_id_max_count(samples_path):
|
||||
def get_person_id_max_count(samples_path):
|
||||
samples = None
|
||||
try:
|
||||
samples = samplelib.PackedFaceset.load(samples_path)
|
||||
samples = samplelib.PackedFaceset.load(samples_path)
|
||||
except:
|
||||
io.log_err(f"Error occured while loading samplelib.PackedFaceset.load {str(samples_dat_path)}, {traceback.format_exc()}")
|
||||
|
||||
|
||||
if samples is None:
|
||||
raise ValueError("packed faceset not found.")
|
||||
persons_name_idxs = {}
|
||||
for sample in samples:
|
||||
raise ValueError("packed faceset not found.")
|
||||
persons_name_idxs = {}
|
||||
for sample in samples:
|
||||
persons_name_idxs[sample.person_name] = 0
|
||||
return len(list(persons_name_idxs.keys()))
|
||||
|
||||
|
@ -49,41 +50,37 @@ class SampleHost:
|
|||
elif sample_type == SampleType.FACE or \
|
||||
sample_type == SampleType.FACE_TEMPORAL_SORTED:
|
||||
result = None
|
||||
|
||||
if samples[sample_type] is None:
|
||||
|
||||
if samples[sample_type] is None:
|
||||
try:
|
||||
result = samplelib.PackedFaceset.load(samples_path)
|
||||
result = samplelib.PackedFaceset.load(samples_path)
|
||||
except:
|
||||
io.log_err(f"Error occured while loading samplelib.PackedFaceset.load {str(samples_dat_path)}, {traceback.format_exc()}")
|
||||
|
||||
|
||||
if result is not None:
|
||||
io.log_info (f"Loaded {len(result)} packed faces from {samples_path}")
|
||||
|
||||
|
||||
if result is None:
|
||||
result = SampleHost.load_face_samples( Path_utils.get_image_paths(samples_path) )
|
||||
|
||||
samples[sample_type] = mp_utils.ListHost()
|
||||
|
||||
if sample_type == SampleType.FACE_TEMPORAL_SORTED:
|
||||
result = SampleHost.upgradeToFaceTemporalSortedSamples(result)
|
||||
|
||||
|
||||
result_dumped = pickle.dumps(result)
|
||||
del result
|
||||
result = pickle.loads(result_dumped)
|
||||
samples[sample_type] = mp_utils.ListHost(result)
|
||||
|
||||
list_host = samples[sample_type]
|
||||
|
||||
|
||||
clis = [ list_host.create_cli() for _ in range(number_of_clis) ]
|
||||
|
||||
if result is not None:
|
||||
while True:
|
||||
if len(result) == 0:
|
||||
break
|
||||
items = result[0:10000]
|
||||
del result[0:10000]
|
||||
clis[0].extend(items)
|
||||
|
||||
return clis
|
||||
|
||||
return samples[sample_type]
|
||||
|
||||
@staticmethod
|
||||
def load_face_samples ( image_paths):
|
||||
def load_face_samples ( image_paths):
|
||||
result = FaceSamplesLoaderSubprocessor(image_paths).run()
|
||||
sample_list = []
|
||||
|
||||
|
@ -93,7 +90,7 @@ class SampleHost:
|
|||
landmarks,
|
||||
ie_polys,
|
||||
eyebrows_expand_mod,
|
||||
source_filename,
|
||||
source_filename,
|
||||
) in result:
|
||||
sample_list.append( Sample(filename=filename,
|
||||
sample_type=SampleType.FACE,
|
||||
|
@ -102,7 +99,7 @@ class SampleHost:
|
|||
landmarks=landmarks,
|
||||
ie_polys=ie_polys,
|
||||
eyebrows_expand_mod=eyebrows_expand_mod,
|
||||
source_filename=source_filename,
|
||||
source_filename=source_filename,
|
||||
))
|
||||
return sample_list
|
||||
|
||||
|
@ -112,14 +109,14 @@ class SampleHost:
|
|||
new_s = sorted(new_s, key=operator.itemgetter(1))
|
||||
|
||||
return [ s[0] for s in new_s]
|
||||
|
||||
|
||||
|
||||
class FaceSamplesLoaderSubprocessor(Subprocessor):
|
||||
#override
|
||||
def __init__(self, image_paths ):
|
||||
self.image_paths = image_paths
|
||||
self.image_paths_len = len(image_paths)
|
||||
self.idxs = [*range(self.image_paths_len)]
|
||||
self.idxs = [*range(self.image_paths_len)]
|
||||
self.result = [None]*self.image_paths_len
|
||||
super().__init__('FaceSamplesLoader', FaceSamplesLoaderSubprocessor.Cli, 60, initialize_subprocesses_in_serial=False)
|
||||
|
||||
|
@ -169,7 +166,7 @@ class FaceSamplesLoaderSubprocessor(Subprocessor):
|
|||
def process_data(self, data):
|
||||
idx, filename = data
|
||||
dflimg = DFLIMG.load (Path(filename))
|
||||
|
||||
|
||||
if dflimg is None:
|
||||
self.log_err (f"FaceSamplesLoader: {filename} is not a dfl image file.")
|
||||
data = None
|
||||
|
@ -179,8 +176,8 @@ class FaceSamplesLoaderSubprocessor(Subprocessor):
|
|||
dflimg.get_landmarks(),
|
||||
dflimg.get_ie_polys(),
|
||||
dflimg.get_eyebrows_expand_mod(),
|
||||
dflimg.get_source_filename() )
|
||||
|
||||
dflimg.get_source_filename() )
|
||||
|
||||
return idx, data
|
||||
|
||||
#override
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue