Removed GetMissingFaceDistanceContainer
This commit is contained in:
@ -315,59 +315,6 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
_DuplicateMappedFaceFiles.Clear();
|
||||
}
|
||||
|
||||
public ReadOnlyCollection<FaceDistanceContainer> GetMissingFaceDistanceContainer(int maxDegreeOfParallelism, long ticks, string dFacesCollectionDirectory, ReadOnlyDictionary<int, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>> missingIdThenWholePercentagesToPersonContainers)
|
||||
{
|
||||
List<FaceDistanceContainer> results = new();
|
||||
string[] files;
|
||||
List<Face>? faces;
|
||||
int wholePercentages;
|
||||
int confidencePercent;
|
||||
bool? isWrongYear = null;
|
||||
FaceDistance faceDistance;
|
||||
List<(int id, string json)> collection = new();
|
||||
FaceDistanceContainer faceDistanceContainer;
|
||||
foreach (KeyValuePair<int, ReadOnlyDictionary<int, ReadOnlyCollection<PersonContainer>>> keyValuePair in missingIdThenWholePercentagesToPersonContainers)
|
||||
{
|
||||
files = Directory.GetFiles(dFacesCollectionDirectory, $"{keyValuePair.Key}*.json", SearchOption.TopDirectoryOnly);
|
||||
if (files.Length != 1)
|
||||
continue;
|
||||
collection.Add(new(keyValuePair.Key, Shared.Models.Stateless.Methods.IFace.GetJson(files[0])));
|
||||
}
|
||||
int totalSeconds = (int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds);
|
||||
ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = maxDegreeOfParallelism };
|
||||
string message = $") {collection.Count:000} Setting missing distance containers - {totalSeconds} total second(s)";
|
||||
ProgressBarOptions options = new() { ProgressCharacter = '─', ProgressBarOnBottom = true, DisableBottomPercentage = true };
|
||||
using ProgressBar progressBar = new(collection.Count, message, options);
|
||||
_ = Parallel.For(0, collection.Count, parallelOptions, (i, state) =>
|
||||
{
|
||||
progressBar.Tick();
|
||||
int id = collection[i].id;
|
||||
string json = collection[i].json;
|
||||
faces = JsonSerializer.Deserialize<List<Face>>(json);
|
||||
if (faces is null)
|
||||
throw new NullReferenceException(nameof(faces));
|
||||
foreach (Face face in faces)
|
||||
{
|
||||
if (face.FaceEncoding is null || face.Location is null || face.OutputResolution is null)
|
||||
continue;
|
||||
confidencePercent = Shared.Models.Stateless.Methods.ILocation.GetConfidencePercent(_FaceConfidencePercent, _RangeFaceConfidence, face.Location.Confidence);
|
||||
wholePercentages = Shared.Models.Stateless.Methods.ILocation.GetWholePercentages(face.Location, Shared.Models.Stateless.ILocation.Digits, face.OutputResolution);
|
||||
if (face.FaceDistance?.Encoding is not null && face.FaceDistance.Encoding is FaceRecognitionDotNet.FaceEncoding faceEncoding)
|
||||
faceDistance = new(confidencePercent, face.DateTime, faceEncoding, id, isWrongYear, wholePercentages);
|
||||
else
|
||||
{
|
||||
faceEncoding = FaceRecognition.LoadFaceEncoding(face.FaceEncoding.RawEncoding);
|
||||
faceDistance = new(confidencePercent, face.DateTime, faceEncoding, id, isWrongYear, wholePercentages);
|
||||
face.SetFaceDistance(faceDistance);
|
||||
}
|
||||
faceDistanceContainer = new(face, faceDistance);
|
||||
lock (results)
|
||||
results.Add(faceDistanceContainer);
|
||||
}
|
||||
});
|
||||
return new(results);
|
||||
}
|
||||
|
||||
public static void SaveFaceDistances(Property.Models.Configuration configuration, SortingContainer[] sortingContainers)
|
||||
{
|
||||
string eDistanceContentCollectionDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(configuration, nameof(E_Distance), "([])");
|
||||
@ -387,7 +334,7 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
{
|
||||
if (face.Mapping?.MappingFromFilter is null)
|
||||
throw new NotSupportedException();
|
||||
if (face.Mapping.MappingFromFilter.IsFocusPerson is not null && !face.Mapping.MappingFromFilter.IsFocusPerson.Value)
|
||||
if (face.Mapping.MappingFromFilter.IsUsed is not null && face.Mapping.MappingFromFilter.IsUsed.Value && face.Mapping.MappingFromFilter.IsFocusPerson is not null && !face.Mapping.MappingFromFilter.IsFocusPerson.Value)
|
||||
continue;
|
||||
if (face.FaceEncoding is not null && face.FaceDistance?.Encoding is not null && face.FaceDistance.Encoding is FaceRecognitionDotNet.FaceEncoding _)
|
||||
continue;
|
||||
@ -443,11 +390,11 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
return results;
|
||||
}
|
||||
|
||||
private static List<Sorting> GetSortingCollection(Map.Models.MapLogic mapLogic, ReadOnlyCollection<FaceDistance> faceDistanceEncodings, int i, FaceDistance faceDistanceEncoding)
|
||||
private static List<Sorting> GetSortingCollection(Map.Models.MapLogic mapLogic, ReadOnlyCollection<FaceDistance> faceDistanceEncodings, int i, FaceDistance faceDistanceEncoding, Face face)
|
||||
{
|
||||
List<Sorting> results;
|
||||
List<FaceDistance> faceDistanceLengths = FaceRecognition.FaceDistances(faceDistanceEncodings, faceDistanceEncoding);
|
||||
results = mapLogic.GetSortingCollection(i, faceDistanceEncoding, faceDistanceLengths);
|
||||
results = mapLogic.GetSortingCollection(i, faceDistanceEncoding, face, faceDistanceLengths);
|
||||
return results;
|
||||
}
|
||||
|
||||
@ -471,24 +418,6 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
return results;
|
||||
}
|
||||
|
||||
public static ReadOnlyCollection<FaceDistance> GetFaceDistanceEncodings(ReadOnlyCollection<FaceDistanceContainer> faceDistanceContainers, ReadOnlyCollection<FaceDistanceContainer> missingFaceDistanceContainers)
|
||||
{
|
||||
List<FaceDistance> faceDistanceEncodings = new();
|
||||
foreach (FaceDistanceContainer faceDistanceContainer in faceDistanceContainers)
|
||||
{
|
||||
if (faceDistanceContainer.FaceDistance.Encoding is null)
|
||||
continue;
|
||||
faceDistanceEncodings.Add(faceDistanceContainer.FaceDistance);
|
||||
}
|
||||
foreach (FaceDistanceContainer faceDistanceContainer in missingFaceDistanceContainers)
|
||||
{
|
||||
if (faceDistanceContainer.FaceDistance.Encoding is null)
|
||||
continue;
|
||||
faceDistanceEncodings.Add(faceDistanceContainer.FaceDistance);
|
||||
}
|
||||
return new(faceDistanceEncodings);
|
||||
}
|
||||
|
||||
public static FaceDistanceContainer[] FilteredFaceDistanceContainers(Map.Models.MapLogic mapLogic, ReadOnlyCollection<FaceDistanceContainer> faceDistanceContainers, long? skipOlderThan, DistanceLimits distanceLimits)
|
||||
{
|
||||
List<FaceDistanceContainer> results = new();
|
||||
@ -531,7 +460,7 @@ public partial class E_Distance : IDistance<MetadataExtractor.Directory>
|
||||
progressBar.Tick();
|
||||
FaceDistance faceDistanceEncoding = filteredFaceDistanceContainers[i].FaceDistance;
|
||||
Face face = filteredFaceDistanceContainers[i].Face;
|
||||
List<Sorting> sortingCollection = GetSortingCollection(mapLogic, faceDistanceEncodings, i, faceDistanceEncoding);
|
||||
List<Sorting> sortingCollection = GetSortingCollection(mapLogic, faceDistanceEncodings, i, faceDistanceEncoding, face);
|
||||
if (sortingCollection.Count == 0)
|
||||
return;
|
||||
List<SortingContainer> sortingContainers = GetSortingContainers(mapConfiguration, distanceLimits, face, faceDistanceEncoding, sortingCollection);
|
||||
|
Reference in New Issue
Block a user