Range
This commit is contained in:
parent
ff2fa4e474
commit
239acf2699
@ -10,18 +10,23 @@ namespace View_by_Distance.Distance.Models;
|
||||
public class MapLogicSupport : Shared.Models.Methods.IMapLogicSupport
|
||||
{
|
||||
|
||||
private int _Area;
|
||||
private int _Days;
|
||||
private int _Distance;
|
||||
private int _Confidence;
|
||||
|
||||
private readonly int _FaceConfidencePercent;
|
||||
private readonly int _FaceDistancePermyriad;
|
||||
private readonly int _SortingDaysDeltaTolerance;
|
||||
private readonly double _FaceDistanceMinimumConfidence;
|
||||
private readonly int _FaceDistanceAreaPermilleTolerance;
|
||||
private readonly int[] _RangeDaysDeltaTolerance;
|
||||
private readonly int[] _RangeFaceAreaPermilleTolerance;
|
||||
private readonly int _SortingMaximumPerFaceShouldBeHigh;
|
||||
|
||||
public MapLogicSupport(int faceDistanceAreaPermilleTolerance, double faceDistanceMinimumConfidence, int faceDistancePermyriad, int sortingDaysDeltaTolerance, int sortingMaximumPerFaceShouldBeHigh)
|
||||
public MapLogicSupport(int faceConfidencePercent, int faceDistancePermyriad, int[] rangeDaysDeltaTolerance, int[] rangeFaceAreaPermilleTolerance, int sortingMaximumPerFaceShouldBeHigh)
|
||||
{
|
||||
_FaceConfidencePercent = faceConfidencePercent;
|
||||
_FaceDistancePermyriad = faceDistancePermyriad;
|
||||
_SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||
_FaceDistanceMinimumConfidence = faceDistanceMinimumConfidence;
|
||||
_FaceDistanceAreaPermilleTolerance = faceDistanceAreaPermilleTolerance;
|
||||
_RangeDaysDeltaTolerance = rangeDaysDeltaTolerance;
|
||||
_RangeFaceAreaPermilleTolerance = rangeFaceAreaPermilleTolerance;
|
||||
_SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
|
||||
}
|
||||
|
||||
@ -46,10 +51,10 @@ public class MapLogicSupport : Shared.Models.Methods.IMapLogicSupport
|
||||
double b;
|
||||
double c;
|
||||
double d;
|
||||
double faceAreaPermille;
|
||||
double faceConfidencePercent;
|
||||
double faceDistancePermyriad;
|
||||
double sortingDaysDeltaTolerance;
|
||||
double faceDistanceMinimumConfidence;
|
||||
double faceDistanceAreaPermilleTolerance;
|
||||
double rangeDaysDeltaTolerance;
|
||||
if (useFiltersCounter is null)
|
||||
{
|
||||
a = 1f;
|
||||
@ -87,52 +92,70 @@ public class MapLogicSupport : Shared.Models.Methods.IMapLogicSupport
|
||||
}
|
||||
if (useFiltersCounter is null)
|
||||
{
|
||||
sortingDaysDeltaTolerance = _SortingDaysDeltaTolerance;
|
||||
rangeDaysDeltaTolerance = _RangeDaysDeltaTolerance[1];
|
||||
faceDistancePermyriad = _FaceDistancePermyriad;
|
||||
faceDistanceMinimumConfidence = _FaceDistanceMinimumConfidence;
|
||||
faceDistanceAreaPermilleTolerance = _FaceDistanceAreaPermilleTolerance;
|
||||
faceConfidencePercent = _FaceConfidencePercent;
|
||||
faceAreaPermille = _RangeFaceAreaPermilleTolerance[1];
|
||||
}
|
||||
else if (useFiltersCounter.Value is 1 or 5 or 9 or 13)
|
||||
{
|
||||
sortingDaysDeltaTolerance = _SortingDaysDeltaTolerance * a;
|
||||
rangeDaysDeltaTolerance = _RangeDaysDeltaTolerance[1] * a;
|
||||
faceDistancePermyriad = _FaceDistancePermyriad * c;
|
||||
faceDistanceMinimumConfidence = _FaceDistanceMinimumConfidence * d;
|
||||
faceDistanceAreaPermilleTolerance = _FaceDistanceAreaPermilleTolerance * d;
|
||||
faceConfidencePercent = _FaceConfidencePercent * d;
|
||||
faceAreaPermille = _RangeFaceAreaPermilleTolerance[1] * d;
|
||||
}
|
||||
else if (useFiltersCounter.Value is 2 or 6 or 10 or 14)
|
||||
{
|
||||
sortingDaysDeltaTolerance = _SortingDaysDeltaTolerance * c;
|
||||
rangeDaysDeltaTolerance = _RangeDaysDeltaTolerance[1] * c;
|
||||
faceDistancePermyriad = _FaceDistancePermyriad * a;
|
||||
faceDistanceMinimumConfidence = _FaceDistanceMinimumConfidence * d;
|
||||
faceDistanceAreaPermilleTolerance = _FaceDistanceAreaPermilleTolerance * d;
|
||||
faceConfidencePercent = _FaceConfidencePercent * d;
|
||||
faceAreaPermille = _RangeFaceAreaPermilleTolerance[1] * d;
|
||||
}
|
||||
else if (useFiltersCounter.Value is 3 or 7 or 11 or 15)
|
||||
{
|
||||
sortingDaysDeltaTolerance = _SortingDaysDeltaTolerance * c;
|
||||
rangeDaysDeltaTolerance = _RangeDaysDeltaTolerance[1] * c;
|
||||
faceDistancePermyriad = _FaceDistancePermyriad * c;
|
||||
faceDistanceMinimumConfidence = _FaceDistanceMinimumConfidence * b;
|
||||
faceDistanceAreaPermilleTolerance = _FaceDistanceAreaPermilleTolerance * d;
|
||||
faceConfidencePercent = _FaceConfidencePercent * b;
|
||||
faceAreaPermille = _RangeFaceAreaPermilleTolerance[1] * d;
|
||||
}
|
||||
else if (useFiltersCounter.Value is 4 or 8 or 12 or 16)
|
||||
{
|
||||
sortingDaysDeltaTolerance = _SortingDaysDeltaTolerance * c;
|
||||
rangeDaysDeltaTolerance = _RangeDaysDeltaTolerance[1] * c;
|
||||
faceDistancePermyriad = _FaceDistancePermyriad * c;
|
||||
faceDistanceMinimumConfidence = _FaceDistanceMinimumConfidence * d;
|
||||
faceDistanceAreaPermilleTolerance = _FaceDistanceAreaPermilleTolerance * b;
|
||||
faceConfidencePercent = _FaceConfidencePercent * d;
|
||||
faceAreaPermille = _RangeFaceAreaPermilleTolerance[1] * b;
|
||||
}
|
||||
else
|
||||
{
|
||||
sortingDaysDeltaTolerance = int.MaxValue;
|
||||
rangeDaysDeltaTolerance = int.MaxValue;
|
||||
faceDistancePermyriad = int.MaxValue;
|
||||
faceDistanceAreaPermilleTolerance = 0;
|
||||
faceDistanceMinimumConfidence = 0;
|
||||
faceAreaPermille = 0;
|
||||
faceConfidencePercent = 0;
|
||||
}
|
||||
foreach (Sorting sorting in collection)
|
||||
{
|
||||
if (face.Mapping is null || faceDistanceEncoding.NormalizedPixelPercentage is null)
|
||||
throw new NotSupportedException();
|
||||
if (sorting.DaysDelta > sortingDaysDeltaTolerance || sorting.DistancePermyriad > faceDistancePermyriad || face.Mapping.MappingFromLocation.Confidence < faceDistanceMinimumConfidence || face.Mapping.MappingFromLocation.AreaPermille < faceDistanceAreaPermilleTolerance)
|
||||
if (sorting.DaysDelta > rangeDaysDeltaTolerance)
|
||||
{
|
||||
_Days += 1;
|
||||
continue;
|
||||
}
|
||||
if (sorting.DistancePermyriad > faceDistancePermyriad)
|
||||
{
|
||||
_Distance += 1;
|
||||
continue;
|
||||
}
|
||||
if (face.Mapping.MappingFromLocation.ConfidencePercent < faceConfidencePercent)
|
||||
{
|
||||
_Confidence += 1;
|
||||
continue;
|
||||
}
|
||||
if (face.Mapping.MappingFromLocation.AreaPermille < faceAreaPermille)
|
||||
{
|
||||
_Area += 1;
|
||||
continue;
|
||||
}
|
||||
sortingContainer = new(face.Mapping, sorting);
|
||||
results.Add(sortingContainer);
|
||||
if (results.Count >= _SortingMaximumPerFaceShouldBeHigh)
|
||||
@ -163,7 +186,7 @@ public class MapLogicSupport : Shared.Models.Methods.IMapLogicSupport
|
||||
throw new NotSupportedException();
|
||||
if (face.FaceDistance?.Encoding is not FaceRecognitionDotNet.FaceEncoding faceEncoding)
|
||||
continue;
|
||||
faceDistance = new(face.Mapping.MappingFromLocation.Confidence, faceEncoding, face.Mapping.MappingFromItem.Id, face.Mapping.MappingFromItem.IsWrongYear, face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromLocation.NormalizedPixelPercentage);
|
||||
faceDistance = new(face.Mapping.MappingFromLocation.ConfidencePercent, faceEncoding, face.Mapping.MappingFromItem.Id, face.Mapping.MappingFromItem.IsWrongYear, face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromLocation.NormalizedPixelPercentage);
|
||||
faceDistanceContainer = new(face, faceDistance);
|
||||
collection.Add(faceDistanceContainer);
|
||||
}
|
||||
@ -244,7 +267,7 @@ public class MapLogicSupport : Shared.Models.Methods.IMapLogicSupport
|
||||
return;
|
||||
progressBar.Tick();
|
||||
faceEncoding = FaceRecognition.LoadFaceEncoding(face.FaceEncoding.RawEncoding);
|
||||
FaceDistance faceDistance = new(face.Mapping.MappingFromLocation.Confidence, faceEncoding, face.Mapping.MappingFromItem.Id, face.Mapping.MappingFromItem.IsWrongYear, face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromLocation.NormalizedPixelPercentage);
|
||||
FaceDistance faceDistance = new(face.Mapping.MappingFromLocation.ConfidencePercent, faceEncoding, face.Mapping.MappingFromItem.Id, face.Mapping.MappingFromItem.IsWrongYear, face.Mapping.MappingFromItem.MinimumDateTime, face.Mapping.MappingFromLocation.NormalizedPixelPercentage);
|
||||
lock (face)
|
||||
face.SetFaceDistance(faceDistance);
|
||||
});
|
||||
@ -317,4 +340,18 @@ public class MapLogicSupport : Shared.Models.Methods.IMapLogicSupport
|
||||
return results;
|
||||
}
|
||||
|
||||
string Shared.Models.Methods.IMapLogicSupport.GetCounts()
|
||||
{
|
||||
string result;
|
||||
List<(int Value, string Name)> results = new()
|
||||
{
|
||||
new(_Area, nameof(_Area)),
|
||||
new(_Confidence, nameof(_Confidence)),
|
||||
new(_Days, nameof(_Days)),
|
||||
new(_Distance, nameof(_Distance))
|
||||
};
|
||||
result = string.Join(' ', from l in results orderby l.Value descending select $"{l.Name}_{l.Value};");
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -12,15 +12,17 @@ public partial class E_Distance
|
||||
private readonly List<double?> _Debug;
|
||||
private readonly List<string> _Renamed;
|
||||
private readonly Serilog.ILogger? _Log;
|
||||
private readonly int _FaceConfidencePercent;
|
||||
private readonly bool _DistanceRenameToMatch;
|
||||
private readonly double _FaceDistanceTolerance;
|
||||
private readonly double[] _RangeFaceConfidence;
|
||||
private readonly bool _DistanceMoveUnableToMatch;
|
||||
private readonly List<string> _AllMappedFaceFiles;
|
||||
private readonly double[] _RangeDistanceTolerance;
|
||||
private readonly int _DistancePixelDistanceTolerance;
|
||||
private readonly List<string> _AllMappedFaceFileNames;
|
||||
private readonly List<string> _DuplicateMappedFaceFiles;
|
||||
|
||||
public E_Distance(bool distanceMoveUnableToMatch, int distancePixelDistanceTolerance, bool distanceRenameToMatch, double faceDistanceTolerance)
|
||||
public E_Distance(bool distanceMoveUnableToMatch, int distancePixelDistanceTolerance, bool distanceRenameToMatch, int faceConfidencePercent, double[] rangeDistanceTolerance, double[] rangeFaceConfidence)
|
||||
{
|
||||
_Debug = new();
|
||||
_Moved = new();
|
||||
@ -28,9 +30,11 @@ public partial class E_Distance
|
||||
_AllMappedFaceFiles = new();
|
||||
_AllMappedFaceFileNames = new();
|
||||
_DuplicateMappedFaceFiles = new();
|
||||
_RangeFaceConfidence = rangeFaceConfidence;
|
||||
_Log = Serilog.Log.ForContext<E_Distance>();
|
||||
_DistanceRenameToMatch = distanceRenameToMatch;
|
||||
_FaceDistanceTolerance = faceDistanceTolerance;
|
||||
_FaceConfidencePercent = faceConfidencePercent;
|
||||
_RangeDistanceTolerance = rangeDistanceTolerance;
|
||||
_DistanceMoveUnableToMatch = distanceMoveUnableToMatch;
|
||||
_DistancePixelDistanceTolerance = distancePixelDistanceTolerance;
|
||||
}
|
||||
@ -67,7 +71,7 @@ public partial class E_Distance
|
||||
}
|
||||
else
|
||||
{
|
||||
checkDirectoryName = Path.Combine(checkDirectoryName, $"({directoryTicks}{_FaceDistanceTolerance.ToString()[1..]})");
|
||||
checkDirectoryName = Path.Combine(checkDirectoryName, $"({directoryTicks}_{string.Join('-', _RangeDistanceTolerance)})");
|
||||
for (int i = directoryNames.Count - 1 - 1; i > -1; i--)
|
||||
checkDirectoryName = Path.Combine(checkDirectoryName, directoryNames[i]);
|
||||
if (!Directory.Exists(checkDirectoryName))
|
||||
@ -133,9 +137,10 @@ public partial class E_Distance
|
||||
return result;
|
||||
}
|
||||
|
||||
private static FaceDistanceContainer[] GetFaceDistanceContainers(MappingFromItem mappingFromItem, Face[] filteredFaces)
|
||||
private FaceDistanceContainer[] GetFaceDistanceContainers(MappingFromItem mappingFromItem, Face[] filteredFaces)
|
||||
{
|
||||
FaceDistanceContainer[] results;
|
||||
int confidencePercent;
|
||||
FaceDistance faceDistance;
|
||||
int normalizedPixelPercentage;
|
||||
FaceDistanceContainer faceDistanceContainer;
|
||||
@ -144,13 +149,14 @@ public partial class E_Distance
|
||||
{
|
||||
if (face.FaceEncoding is null || face.Location is null || face.OutputResolution is null)
|
||||
throw new NotSupportedException();
|
||||
confidencePercent = Shared.Models.Stateless.Methods.ILocation.GetConfidencePercent(_FaceConfidencePercent, _RangeFaceConfidence, face.Location.Confidence);
|
||||
normalizedPixelPercentage = Shared.Models.Stateless.Methods.ILocation.GetNormalizedPixelPercentage(face.Location, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, face.OutputResolution);
|
||||
if (face.FaceDistance?.Encoding is not null && face.FaceDistance.Encoding is FaceRecognitionDotNet.FaceEncoding faceEncoding)
|
||||
faceDistance = new(face.Location.Confidence, faceEncoding, mappingFromItem.Id, mappingFromItem.IsWrongYear, mappingFromItem.MinimumDateTime, normalizedPixelPercentage);
|
||||
faceDistance = new(confidencePercent, faceEncoding, mappingFromItem.Id, mappingFromItem.IsWrongYear, mappingFromItem.MinimumDateTime, normalizedPixelPercentage);
|
||||
else
|
||||
{
|
||||
faceEncoding = FaceRecognition.LoadFaceEncoding(face.FaceEncoding.RawEncoding);
|
||||
faceDistance = new(face.Location.Confidence, faceEncoding, mappingFromItem.Id, mappingFromItem.IsWrongYear, mappingFromItem.MinimumDateTime, normalizedPixelPercentage);
|
||||
faceDistance = new(confidencePercent, faceEncoding, mappingFromItem.Id, mappingFromItem.IsWrongYear, mappingFromItem.MinimumDateTime, normalizedPixelPercentage);
|
||||
lock (filteredFaces)
|
||||
face.SetFaceDistance(faceDistance);
|
||||
}
|
||||
@ -173,7 +179,7 @@ public partial class E_Distance
|
||||
return faceDistanceEncodings;
|
||||
}
|
||||
|
||||
private static List<(Face Face, double? Length)> GetValues(MappingFromItem mappingFromItem, Face[] filteredFaces, string json)
|
||||
private List<(Face Face, double? Length)> GetValues(MappingFromItem mappingFromItem, Face[] filteredFaces, string json)
|
||||
{
|
||||
List<(Face Face, double? Length)> results = new();
|
||||
Face face;
|
||||
|
@ -23,7 +23,6 @@ public class Configuration
|
||||
[Display(Name = "Load Or Create Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Index"), Required] public bool? LoadOrCreateThenSaveIndex { get; set; }
|
||||
[Display(Name = "Location Confidence Factor"), Required] public int? LocationConfidenceFactor { get; set; }
|
||||
[Display(Name = "Mapped Max Index"), Required] public int? MappedMaxIndex { get; set; }
|
||||
[Display(Name = "Mixed Year Relative Paths"), Required] public string[] MixedYearRelativePaths { get; set; }
|
||||
[Display(Name = "Model Directory"), Required] public string ModelDirectory { get; set; }
|
||||
@ -88,8 +87,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.LoadOrCreateThenSaveIndex is null)
|
||||
throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveIndex));
|
||||
if (configuration.LocationConfidenceFactor is null)
|
||||
throw new NullReferenceException(nameof(configuration.LocationConfidenceFactor));
|
||||
if (configuration.MixedYearRelativePaths is null)
|
||||
throw new NullReferenceException(nameof(configuration.MixedYearRelativePaths));
|
||||
if (configuration.NumberOfJitters is null)
|
||||
@ -148,7 +145,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveIndex.Value,
|
||||
configuration.LocationConfidenceFactor.Value,
|
||||
configuration.MappedMaxIndex,
|
||||
configuration.MixedYearRelativePaths,
|
||||
configuration.ModelDirectory,
|
||||
|
@ -22,7 +22,6 @@ public class Configuration
|
||||
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; }
|
||||
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; }
|
||||
public bool LoadOrCreateThenSaveIndex { init; get; }
|
||||
public int LocationConfidenceFactor { init; get; }
|
||||
public int? MappedMaxIndex { init; get; }
|
||||
public string[] MixedYearRelativePaths { init; get; }
|
||||
public string ModelDirectory { init; get; }
|
||||
@ -66,7 +65,6 @@ public class Configuration
|
||||
string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
bool loadOrCreateThenSaveIndex,
|
||||
int locationConfidenceFactor,
|
||||
int? mappedMaxIndex,
|
||||
string[] mixedYearRelativePaths,
|
||||
string modelDirectory,
|
||||
@ -109,7 +107,6 @@ public class Configuration
|
||||
LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex;
|
||||
LocationConfidenceFactor = locationConfidenceFactor;
|
||||
MappedMaxIndex = mappedMaxIndex;
|
||||
MixedYearRelativePaths = mixedYearRelativePaths;
|
||||
ModelDirectory = modelDirectory;
|
||||
|
@ -33,9 +33,9 @@ public class D_Face
|
||||
private readonly int _NumberOfJitters;
|
||||
private readonly Serilog.ILogger? _Log;
|
||||
private readonly bool _OverrideForFaceImages;
|
||||
private readonly bool _RetryImagesWithoutAFace;
|
||||
private readonly Configuration _Configuration;
|
||||
private readonly int _NumberOfTimesToUpsample;
|
||||
private readonly bool _RetryImagesWithoutAFace;
|
||||
private readonly ImageCodecInfo _ImageCodecInfo;
|
||||
private readonly ModelParameter _ModelParameter;
|
||||
private readonly PredictorModel _PredictorModel;
|
||||
@ -45,7 +45,6 @@ public class D_Face
|
||||
private readonly int _FaceDistanceHiddenImageFactor;
|
||||
private readonly EncoderParameters _EncoderParameters;
|
||||
private readonly ImageCodecInfo _HiddenImageCodecInfo;
|
||||
private readonly int _FaceDistanceAreaPermilleTolerance;
|
||||
private readonly bool _ForceFaceLastWriteTimeToCreationTime;
|
||||
private readonly EncoderParameters _HiddenEncoderParameters;
|
||||
private readonly JsonSerializerOptions _WriteIndentedAndWhenWritingNull;
|
||||
@ -55,7 +54,6 @@ public class D_Face
|
||||
bool checkDFaceAndUpWriteDates,
|
||||
Configuration configuration,
|
||||
EncoderParameters encoderParameters,
|
||||
int faceDistanceAreaPermilleTolerance,
|
||||
int faceDistanceHiddenImageFactor,
|
||||
string filenameExtension,
|
||||
bool forceFaceLastWriteTimeToCreationTime,
|
||||
@ -88,7 +86,6 @@ public class D_Face
|
||||
_NumberOfTimesToUpsample = numberOfTimesToUpsample;
|
||||
_CheckDFaceAndUpWriteDates = checkDFaceAndUpWriteDates;
|
||||
_PropertiesChangedForFaces = propertiesChangedForFaces;
|
||||
_FaceDistanceAreaPermilleTolerance = faceDistanceAreaPermilleTolerance;
|
||||
_FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
|
||||
_ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
|
||||
(Model model, PredictorModel predictorModel, ModelParameter modelParameter) = GetModel(modelDirectory, modelName, predictorModelName);
|
||||
|
@ -80,7 +80,6 @@ public partial class DlibDotNet
|
||||
configuration.CheckDFaceAndUpWriteDates,
|
||||
configuration.PropertyConfiguration,
|
||||
encoderParameters,
|
||||
configuration.FaceDistanceAreaPermilleTolerance,
|
||||
configuration.FaceDistanceHiddenImageFactor,
|
||||
filenameExtension,
|
||||
configuration.ForceFaceLastWriteTimeToCreationTime,
|
||||
@ -103,7 +102,7 @@ public partial class DlibDotNet
|
||||
}
|
||||
_Metadata = new(configuration.ForceMetadataLastWriteTimeToCreationTime, configuration.PropertiesChangedForMetadata);
|
||||
_MapConfiguration = Get(configuration, _Faces.FileNameExtension, _Faces.HiddenFileNameExtension, _FaceParts.FileNameExtension);
|
||||
_Distance = new(configuration.DistanceMoveUnableToMatch, configuration.DistancePixelDistanceTolerance, configuration.DistanceRenameToMatch, configuration.FaceDistanceTolerance);
|
||||
_Distance = new(configuration.DistanceMoveUnableToMatch, configuration.DistancePixelDistanceTolerance, configuration.DistanceRenameToMatch, _Configuration.FaceConfidencePercent, configuration.RangeDistanceTolerance, configuration.RangeFaceConfidence);
|
||||
if (_FirstRun || !_ArgZeroIsConfigurationRootDirectory)
|
||||
personContainers = Array.Empty<PersonContainer>();
|
||||
else
|
||||
@ -217,8 +216,6 @@ public partial class DlibDotNet
|
||||
throw new Exception($"One or more {nameof(configuration.SaveShortcutsForOutputResolutions)} are not in the ValidResolutions list!");
|
||||
if ((from l in configuration.SaveFaceLandmarkForOutputResolutions where !configuration.ValidResolutions.Contains(l) select false).Any())
|
||||
throw new Exception($"One or more {nameof(configuration.SaveFaceLandmarkForOutputResolutions)} are not in the ValidResolutions list!");
|
||||
if (configuration.DistanceFactor + configuration.LocationConfidenceFactor != 10)
|
||||
throw new NullReferenceException(nameof(configuration.DistanceFactor));
|
||||
if (string.IsNullOrEmpty(configuration.ModelName))
|
||||
throw new NullReferenceException(nameof(configuration.ModelName));
|
||||
if (string.IsNullOrEmpty(configuration.OutputExtension))
|
||||
@ -266,12 +263,13 @@ public partial class DlibDotNet
|
||||
private static Map.Models.Configuration Get(Models.Configuration configuration, string facesFileNameExtension, string facesHiddenFileNameExtension, string facePartsFileNameExtension)
|
||||
{
|
||||
Map.Models.Configuration result = new(
|
||||
configuration.FaceConfidencePercent,
|
||||
configuration.FaceDistancePermyriad,
|
||||
configuration.FaceDistanceTolerance,
|
||||
configuration.MappingDefaultName,
|
||||
configuration.PersonBirthdayFirstYear,
|
||||
configuration.PersonBirthdayFormat,
|
||||
configuration.SortingDaysDeltaTolerance,
|
||||
configuration.RangeDaysDeltaTolerance,
|
||||
configuration.RangeDistanceTolerance,
|
||||
configuration.SortingMaximumPerKey,
|
||||
configuration.SortingMinimumToUseSigma,
|
||||
facesFileNameExtension,
|
||||
@ -782,9 +780,10 @@ public partial class DlibDotNet
|
||||
List<Item> items = new();
|
||||
Shared.Models.Face[] faces;
|
||||
Mapping mapping;
|
||||
int areaPermille;
|
||||
int faceAreaPermille;
|
||||
bool? isWrongYear;
|
||||
Item[] filteredItems;
|
||||
int confidencePercent;
|
||||
DateTime minimumDateTime;
|
||||
int normalizedPixelPercentage;
|
||||
string deterministicHashCodeKey;
|
||||
@ -820,10 +819,11 @@ public partial class DlibDotNet
|
||||
break;
|
||||
if (face.FaceEncoding is null || face.Location is null || face.OutputResolution is null)
|
||||
continue;
|
||||
areaPermille = Shared.Models.Stateless.Methods.IMapping.GetAreaPermille(face.Location, face.OutputResolution);
|
||||
confidencePercent = Shared.Models.Stateless.Methods.ILocation.GetConfidencePercent(_Configuration.FaceConfidencePercent, _Configuration.RangeFaceConfidence, face.Location.Confidence);
|
||||
faceAreaPermille = Shared.Models.Stateless.Methods.IMapping.GetAreaPermille(_Configuration.FaceAreaPermille, face.Location, face.OutputResolution);
|
||||
normalizedPixelPercentage = Shared.Models.Stateless.Methods.ILocation.GetNormalizedPixelPercentage(face.Location, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, face.OutputResolution);
|
||||
deterministicHashCodeKey = Shared.Models.Stateless.Methods.IMapping.GetDeterministicHashCodeKey(item.Property.Id.Value, face.Location, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, face.OutputResolution);
|
||||
mappingFromLocation = new(areaPermille, face.Location.Confidence, deterministicHashCodeKey, normalizedPixelPercentage);
|
||||
mappingFromLocation = new(faceAreaPermille, confidencePercent, deterministicHashCodeKey, normalizedPixelPercentage);
|
||||
mapping = new(mappingFromItem, mappingFromLocation);
|
||||
face.SetMapping(mapping);
|
||||
collection.Add(face);
|
||||
@ -842,10 +842,10 @@ public partial class DlibDotNet
|
||||
(List<Item> filteredItems, Shared.Models.Face[] distinctFilteredFaces) = SetMappingThenGetDistinctFilteredFacesWithMapping(argZero, containers);
|
||||
Mapping[] mappingCollection = MapLogicSupport.GetSelectedMappingCollection(distinctFilteredFaces);
|
||||
MapLogicSupport mapLogicSupport = new(
|
||||
_Configuration.FaceDistanceAreaPermilleTolerance,
|
||||
_Configuration.FaceDistanceMinimumConfidence,
|
||||
_Configuration.FaceConfidencePercent,
|
||||
_Configuration.FaceDistancePermyriad,
|
||||
_Configuration.SortingDaysDeltaTolerance,
|
||||
_Configuration.RangeDaysDeltaTolerance,
|
||||
_Configuration.RangeFaceAreaPermilleTolerance,
|
||||
_Configuration.SortingMaximumPerFaceShouldBeHigh);
|
||||
MapLogic mapLogic = new(
|
||||
_AppSettings.MaxDegreeOfParallelism,
|
||||
@ -859,13 +859,11 @@ public partial class DlibDotNet
|
||||
mapLogicSupport);
|
||||
Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping = MapLogicSupport.GetIdToNormalizedPixelPercentageToFace(mappingCollection);
|
||||
mapLogic.CopyManualFiles(dFacesContentDirectory, idToNormalizedPixelPercentageToMapping);
|
||||
if (!_Configuration.SaveFaceDistancesForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.CopyNotMappedFaces(_Configuration.FaceDistanceAreaPermilleTolerance, dFacesContentDirectory, idToNormalizedPixelPercentageToMapping);
|
||||
if (_Configuration.SaveNotMappedForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.CopyNotMappedFaces(_Configuration.RangeFaceAreaPermilleTolerance, dFacesContentDirectory, idToNormalizedPixelPercentageToMapping);
|
||||
(Dictionary<long, int> personKeyToCount, int totalNotMapped) = mapLogic.AddToMapping(mappingCollection);
|
||||
if (_Configuration.SaveMappedForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, personKeyToCount, totalNotMapped);
|
||||
if (_Configuration.SaveNotMappedForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveNotMappedTicks();
|
||||
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveShortcuts(a2PeopleSingletonDirectory, personContainers, filteredItems, mappingCollection, personKeyToCount);
|
||||
if (_Configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions.Contains(outputResolution))
|
||||
@ -887,6 +885,8 @@ public partial class DlibDotNet
|
||||
if (totalNotMapped > 0)
|
||||
mapLogic.UpdateFromSortingContainersThenSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, useFiltersCounter, sortingContainers, totalNotMapped);
|
||||
}
|
||||
if (_Configuration.SaveNotMappedForOutputResolutions.Contains(outputResolution))
|
||||
mapLogic.SaveNotMappedTicks();
|
||||
}
|
||||
|
||||
private static Container? AreAllSameEndsWith(string argZero, Container[] containers)
|
||||
|
@ -17,11 +17,10 @@ public class Configuration
|
||||
[Display(Name = "Distance Move Unable to Match by 1 Tick"), Required] public bool? DistanceMoveUnableToMatch { get; set; }
|
||||
[Display(Name = "Distance Pixel Distance Tolerance"), Required] public int? DistancePixelDistanceTolerance { get; set; }
|
||||
[Display(Name = "Distance Rename to Match"), Required] public bool? DistanceRenameToMatch { get; set; }
|
||||
[Display(Name = "Face Area Permille Tolerance"), Required] public int? FaceDistanceAreaPermilleTolerance { get; set; }
|
||||
[Display(Name = "Face Area Permille"), Required] public int? FaceAreaPermille { get; set; }
|
||||
[Display(Name = "Face Distance Hidden Image Factor"), Required] public int? FaceDistanceHiddenImageFactor { get; set; }
|
||||
[Display(Name = "Location Minimum Confidence"), Required] public double? FaceDistanceMinimumConfidence { get; set; }
|
||||
[Display(Name = "Face Confidence Percent"), Required] public int? FaceConfidencePercent { get; set; }
|
||||
[Display(Name = "Face Distance Permyriad"), Required] public int? FaceDistancePermyriad { get; set; }
|
||||
[Display(Name = "Face Distance Tolerance"), Required] public double? FaceDistanceTolerance { get; set; }
|
||||
[Display(Name = "Force Face Last Write Time to Creation Time"), Required] public bool? ForceFaceLastWriteTimeToCreationTime { get; set; }
|
||||
[Display(Name = "Force Metadata Last Write Time to Creation Time"), Required] public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; }
|
||||
[Display(Name = "Force Resize Last Write Time to Creation Time"), Required] public bool? ForceResizeLastWriteTimeToCreationTime { get; set; }
|
||||
@ -31,7 +30,6 @@ public class Configuration
|
||||
[Display(Name = "Load Or Create Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Index"), Required] public bool? LoadOrCreateThenSaveIndex { get; set; }
|
||||
[Display(Name = "Location Confidence Factor"), Required] public int? LocationConfidenceFactor { get; set; }
|
||||
[Display(Name = "Location Digits"), Required] public int? LocationDigits { get; set; }
|
||||
[Display(Name = "Location Factor"), Required] public int? LocationFactor { get; set; }
|
||||
[Display(Name = "Mapped Max Index"), Required] public int? MappedMaxIndex { get; set; }
|
||||
@ -59,18 +57,21 @@ public class Configuration
|
||||
[Display(Name = "Properties Changed For Metadata"), Required] public bool? PropertiesChangedForMetadata { get; set; }
|
||||
[Display(Name = "Properties Changed For Resize"), Required] public bool? PropertiesChangedForResize { get; set; }
|
||||
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int[] RangeDaysDeltaTolerance { get; set; }
|
||||
[Display(Name = "Face Area Permille Tolerance"), Required] public int[] RangeFaceAreaPermilleTolerance { get; set; }
|
||||
[Display(Name = "Location Minimum Confidence"), Required] public double[] RangeFaceConfidence { get; set; }
|
||||
[Display(Name = "Face Distance Tolerance"), Required] public double[] RangeDistanceTolerance { get; set; }
|
||||
[Display(Name = "Retry Images Without a Face"), Required] public bool? RetryImagesWithoutAFace { get; set; }
|
||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||
[Display(Name = "Save Face Distances"), Required] public string[] SaveFaceDistancesForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Full Year Of Random Files"), Required] public bool? SaveFullYearOfRandomFiles { get; set; }
|
||||
[Display(Name = "Save Face Distances"), Required] public string[] SaveFaceDistancesForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Mapped"), Required] public string[] SaveMappedForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Not Mapped"), Required] public string[] SaveNotMappedForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Resized Images by Person Key Formatted"), Required] public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { get; set; }
|
||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
||||
[Display(Name = "SortingMaximumPerFaceShould be High"), Required] public int? SortingMaximumPerFaceShouldBeHigh { get; set; }
|
||||
[Display(Name = "Sorting Maximum Per Key"), Required] public int? SortingMaximumPerKey { get; set; }
|
||||
[Display(Name = "Sorting Minimum to use Sigma"), Required] public int? SortingMinimumToUseSigma { get; set; }
|
||||
@ -102,16 +103,14 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.DistancePixelDistanceTolerance));
|
||||
if (configuration.DistanceRenameToMatch is null)
|
||||
throw new NullReferenceException(nameof(configuration.DistanceRenameToMatch));
|
||||
if (configuration.FaceDistanceAreaPermilleTolerance is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceAreaPermilleTolerance));
|
||||
if (configuration.FaceAreaPermille is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceAreaPermille));
|
||||
if (configuration.FaceDistanceHiddenImageFactor is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceHiddenImageFactor));
|
||||
if (configuration.FaceDistanceMinimumConfidence is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceMinimumConfidence));
|
||||
if (configuration.FaceConfidencePercent is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceConfidencePercent));
|
||||
if (configuration.FaceDistancePermyriad is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistancePermyriad));
|
||||
if (configuration.FaceDistanceTolerance is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceTolerance));
|
||||
if (configuration.ForceFaceLastWriteTimeToCreationTime is null)
|
||||
throw new NullReferenceException(nameof(configuration.ForceFaceLastWriteTimeToCreationTime));
|
||||
if (configuration.ForceMetadataLastWriteTimeToCreationTime is null)
|
||||
@ -128,8 +127,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.LoadOrCreateThenSaveIndex is null)
|
||||
throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveIndex));
|
||||
if (configuration.LocationConfidenceFactor is null)
|
||||
throw new NullReferenceException(nameof(configuration.LocationConfidenceFactor));
|
||||
if (configuration.LocationDigits is null)
|
||||
throw new NullReferenceException(nameof(configuration.LocationDigits));
|
||||
if (configuration.LocationFactor is null)
|
||||
@ -172,20 +169,28 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.PropertiesChangedForMetadata));
|
||||
if (configuration.PropertiesChangedForResize is null)
|
||||
throw new NullReferenceException(nameof(configuration.PropertiesChangedForResize));
|
||||
if (configuration.RangeDaysDeltaTolerance is null || configuration.RangeDaysDeltaTolerance.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeDaysDeltaTolerance));
|
||||
if (configuration.RangeFaceAreaPermilleTolerance is null || configuration.RangeFaceAreaPermilleTolerance.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeFaceAreaPermilleTolerance));
|
||||
if (configuration.RangeFaceConfidence is null || configuration.RangeFaceConfidence.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeFaceConfidence));
|
||||
if (configuration.RangeDistanceTolerance is null || configuration.RangeDistanceTolerance.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeDistanceTolerance));
|
||||
if (configuration.RetryImagesWithoutAFace is null)
|
||||
throw new NullReferenceException(nameof(configuration.RetryImagesWithoutAFace));
|
||||
if (configuration.Reverse is null)
|
||||
throw new NullReferenceException(nameof(configuration.Reverse));
|
||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveFaceDistancesForOutputResolutions is null)
|
||||
configuration.SaveFaceDistancesForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveFaceLandmarkForOutputResolutions is null)
|
||||
configuration.SaveFaceLandmarkForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveFullYearOfRandomFiles is null)
|
||||
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
||||
if (configuration.SaveMappedForOutputResolutions is null)
|
||||
configuration.SaveMappedForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveNotMappedForOutputResolutions is null)
|
||||
configuration.SaveNotMappedForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveFullYearOfRandomFiles is null)
|
||||
throw new NullReferenceException(nameof(configuration.SaveFullYearOfRandomFiles));
|
||||
if (configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions is null)
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SaveResizedSubfiles is null)
|
||||
@ -196,8 +201,6 @@ public class Configuration
|
||||
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SkipSearch is null)
|
||||
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
||||
if (configuration.SortingDaysDeltaTolerance is null)
|
||||
throw new NullReferenceException(nameof(configuration.SortingDaysDeltaTolerance));
|
||||
if (configuration.SortingMaximumPerFaceShouldBeHigh is null)
|
||||
throw new NullReferenceException(nameof(configuration.SortingMaximumPerFaceShouldBeHigh));
|
||||
if (configuration.SortingMaximumPerKey is null)
|
||||
@ -208,7 +211,7 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
||||
if (configuration.ValidResolutions is null)
|
||||
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
||||
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
||||
_ = DateTime.Now.AddDays(-configuration.RangeDaysDeltaTolerance[1]);
|
||||
result = new(configuration.PropertyConfiguration,
|
||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||
configuration.CheckJsonForDistanceResults.Value,
|
||||
@ -217,11 +220,10 @@ public class Configuration
|
||||
configuration.DistanceMoveUnableToMatch.Value,
|
||||
configuration.DistancePixelDistanceTolerance.Value,
|
||||
configuration.DistanceRenameToMatch.Value,
|
||||
configuration.FaceDistanceAreaPermilleTolerance.Value,
|
||||
configuration.FaceAreaPermille.Value,
|
||||
configuration.FaceDistanceHiddenImageFactor.Value,
|
||||
configuration.FaceDistanceMinimumConfidence.Value,
|
||||
configuration.FaceConfidencePercent.Value,
|
||||
configuration.FaceDistancePermyriad.Value,
|
||||
configuration.FaceDistanceTolerance.Value,
|
||||
configuration.ForceFaceLastWriteTimeToCreationTime.Value,
|
||||
configuration.ForceMetadataLastWriteTimeToCreationTime.Value,
|
||||
configuration.ForceResizeLastWriteTimeToCreationTime.Value,
|
||||
@ -231,7 +233,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveIndex.Value,
|
||||
configuration.LocationConfidenceFactor.Value,
|
||||
configuration.LocationDigits.Value,
|
||||
configuration.LocationFactor.Value,
|
||||
configuration.MappedMaxIndex,
|
||||
@ -258,18 +259,21 @@ public class Configuration
|
||||
configuration.PropertiesChangedForIndex.Value,
|
||||
configuration.PropertiesChangedForMetadata.Value,
|
||||
configuration.PropertiesChangedForResize.Value,
|
||||
configuration.RangeDaysDeltaTolerance,
|
||||
configuration.RangeFaceAreaPermilleTolerance,
|
||||
configuration.RangeFaceConfidence,
|
||||
configuration.RangeDistanceTolerance,
|
||||
configuration.RetryImagesWithoutAFace.Value,
|
||||
configuration.Reverse.Value,
|
||||
configuration.SaveFaceDistancesForOutputResolutions,
|
||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||
configuration.SaveFullYearOfRandomFiles.Value,
|
||||
configuration.SaveFaceDistancesForOutputResolutions,
|
||||
configuration.SaveMappedForOutputResolutions,
|
||||
configuration.SaveNotMappedForOutputResolutions,
|
||||
configuration.SaveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
configuration.SaveResizedSubfiles.Value,
|
||||
configuration.SaveShortcutsForOutputResolutions,
|
||||
configuration.SkipSearch.Value,
|
||||
configuration.SortingDaysDeltaTolerance.Value,
|
||||
configuration.SortingMaximumPerFaceShouldBeHigh.Value,
|
||||
configuration.SortingMaximumPerKey.Value,
|
||||
configuration.SortingMinimumToUseSigma.Value,
|
||||
|
@ -16,11 +16,10 @@ public class Configuration
|
||||
public bool DistanceMoveUnableToMatch { init; get; }
|
||||
public int DistancePixelDistanceTolerance { init; get; }
|
||||
public bool DistanceRenameToMatch { init; get; }
|
||||
public int FaceDistanceAreaPermilleTolerance { init; get; }
|
||||
public int FaceAreaPermille { init; get; }
|
||||
public int FaceDistanceHiddenImageFactor { init; get; }
|
||||
public double FaceDistanceMinimumConfidence { init; get; }
|
||||
public int FaceConfidencePercent { init; get; }
|
||||
public int FaceDistancePermyriad { init; get; }
|
||||
public double FaceDistanceTolerance { init; get; }
|
||||
public bool ForceFaceLastWriteTimeToCreationTime { init; get; }
|
||||
public bool ForceMetadataLastWriteTimeToCreationTime { init; get; }
|
||||
public bool ForceResizeLastWriteTimeToCreationTime { init; get; }
|
||||
@ -30,7 +29,6 @@ public class Configuration
|
||||
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; }
|
||||
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; }
|
||||
public bool LoadOrCreateThenSaveIndex { init; get; }
|
||||
public int LocationConfidenceFactor { init; get; }
|
||||
public int LocationDigits { init; get; }
|
||||
public int LocationFactor { init; get; }
|
||||
public int? MappedMaxIndex { init; get; }
|
||||
@ -57,18 +55,21 @@ public class Configuration
|
||||
public bool PropertiesChangedForIndex { init; get; }
|
||||
public bool PropertiesChangedForMetadata { init; get; }
|
||||
public bool PropertiesChangedForResize { init; get; }
|
||||
public int[] RangeDaysDeltaTolerance { init; get; }
|
||||
public int[] RangeFaceAreaPermilleTolerance { init; get; }
|
||||
public double[] RangeFaceConfidence { init; get; }
|
||||
public double[] RangeDistanceTolerance { init; get; }
|
||||
public bool RetryImagesWithoutAFace { init; get; }
|
||||
public bool Reverse { init; get; }
|
||||
public string[] SaveFaceDistancesForOutputResolutions { init; get; }
|
||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||
public bool SaveFullYearOfRandomFiles { init; get; }
|
||||
public string[] SaveFaceDistancesForOutputResolutions { init; get; }
|
||||
public string[] SaveMappedForOutputResolutions { init; get; }
|
||||
public string[] SaveNotMappedForOutputResolutions { init; get; }
|
||||
public string[] SaveResizedImagesByPersonKeyFormattedForOutputResolutions { init; get; }
|
||||
public bool SaveResizedSubfiles { init; get; }
|
||||
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||
public bool SkipSearch { init; get; }
|
||||
public int SortingDaysDeltaTolerance { init; get; }
|
||||
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
|
||||
public int SortingMaximumPerKey { init; get; }
|
||||
public int SortingMinimumToUseSigma { init; get; }
|
||||
@ -84,11 +85,10 @@ public class Configuration
|
||||
bool distanceMoveUnableToMatch,
|
||||
int distancePixelDistanceTolerance,
|
||||
bool distanceRenameToMatch,
|
||||
int faceDistanceAreaPermilleTolerance,
|
||||
int faceAreaPermille,
|
||||
int faceDistanceHiddenImageFactor,
|
||||
double faceDistanceMinimumConfidence,
|
||||
int faceConfidencePercent,
|
||||
int faceDistancePermyriad,
|
||||
double faceDistanceTolerance,
|
||||
bool forceFaceLastWriteTimeToCreationTime,
|
||||
bool forceMetadataLastWriteTimeToCreationTime,
|
||||
bool forceResizeLastWriteTimeToCreationTime,
|
||||
@ -98,7 +98,6 @@ public class Configuration
|
||||
string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
bool loadOrCreateThenSaveIndex,
|
||||
int locationConfidenceFactor,
|
||||
int locationDigits,
|
||||
int locationFactor,
|
||||
int? mappedMaxIndex,
|
||||
@ -125,18 +124,21 @@ public class Configuration
|
||||
bool propertiesChangedForIndex,
|
||||
bool propertiesChangedForMetadata,
|
||||
bool propertiesChangedForResize,
|
||||
int[] rangeDaysDeltaTolerance,
|
||||
int[] rangeFaceAreaPermilleTolerance,
|
||||
double[] rangeFaceConfidence,
|
||||
double[] rangeDistanceTolerance,
|
||||
bool retryImagesWithoutAFace,
|
||||
bool reverse,
|
||||
string[] saveFaceDistancesForOutputResolutions,
|
||||
string[] saveFaceLandmarkForOutputResolutions,
|
||||
bool saveFullYearOfRandomFiles,
|
||||
string[] saveFaceDistancesForOutputResolutions,
|
||||
string[] saveMappedForOutputResolutions,
|
||||
string[] saveNotMappedForOutputResolutions,
|
||||
string[] saveResizedImagesByPersonKeyFormattedForOutputResolutions,
|
||||
bool saveResizedSubfiles,
|
||||
string[] saveShortcutsForOutputResolutions,
|
||||
bool skipSearch,
|
||||
int sortingDaysDeltaTolerance,
|
||||
int sortingMaximumPerFaceShouldBeHigh,
|
||||
int sortingMaximumPerKey,
|
||||
int sortingSigma,
|
||||
@ -151,11 +153,10 @@ public class Configuration
|
||||
DistanceMoveUnableToMatch = distanceMoveUnableToMatch;
|
||||
DistancePixelDistanceTolerance = distancePixelDistanceTolerance;
|
||||
DistanceRenameToMatch = distanceRenameToMatch;
|
||||
FaceDistanceAreaPermilleTolerance = faceDistanceAreaPermilleTolerance;
|
||||
FaceAreaPermille = faceAreaPermille;
|
||||
FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
|
||||
FaceDistanceMinimumConfidence = faceDistanceMinimumConfidence;
|
||||
FaceConfidencePercent = faceConfidencePercent;
|
||||
FaceDistancePermyriad = faceDistancePermyriad;
|
||||
FaceDistanceTolerance = faceDistanceTolerance;
|
||||
ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
|
||||
ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime;
|
||||
ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime;
|
||||
@ -165,7 +166,6 @@ public class Configuration
|
||||
LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex;
|
||||
LocationConfidenceFactor = locationConfidenceFactor;
|
||||
LocationDigits = locationDigits;
|
||||
LocationFactor = locationFactor;
|
||||
MappedMaxIndex = mappedMaxIndex;
|
||||
@ -192,18 +192,21 @@ public class Configuration
|
||||
PropertiesChangedForIndex = propertiesChangedForIndex;
|
||||
PropertiesChangedForMetadata = propertiesChangedForMetadata;
|
||||
PropertiesChangedForResize = propertiesChangedForResize;
|
||||
RangeDaysDeltaTolerance = rangeDaysDeltaTolerance;
|
||||
RangeFaceAreaPermilleTolerance = rangeFaceAreaPermilleTolerance;
|
||||
RangeFaceConfidence = rangeFaceConfidence;
|
||||
RangeDistanceTolerance = rangeDistanceTolerance;
|
||||
RetryImagesWithoutAFace = retryImagesWithoutAFace;
|
||||
Reverse = reverse;
|
||||
SaveFaceDistancesForOutputResolutions = saveFaceDistancesForOutputResolutions;
|
||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||
SaveFullYearOfRandomFiles = saveFullYearOfRandomFiles;
|
||||
SaveFaceDistancesForOutputResolutions = saveFaceDistancesForOutputResolutions;
|
||||
SaveMappedForOutputResolutions = saveMappedForOutputResolutions;
|
||||
SaveNotMappedForOutputResolutions = saveNotMappedForOutputResolutions;
|
||||
SaveResizedImagesByPersonKeyFormattedForOutputResolutions = saveResizedImagesByPersonKeyFormattedForOutputResolutions;
|
||||
SaveResizedSubfiles = saveResizedSubfiles;
|
||||
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||
SkipSearch = skipSearch;
|
||||
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||
SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
|
||||
SortingMaximumPerKey = sortingMaximumPerKey;
|
||||
SortingMinimumToUseSigma = sortingSigma;
|
||||
|
@ -58,18 +58,16 @@
|
||||
"DistanceMoveUnableToMatch": false,
|
||||
"DistancePixelDistanceTolerance": 1,
|
||||
"DistanceRenameToMatch": false,
|
||||
"FaceDistanceAreaPermilleTolerance": 7,
|
||||
"FaceAreaPermille": 1000,
|
||||
"FaceDistanceHiddenImageFactor": 2,
|
||||
"FaceDistanceMinimumConfidence": 0.8,
|
||||
"FaceConfidencePercent": 100,
|
||||
"FaceDistancePermyriad": 10000,
|
||||
"FaceDistanceTolerance": 0.25,
|
||||
"FileNameDirectorySeparator": ".Z.",
|
||||
"ForceFaceLastWriteTimeToCreationTime": false,
|
||||
"ForceMetadataLastWriteTimeToCreationTime": false,
|
||||
"ForcePropertyLastWriteTimeToCreationTime": false,
|
||||
"ForceResizeLastWriteTimeToCreationTime": false,
|
||||
"LoadOrCreateThenSaveIndex": false,
|
||||
"LocationConfidenceFactor": 2,
|
||||
"LocationDigits": 9,
|
||||
"LocationFactor": 10000,
|
||||
"MappedMaxIndex": 1034720,
|
||||
@ -111,8 +109,7 @@
|
||||
"SaveFullYearOfRandomFiles": true,
|
||||
"SaveResizedSubFiles": true,
|
||||
"SkipSearch": false,
|
||||
"SortingDaysDeltaTolerance": 700,
|
||||
"SortingMaximumPerFaceShouldBeHigh": 1000,
|
||||
"SortingMaximumPerFaceShouldBeHigh": 3000,
|
||||
"SortingMaximumPerKey": 7,
|
||||
"SortingMinimumToUseSigma": 10,
|
||||
"TestDistanceResults": true,
|
||||
@ -137,6 +134,26 @@
|
||||
"7680 x 4320"
|
||||
],
|
||||
"PropertyContentCollectionFiles": [],
|
||||
"RangeDaysDeltaTolerance": [
|
||||
0,
|
||||
700,
|
||||
123456
|
||||
],
|
||||
"RangeDistanceTolerance": [
|
||||
0,
|
||||
0.4,
|
||||
0.6
|
||||
],
|
||||
"RangeFaceAreaPermilleTolerance": [
|
||||
0,
|
||||
10,
|
||||
1000
|
||||
],
|
||||
"RangeFaceConfidence": [
|
||||
0.8,
|
||||
0.2,
|
||||
100
|
||||
],
|
||||
"SaveFaceLandmarkForOutputResolutions": [
|
||||
"176 x 176",
|
||||
"256 x 256"
|
||||
|
@ -58,18 +58,16 @@
|
||||
"DistanceMoveUnableToMatch": false,
|
||||
"DistancePixelDistanceTolerance": 1,
|
||||
"DistanceRenameToMatch": false,
|
||||
"FaceDistanceAreaPermilleTolerance": 250,
|
||||
"FaceAreaPermille": 1000,
|
||||
"FaceDistanceHiddenImageFactor": 2,
|
||||
"FaceDistanceMinimumConfidence": 0.8,
|
||||
"FaceConfidencePercent": 100,
|
||||
"FaceDistancePermyriad": 10000,
|
||||
"FaceDistanceTolerance": 0.25,
|
||||
"FileNameDirectorySeparator": ".Z.",
|
||||
"ForceFaceLastWriteTimeToCreationTime": false,
|
||||
"ForceMetadataLastWriteTimeToCreationTime": false,
|
||||
"ForcePropertyLastWriteTimeToCreationTime": false,
|
||||
"ForceResizeLastWriteTimeToCreationTime": false,
|
||||
"LoadOrCreateThenSaveIndex": false,
|
||||
"LocationConfidenceFactor": 2,
|
||||
"LocationDigits": 9,
|
||||
"LocationFactor": 10000,
|
||||
"MappedMaxIndex": 1034720,
|
||||
@ -109,8 +107,7 @@
|
||||
"SaveFullYearOfRandomFiles": true,
|
||||
"SaveResizedSubFiles": true,
|
||||
"SkipSearch": false,
|
||||
"SortingDaysDeltaTolerance": 700,
|
||||
"SortingMaximumPerFaceShouldBeHigh": 1000,
|
||||
"SortingMaximumPerFaceShouldBeHigh": 3000,
|
||||
"SortingMaximumPerKey": 7,
|
||||
"SortingMinimumToUseSigma": 10,
|
||||
"TestDistanceResults": true,
|
||||
@ -127,11 +124,31 @@
|
||||
"1920 x 1080"
|
||||
],
|
||||
"PropertyContentCollectionFiles": [],
|
||||
"RangeDaysDeltaTolerance": [
|
||||
0,
|
||||
700,
|
||||
123456
|
||||
],
|
||||
"RangeDistanceTolerance": [
|
||||
0,
|
||||
0.4,
|
||||
0.6
|
||||
],
|
||||
"RangeFaceAreaPermilleTolerance": [
|
||||
0,
|
||||
10,
|
||||
1000
|
||||
],
|
||||
"RangeFaceConfidence": [
|
||||
0.8,
|
||||
0.2,
|
||||
100
|
||||
],
|
||||
"SaveFaceDistancesForOutputResolutions": [],
|
||||
"SaveFaceLandmarkForOutputResolutions": [
|
||||
"176 x 176",
|
||||
"256 x 256"
|
||||
],
|
||||
"SaveFaceDistancesForOutputResolutions": [],
|
||||
"SaveMappedForOutputResolutions": [],
|
||||
"SaveNotMappedForOutputResolutions": [],
|
||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
||||
|
@ -58,18 +58,16 @@
|
||||
"DistanceMoveUnableToMatch": false,
|
||||
"DistancePixelDistanceTolerance": 1,
|
||||
"DistanceRenameToMatch": false,
|
||||
"FaceDistanceAreaPermilleTolerance": 250,
|
||||
"FaceAreaPermille": 1000,
|
||||
"FaceDistanceHiddenImageFactor": 2,
|
||||
"FaceDistanceMinimumConfidence": 0.8,
|
||||
"FaceConfidencePercent": 100,
|
||||
"FaceDistancePermyriad": 10000,
|
||||
"FaceDistanceTolerance": 0.25,
|
||||
"FileNameDirectorySeparator": ".Z.",
|
||||
"ForceFaceLastWriteTimeToCreationTime": false,
|
||||
"ForceMetadataLastWriteTimeToCreationTime": false,
|
||||
"ForcePropertyLastWriteTimeToCreationTime": false,
|
||||
"ForceResizeLastWriteTimeToCreationTime": false,
|
||||
"LoadOrCreateThenSaveIndex": false,
|
||||
"LocationConfidenceFactor": 2,
|
||||
"LocationDigits": 9,
|
||||
"LocationFactor": 10000,
|
||||
"MappedMaxIndex": 1034720,
|
||||
@ -109,8 +107,7 @@
|
||||
"SaveFullYearOfRandomFiles": true,
|
||||
"SaveResizedSubFiles": true,
|
||||
"SkipSearch": false,
|
||||
"SortingDaysDeltaTolerance": 700,
|
||||
"SortingMaximumPerFaceShouldBeHigh": 1000,
|
||||
"SortingMaximumPerFaceShouldBeHigh": 3000,
|
||||
"SortingMaximumPerKey": 7,
|
||||
"SortingMinimumToUseSigma": 10,
|
||||
"TestDistanceResults": true,
|
||||
@ -136,11 +133,31 @@
|
||||
"1920 x 1080"
|
||||
],
|
||||
"PropertyContentCollectionFiles": [],
|
||||
"RangeDaysDeltaTolerance": [
|
||||
0,
|
||||
700,
|
||||
123456
|
||||
],
|
||||
"RangeDistanceTolerance": [
|
||||
0,
|
||||
0.4,
|
||||
0.6
|
||||
],
|
||||
"RangeFaceAreaPermilleTolerance": [
|
||||
0,
|
||||
10,
|
||||
1000
|
||||
],
|
||||
"RangeFaceConfidence": [
|
||||
0.8,
|
||||
0.2,
|
||||
100
|
||||
],
|
||||
"SaveFaceDistancesForOutputResolutions": [],
|
||||
"SaveFaceLandmarkForOutputResolutions": [
|
||||
"176 x 176",
|
||||
"256 x 256"
|
||||
],
|
||||
"SaveFaceDistancesForOutputResolutions": [],
|
||||
"SaveMappedForOutputResolutions": [],
|
||||
"SaveNotMappedForOutputResolutions": [],
|
||||
"SaveResizedImagesByPersonKeyFormattedForOutputResolutions": [
|
||||
|
@ -6,25 +6,27 @@ namespace View_by_Distance.Map.Models;
|
||||
public class Configuration
|
||||
{
|
||||
|
||||
public int FaceConfidencePercent { init; get; }
|
||||
public int FaceDistancePermyriad { init; get; }
|
||||
public double FaceDistanceTolerance { init; get; }
|
||||
public string FacePartsFileNameExtension { init; get; }
|
||||
public string FacesFileNameExtension { init; get; }
|
||||
public string FacesHiddenFileNameExtension { init; get; }
|
||||
public string MappingDefaultName { init; get; }
|
||||
public int PersonBirthdayFirstYear { init; get; }
|
||||
public string PersonBirthdayFormat { init; get; }
|
||||
public int SortingDaysDeltaTolerance { init; get; }
|
||||
public int RangeDaysDeltaTolerance { init; get; }
|
||||
public double RangeDistanceTolerance { init; get; }
|
||||
public int SortingMaximumPerKey { init; get; }
|
||||
public int SortingMinimumToUseSigma { init; get; }
|
||||
public string FacesFileNameExtension { init; get; }
|
||||
public string FacePartsFileNameExtension { init; get; }
|
||||
public string FacesHiddenFileNameExtension { init; get; }
|
||||
|
||||
[JsonConstructor]
|
||||
public Configuration(int faceDistancePermyriad,
|
||||
double faceDistanceTolerance,
|
||||
public Configuration(int faceConfidencePercent,
|
||||
int faceDistancePermyriad,
|
||||
string mappingDefaultName,
|
||||
int personBirthdayFirstYear,
|
||||
string personBirthdayFormat,
|
||||
int sortingDaysDeltaTolerance,
|
||||
int[] rangeDaysDeltaTolerance,
|
||||
double[] rangeDistanceTolerance,
|
||||
int sortingMaximumPerKey,
|
||||
int sortingMinimumToUseSigma,
|
||||
string facesFileNameExtension,
|
||||
@ -34,12 +36,13 @@ public class Configuration
|
||||
MappingDefaultName = mappingDefaultName;
|
||||
PersonBirthdayFormat = personBirthdayFormat;
|
||||
SortingMaximumPerKey = sortingMaximumPerKey;
|
||||
FaceConfidencePercent = faceConfidencePercent;
|
||||
FaceDistancePermyriad = faceDistancePermyriad;
|
||||
FaceDistanceTolerance = faceDistanceTolerance;
|
||||
FacesFileNameExtension = facesFileNameExtension;
|
||||
PersonBirthdayFirstYear = personBirthdayFirstYear;
|
||||
RangeDistanceTolerance = rangeDistanceTolerance[1];
|
||||
SortingMinimumToUseSigma = sortingMinimumToUseSigma;
|
||||
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||
RangeDaysDeltaTolerance = rangeDaysDeltaTolerance[1];
|
||||
FacePartsFileNameExtension = facePartsFileNameExtension;
|
||||
FacesHiddenFileNameExtension = facesHiddenFileNameExtension;
|
||||
}
|
||||
|
@ -25,12 +25,14 @@ public class MapLogic
|
||||
private readonly int _MaxDegreeOfParallelism;
|
||||
private readonly Configuration? _Configuration;
|
||||
private readonly string _EDistanceContentTicksDirectory;
|
||||
private readonly Shared.Models.Methods.IMapLogicSupport? _MapLogicSupport;
|
||||
private readonly Shared.Models.Properties.IPropertyConfiguration _PropertyConfiguration;
|
||||
|
||||
public MapLogic(int maxDegreeOfParallelism, Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, long ticks, PersonContainer[] personContainers, string a2PeopleSingletonDirectory, string eDistanceContentDirectory, Mapping[] mappingCollection, Shared.Models.Methods.IMapLogicSupport? faceDistance)
|
||||
public MapLogic(int maxDegreeOfParallelism, Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, long ticks, PersonContainer[] personContainers, string a2PeopleSingletonDirectory, string eDistanceContentDirectory, Mapping[] mappingCollection, Shared.Models.Methods.IMapLogicSupport? mapLogicSupport)
|
||||
{
|
||||
_Ticks = ticks;
|
||||
_Configuration = configuration;
|
||||
_MapLogicSupport = mapLogicSupport;
|
||||
_Log = Serilog.Log.ForContext<MapLogic>();
|
||||
_PropertyConfiguration = propertyConfiguration;
|
||||
_MaxDegreeOfParallelism = maxDegreeOfParallelism;
|
||||
@ -59,7 +61,7 @@ public class MapLogic
|
||||
_ = Directory.CreateDirectory(eDistanceContentDirectory);
|
||||
if (!Directory.Exists(eDistanceContentTicksDirectory))
|
||||
_ = Directory.CreateDirectory(eDistanceContentTicksDirectory);
|
||||
if (configuration is not null && faceDistance is not null)
|
||||
if (configuration is not null && mapLogicSupport is not null)
|
||||
{
|
||||
List<PersonContainer> personContainerCollection = new(personContainers);
|
||||
Stateless.MapLogic.Set(propertyConfiguration,
|
||||
@ -69,7 +71,7 @@ public class MapLogic
|
||||
a2PeopleSingletonDirectory,
|
||||
eDistanceContentDirectory,
|
||||
mappingCollection,
|
||||
faceDistance,
|
||||
mapLogicSupport,
|
||||
personKeyToPersonContainer,
|
||||
personKeyToRanges,
|
||||
notMappedPersonContainers,
|
||||
@ -193,6 +195,8 @@ public class MapLogic
|
||||
if (File.Exists(checkFile))
|
||||
continue;
|
||||
File.Copy(sourceFile, checkFile);
|
||||
if (saveContainer.MakeAllHidden)
|
||||
File.SetAttributes(checkFile, FileAttributes.Hidden);
|
||||
if (saveContainer.HiddenFaceFileHolder is not null && saveContainer.HiddenFaceFileHolder.Exists)
|
||||
{
|
||||
sourceFile = saveContainer.HiddenFaceFileHolder.FullName;
|
||||
@ -206,7 +210,11 @@ public class MapLogic
|
||||
if (File.Exists(checkFile))
|
||||
continue;
|
||||
File.Copy(sourceFile, checkFile);
|
||||
if (saveContainer.MakeAllHidden)
|
||||
File.SetAttributes(checkFile, FileAttributes.Hidden);
|
||||
}
|
||||
if (updated is null)
|
||||
{
|
||||
foreach (SaveContainer saveContainer in saveContainers)
|
||||
{
|
||||
if (string.IsNullOrEmpty(saveContainer.Directory) || string.IsNullOrEmpty(saveContainer.CheckFile) || saveContainer.ResizedFileHolder is null || !saveContainer.ResizedFileHolder.Exists)
|
||||
@ -216,6 +224,9 @@ public class MapLogic
|
||||
if (File.Exists(checkFile))
|
||||
continue;
|
||||
File.Copy(sourceFile, checkFile);
|
||||
if (saveContainer.MakeAllHidden)
|
||||
File.SetAttributes(checkFile, FileAttributes.Hidden);
|
||||
}
|
||||
}
|
||||
foreach (SaveContainer saveContainer in saveContainers)
|
||||
{
|
||||
@ -226,6 +237,8 @@ public class MapLogic
|
||||
windowsShortcut = new() { Path = saveContainer.ResizedFileHolder.FullName };
|
||||
windowsShortcut.Save(saveContainer.ShortcutFile);
|
||||
windowsShortcut.Dispose();
|
||||
if (saveContainer.MakeAllHidden)
|
||||
File.SetAttributes(saveContainer.ShortcutFile, FileAttributes.Hidden);
|
||||
}
|
||||
catch (Exception)
|
||||
{ }
|
||||
@ -413,8 +426,13 @@ public class MapLogic
|
||||
|
||||
public void UpdateFromSortingContainersThenSaveContainers(string dFacesContentDirectory, string d2FacePartsContentDirectory, Mapping[] mappingCollection, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping, int? useFiltersCounter, SortingContainer[] sortingContainers, int totalNotMapped)
|
||||
{
|
||||
int updated = UpdateFromSortingContainers(sortingContainers);
|
||||
if (_MapLogicSupport is not null)
|
||||
{
|
||||
string counts = _MapLogicSupport.GetCounts();
|
||||
_ = Directory.CreateDirectory(Path.Combine(_EDistanceContentTicksDirectory, counts));
|
||||
}
|
||||
Dictionary<long, int> personKeyToCount = new();
|
||||
int updated = UpdateFromSortingContainers(sortingContainers);
|
||||
List<SaveContainer> saveContainers = GetSaveContainers(dFacesContentDirectory, d2FacePartsContentDirectory, mappingCollection, idToNormalizedPixelPercentageToMapping, personKeyToCount, useFiltersCounter, saveMapped: false);
|
||||
SaveContainers(totalNotMapped, updated, saveContainers);
|
||||
}
|
||||
@ -507,7 +525,7 @@ public class MapLogic
|
||||
else
|
||||
personKeysRangesCollection = GetPersonKeysRangesCollection(normalizedPixelPercentageToPersonContainers[faceDistanceLength.NormalizedPixelPercentage.Value]);
|
||||
}
|
||||
sorting = ISorting.Get(_Configuration.FaceDistancePermyriad, _Configuration.FaceDistanceTolerance, faceDistanceEncoding, faceDistanceLength, personKeysRangesCollection);
|
||||
sorting = ISorting.Get(_Configuration.FaceDistancePermyriad, _Configuration.RangeDistanceTolerance, faceDistanceEncoding, faceDistanceLength, personKeysRangesCollection);
|
||||
if (sorting.DistancePermyriad == 0)
|
||||
continue;
|
||||
if (sorting.Id == faceDistanceEncoding.Id)
|
||||
@ -968,7 +986,7 @@ public class MapLogic
|
||||
}
|
||||
}
|
||||
|
||||
private List<(string, FileHolder, string)> GetCollection(int faceDistanceAreaPermilleTolerance, string dFacesContentDirectory, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping)
|
||||
private List<(string, FileHolder, string)> GetCollection(string dFacesContentDirectory, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping)
|
||||
{
|
||||
if (_Configuration is null)
|
||||
throw new NullReferenceException(nameof(_Configuration));
|
||||
@ -988,8 +1006,6 @@ public class MapLogic
|
||||
foreach (KeyValuePair<int, Mapping> normalizedPixelPercentageAndMapping in keyValuePair.Value)
|
||||
{
|
||||
mapping = normalizedPixelPercentageAndMapping.Value;
|
||||
if (mapping.MappingFromLocation.AreaPermille < faceDistanceAreaPermilleTolerance)
|
||||
continue;
|
||||
if (normalizedPixelPercentageToPersonContainers is not null && normalizedPixelPercentageToPersonContainers.ContainsKey(mapping.MappingFromLocation.NormalizedPixelPercentage))
|
||||
continue;
|
||||
_ = _SkipCollection.TryGetValue(keyValuePair.Key, out normalizedPixelPercentages);
|
||||
@ -1008,11 +1024,11 @@ public class MapLogic
|
||||
return results;
|
||||
}
|
||||
|
||||
public void CopyNotMappedFaces(int faceDistanceAreaPermilleTolerance, string dFacesContentDirectory, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping)
|
||||
public void CopyNotMappedFaces(int[] rangeFaceAreaPermilleTolerance, string dFacesContentDirectory, Dictionary<int, Dictionary<int, Mapping>> idToNormalizedPixelPercentageToMapping)
|
||||
{
|
||||
if (_Configuration is null)
|
||||
throw new NullReferenceException(nameof(_Configuration));
|
||||
List<(string Directory, FileHolder FaceFileHolder, string CheckFile)> collection = GetCollection(faceDistanceAreaPermilleTolerance, dFacesContentDirectory, idToNormalizedPixelPercentageToMapping);
|
||||
List<(string Directory, FileHolder FaceFileHolder, string CheckFile)> collection = GetCollection(dFacesContentDirectory, idToNormalizedPixelPercentageToMapping);
|
||||
string[] directories = (from l in collection select l.Directory).Distinct().ToArray();
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
|
@ -451,7 +451,7 @@ internal abstract class MapLogic
|
||||
if (keyValuePair.Value.Count < configuration.SortingMinimumToUseSigma)
|
||||
{
|
||||
maximum = keyValuePair.Value.Max();
|
||||
personKeyToRanges.Add(keyValuePair.Key, new(new DateTime(minimum).AddDays(-configuration.SortingDaysDeltaTolerance).Ticks, minimum, maximum, new DateTime(maximum).AddDays(configuration.SortingDaysDeltaTolerance).Ticks));
|
||||
personKeyToRanges.Add(keyValuePair.Key, new(new DateTime(minimum).AddDays(-configuration.RangeDaysDeltaTolerance).Ticks, minimum, maximum, new DateTime(maximum).AddDays(configuration.RangeDaysDeltaTolerance).Ticks));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -570,7 +570,7 @@ internal abstract class MapLogic
|
||||
}
|
||||
}
|
||||
|
||||
internal static void Set(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, long ticks, List<PersonContainer> personContainers, string? a2PeopleContentDirectory, string eDistanceContentDirectory, Mapping[] mappingCollection, Shared.Models.Methods.IMapLogicSupport faceDistance, Dictionary<long, PersonContainer> personKeyToPersonContainer, Dictionary<long, (long LCL, long Minimum, long Maximum, long UCL)> personKeyToRanges, List<PersonContainer> notMappedPersonContainers, Dictionary<int, List<int>> skipCollection, Dictionary<int, Dictionary<int, PersonContainer[]>> idThenNormalizedPixelPercentageToPersonContainers)
|
||||
internal static void Set(Shared.Models.Properties.IPropertyConfiguration propertyConfiguration, Configuration? configuration, long ticks, List<PersonContainer> personContainers, string? a2PeopleContentDirectory, string eDistanceContentDirectory, Mapping[] mappingCollection, Shared.Models.Methods.IMapLogicSupport mapLogicSupport, Dictionary<long, PersonContainer> personKeyToPersonContainer, Dictionary<long, (long LCL, long Minimum, long Maximum, long UCL)> personKeyToRanges, List<PersonContainer> notMappedPersonContainers, Dictionary<int, List<int>> skipCollection, Dictionary<int, Dictionary<int, PersonContainer[]>> idThenNormalizedPixelPercentageToPersonContainers)
|
||||
{
|
||||
if (configuration is null)
|
||||
throw new NullReferenceException(nameof(configuration));
|
||||
@ -616,7 +616,7 @@ internal abstract class MapLogic
|
||||
notMappedPersonContainers.AddRange(GetNotMappedPersonContainers(configuration, personContainers, personKeyCollection));
|
||||
AppendToSkipCollection(skipCollection, idThenNormalizedPixelPercentageToPersonContainers, incorrectIdThenNormalizedPixelPercentageToPersonContainers);
|
||||
if (possiblyNewPersonDisplayDirectoryNamesAndPersonContainer.Any())
|
||||
faceDistance.SavePossiblyNewPersonContainers(propertyConfiguration, configuration.PersonBirthdayFormat, configuration.FacesFileNameExtension, a2PeopleContentDirectory, personKeyToPersonContainer, possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
|
||||
mapLogicSupport.SavePossiblyNewPersonContainers(propertyConfiguration, configuration.PersonBirthdayFormat, configuration.FacesFileNameExtension, a2PeopleContentDirectory, personKeyToPersonContainer, possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
|
||||
}
|
||||
|
||||
private static string GetMappingSegmentB(long ticks, PersonBirthday personBirthday, int? approximateYears, long minimumDateTimeTicks, bool? isWrongYear)
|
||||
@ -660,12 +660,8 @@ internal abstract class MapLogic
|
||||
internal static SaveContainer GetDebugSaveContainer(string directory, SortingContainer sortingContainer, Mapping mapping)
|
||||
{
|
||||
SaveContainer result;
|
||||
string checkFile = string.Empty;
|
||||
FileHolder? faceFileHolder = null;
|
||||
FileHolder? facePartsFileHolder = null;
|
||||
FileHolder? hiddenFaceFileHolder = null;
|
||||
string shortcutFile = Path.Combine(directory, $"{sortingContainer.Mapping.MappingFromLocation.DeterministicHashCodeKey}{sortingContainer.Mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}.debug.lnk");
|
||||
result = new(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, mapping.MappingFromItem.ResizedFileHolder, shortcutFile);
|
||||
result = new(directory, mapping.MappingFromItem.ResizedFileHolder, shortcutFile);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@ namespace View_by_Distance.Shared.Models;
|
||||
public record class FaceDistance : Properties.IFaceDistance
|
||||
{
|
||||
|
||||
public double? Confidence { init; get; }
|
||||
public int? ConfidencePercent { init; get; }
|
||||
public object? Encoding { init; get; }
|
||||
public int Id { init; get; }
|
||||
public bool? IsWrongYear { init; get; }
|
||||
@ -15,9 +15,9 @@ public record class FaceDistance : Properties.IFaceDistance
|
||||
public int? NormalizedPixelPercentage { init; get; }
|
||||
|
||||
[JsonConstructor]
|
||||
public FaceDistance(double? confidence, object? encoding, int id, bool? isWrongYear, double? length, DateTime? minimumDateTime, int? normalizedPixelPercentage)
|
||||
public FaceDistance(int? confidencePercent, object? encoding, int id, bool? isWrongYear, double? length, DateTime? minimumDateTime, int? normalizedPixelPercentage)
|
||||
{
|
||||
Confidence = confidence;
|
||||
ConfidencePercent = confidencePercent;
|
||||
Encoding = encoding;
|
||||
Id = id;
|
||||
IsWrongYear = isWrongYear;
|
||||
@ -26,12 +26,12 @@ public record class FaceDistance : Properties.IFaceDistance
|
||||
NormalizedPixelPercentage = normalizedPixelPercentage;
|
||||
}
|
||||
|
||||
public FaceDistance(double? confidence, object? encoding, int id, bool? isWrongYear, DateTime? minimumDateTime, int? normalizedPixelPercentage) :
|
||||
this(confidence, encoding, id, isWrongYear, null, minimumDateTime, normalizedPixelPercentage)
|
||||
public FaceDistance(int? confidencePercent, object? encoding, int id, bool? isWrongYear, DateTime? minimumDateTime, int? normalizedPixelPercentage) :
|
||||
this(confidencePercent, encoding, id, isWrongYear, null, minimumDateTime, normalizedPixelPercentage)
|
||||
{ }
|
||||
|
||||
public FaceDistance(FaceDistance faceDistance, double length) :
|
||||
this(faceDistance.Confidence, null, faceDistance.Id, faceDistance.IsWrongYear, length, faceDistance.MinimumDateTime, faceDistance.NormalizedPixelPercentage)
|
||||
this(faceDistance.ConfidencePercent, null, faceDistance.Id, faceDistance.IsWrongYear, length, faceDistance.MinimumDateTime, faceDistance.NormalizedPixelPercentage)
|
||||
{ }
|
||||
|
||||
public FaceDistance(object encoding) => Encoding = encoding;
|
||||
|
@ -35,16 +35,16 @@ public class MappingFromItem : Properties.IMappingFromItem
|
||||
public class MappingFromLocation : Properties.IMappingFromLocation
|
||||
{
|
||||
|
||||
public double AreaPermille { init; get; }
|
||||
public double Confidence { init; get; }
|
||||
public int AreaPermille { init; get; }
|
||||
public int ConfidencePercent { init; get; }
|
||||
public string DeterministicHashCodeKey { init; get; }
|
||||
public int NormalizedPixelPercentage { init; get; }
|
||||
|
||||
[JsonConstructor]
|
||||
public MappingFromLocation(int areaPermille, double confidence, string deterministicHashCodeKey, int normalizedPixelPercentage)
|
||||
public MappingFromLocation(int areaPermille, int confidencePercent, string deterministicHashCodeKey, int normalizedPixelPercentage)
|
||||
{
|
||||
AreaPermille = areaPermille;
|
||||
Confidence = confidence;
|
||||
ConfidencePercent = confidencePercent;
|
||||
DeterministicHashCodeKey = deterministicHashCodeKey;
|
||||
NormalizedPixelPercentage = normalizedPixelPercentage;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ namespace View_by_Distance.Shared.Models.Methods;
|
||||
public interface IMapLogicSupport
|
||||
{
|
||||
|
||||
string GetCounts();
|
||||
void SavePossiblyNewPersonContainers(Properties.IPropertyConfiguration propertyConfiguration, string personBirthdayFormat, string facesFileNameExtension, string? a2PeopleContentDirectory, Dictionary<long, PersonContainer> personKeyToPersonContainer, List<(string[], PersonContainer)> possiblyNewPersonDisplayDirectoryNamesAndPersonContainer);
|
||||
|
||||
}
|
@ -3,7 +3,7 @@ namespace View_by_Distance.Shared.Models.Properties;
|
||||
public interface IFaceDistance
|
||||
{
|
||||
|
||||
public double? Confidence { init; get; }
|
||||
public int? ConfidencePercent { init; get; }
|
||||
public object? Encoding { init; get; }
|
||||
public int Id { init; get; }
|
||||
public bool? IsWrongYear { init; get; }
|
||||
|
@ -15,8 +15,8 @@ public interface IMappingFromItem
|
||||
public interface IMappingFromLocation
|
||||
{
|
||||
|
||||
public double AreaPermille { init; get; }
|
||||
public double Confidence { init; get; }
|
||||
public int AreaPermille { init; get; }
|
||||
public int ConfidencePercent { init; get; }
|
||||
public string DeterministicHashCodeKey { init; get; }
|
||||
public int NormalizedPixelPercentage { init; get; }
|
||||
|
||||
|
@ -11,31 +11,41 @@ public class SaveContainer
|
||||
public FileHolder? FaceFileHolder { init; get; }
|
||||
public FileHolder? HiddenFaceFileHolder { init; get; }
|
||||
public FileHolder? FacePartsFileHolder { init; get; }
|
||||
public bool MakeAllHidden { init; get; }
|
||||
public FileHolder? ResizedFileHolder { init; get; }
|
||||
public string ShortcutFile { init; get; }
|
||||
|
||||
[JsonConstructor]
|
||||
public SaveContainer(string checkFile, string directory, FileHolder? faceFileHolder, FileHolder? hiddenFaceFileHolder, FileHolder? facePartsFileHolder, FileHolder? resizedFileHolder, string shortcutFile)
|
||||
public SaveContainer(string checkFile, string directory, FileHolder? faceFileHolder, FileHolder? hiddenFaceFileHolder, FileHolder? facePartsFileHolder, bool makeAllHidden, FileHolder? resizedFileHolder, string shortcutFile)
|
||||
{
|
||||
CheckFile = checkFile;
|
||||
Directory = directory;
|
||||
FaceFileHolder = faceFileHolder;
|
||||
HiddenFaceFileHolder = hiddenFaceFileHolder;
|
||||
FacePartsFileHolder = facePartsFileHolder;
|
||||
MakeAllHidden = makeAllHidden;
|
||||
ResizedFileHolder = resizedFileHolder;
|
||||
ShortcutFile = shortcutFile;
|
||||
}
|
||||
|
||||
public SaveContainer(string directory) :
|
||||
this(string.Empty, directory, null, null, null, null, string.Empty)
|
||||
this(string.Empty, directory, null, null, null, false, null, string.Empty)
|
||||
{ }
|
||||
|
||||
public SaveContainer(string directory, FileHolder? resizedFileHolder, string shortcutFile) :
|
||||
this(string.Empty, directory, null, null, null, true, resizedFileHolder, shortcutFile)
|
||||
{ }
|
||||
|
||||
public SaveContainer(string checkFile, string directory, FileHolder faceFileHolder) :
|
||||
this(checkFile, directory, faceFileHolder, null, null, null, string.Empty)
|
||||
this(checkFile, directory, faceFileHolder, null, null, false, null, string.Empty)
|
||||
{ }
|
||||
|
||||
public SaveContainer(FileHolder resizedFileHolder, string checkFile, string directory) :
|
||||
this(checkFile, directory, null, null, null, resizedFileHolder, string.Empty)
|
||||
this(checkFile, directory, null, null, null, false, resizedFileHolder, string.Empty)
|
||||
{ }
|
||||
|
||||
public SaveContainer(string checkFile, string directory, FileHolder? faceFileHolder, FileHolder? hiddenFaceFileHolder, FileHolder? facePartsFileHolder, FileHolder? resizedFileHolder, string shortcutFile) :
|
||||
this(checkFile, directory, faceFileHolder, hiddenFaceFileHolder, facePartsFileHolder, false, resizedFileHolder, shortcutFile)
|
||||
{ }
|
||||
|
||||
public override string ToString()
|
||||
|
@ -8,6 +8,11 @@ public interface ILocation
|
||||
static string GetLeftPadded(int locationDigits, string value) =>
|
||||
Location.GetLeftPadded(locationDigits, value);
|
||||
|
||||
int TestStatic_GetConfidencePercent(int faceConfidencePercent, double[] rangeFaceConfidence, double confidence) =>
|
||||
GetConfidencePercent(faceConfidencePercent, rangeFaceConfidence, confidence);
|
||||
static int GetConfidencePercent(int faceConfidencePercent, double[] rangeFaceConfidence, double confidence) =>
|
||||
Location.GetConfidencePercent(faceConfidencePercent, rangeFaceConfidence, confidence);
|
||||
|
||||
string TestStatic_GetLeftPadded(int locationDigits, int value) =>
|
||||
GetLeftPadded(locationDigits, value);
|
||||
static string GetLeftPadded(int locationDigits, int value) =>
|
||||
|
@ -8,20 +8,20 @@ public interface IMapping
|
||||
static (string?, string?, string?, bool?) GetSegments(string facesFileNameExtension, string fileName)
|
||||
=> Mapping.GetSegments(facesFileNameExtension, fileName);
|
||||
|
||||
int TestStatic_GetAreaPermille(int height, Models.Location location, int width)
|
||||
=> GetAreaPermille(height, location, width);
|
||||
static int GetAreaPermille(int height, Models.Location location, int width)
|
||||
=> Mapping.GetAreaPermille(location.Bottom, height, location.Left, location.Right, location.Top, width);
|
||||
int TestStatic_GetAreaPermille(int faceAreaPermille, int height, Models.Location location, int width)
|
||||
=> GetAreaPermille(faceAreaPermille, height, location, width);
|
||||
static int GetAreaPermille(int faceAreaPermille, int height, Models.Location location, int width)
|
||||
=> Mapping.GetAreaPermille(faceAreaPermille, location.Bottom, height, location.Left, location.Right, location.Top, width);
|
||||
|
||||
int TestStatic_GetAreaPermille(int bottom, int height, int left, int right, int top, int width)
|
||||
=> GetAreaPermille(bottom, height, left, right, top, width);
|
||||
static int GetAreaPermille(int bottom, int height, int left, int right, int top, int width)
|
||||
=> Mapping.GetAreaPermille(bottom, height, left, right, top, width);
|
||||
int TestStatic_GetAreaPermille(int faceAreaPermille, int bottom, int height, int left, int right, int top, int width)
|
||||
=> GetAreaPermille(faceAreaPermille, bottom, height, left, right, top, width);
|
||||
static int GetAreaPermille(int faceAreaPermille, int bottom, int height, int left, int right, int top, int width)
|
||||
=> Mapping.GetAreaPermille(faceAreaPermille, bottom, height, left, right, top, width);
|
||||
|
||||
int TestStatic_GetAreaPermille(Models.Location location, OutputResolution outputResolution)
|
||||
=> GetAreaPermille(location, outputResolution);
|
||||
static int GetAreaPermille(Models.Location location, OutputResolution outputResolution)
|
||||
=> Mapping.GetAreaPermille(location.Bottom, outputResolution.Height, location.Left, location.Right, location.Top, outputResolution.Width);
|
||||
int TestStatic_GetAreaPermille(int faceAreaPermille, Models.Location location, OutputResolution outputResolution)
|
||||
=> GetAreaPermille(faceAreaPermille, location, outputResolution);
|
||||
static int GetAreaPermille(int faceAreaPermille, Models.Location location, OutputResolution outputResolution)
|
||||
=> Mapping.GetAreaPermille(faceAreaPermille, location.Bottom, outputResolution.Height, location.Left, location.Right, location.Top, outputResolution.Width);
|
||||
|
||||
string TestStatic_GetDeterministicHashCodeKey(int id, Models.Location location, int locationDigits, int locationFactor, OutputResolution outputResolution)
|
||||
=> GetDeterministicHashCodeKey(id, location, locationDigits, locationFactor, outputResolution);
|
||||
|
@ -8,9 +8,9 @@ public interface ISorting
|
||||
static Models.Sorting[] Sort(List<Models.Sorting> collection) =>
|
||||
(from l in collection orderby l.WithinRange, l.DistancePermyriad, l.DaysDelta select l).ToArray();
|
||||
|
||||
Models.Sorting TestStatic_Get(int faceDistancePermyriad, double faceDistanceTolerance, Models.FaceDistance faceDistanceEncoding, Models.FaceDistance faceDistanceLength, List<(long lcl, long minimum, long maximum, long ucl)> personKeysRangesCollection) =>
|
||||
Get(faceDistancePermyriad, faceDistanceTolerance, faceDistanceEncoding, faceDistanceLength, personKeysRangesCollection);
|
||||
static Models.Sorting Get(int faceDistancePermyriad, double faceDistanceTolerance, Models.FaceDistance faceDistanceEncoding, Models.FaceDistance faceDistanceLength, List<(long lcl, long minimum, long maximum, long ucl)> personKeysRangesCollection) =>
|
||||
Sorting.Get(faceDistancePermyriad, faceDistanceTolerance, faceDistanceEncoding, faceDistanceLength, personKeysRangesCollection);
|
||||
Models.Sorting TestStatic_Get(int faceDistancePermyriad, double rangeDistanceTolerance, Models.FaceDistance faceDistanceEncoding, Models.FaceDistance faceDistanceLength, List<(long lcl, long minimum, long maximum, long ucl)> personKeysRangesCollection) =>
|
||||
Get(faceDistancePermyriad, rangeDistanceTolerance, faceDistanceEncoding, faceDistanceLength, personKeysRangesCollection);
|
||||
static Models.Sorting Get(int faceDistancePermyriad, double rangeDistanceTolerance, Models.FaceDistance faceDistanceEncoding, Models.FaceDistance faceDistanceLength, List<(long lcl, long minimum, long maximum, long ucl)> personKeysRangesCollection) =>
|
||||
Sorting.Get(faceDistancePermyriad, rangeDistanceTolerance, faceDistanceEncoding, faceDistanceLength, personKeysRangesCollection);
|
||||
|
||||
}
|
@ -111,4 +111,9 @@ internal abstract class Location
|
||||
return new(x, y);
|
||||
}
|
||||
|
||||
internal static int GetConfidencePercent(int faceConfidencePercent, double[] rangeFaceConfidence, double confidence)
|
||||
{
|
||||
int result = (int)(confidence / rangeFaceConfidence[1] * faceConfidencePercent);
|
||||
return result;
|
||||
}
|
||||
}
|
@ -74,12 +74,12 @@ internal abstract class Mapping
|
||||
return new(id, normalizedPixelPercentage, mappingCollection);
|
||||
}
|
||||
|
||||
internal static int GetAreaPermille(int bottom, int height, int left, int right, int top, int width)
|
||||
internal static int GetAreaPermille(int faceAreaPermille, int bottom, int height, int left, int right, int top, int width)
|
||||
{
|
||||
int result;
|
||||
double area = width * height;
|
||||
double locationArea = (right - left) * (bottom - top);
|
||||
result = (int)Math.Round(locationArea / area * 1000, 0);
|
||||
result = (int)Math.Round(locationArea / area * faceAreaPermille, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@ namespace View_by_Distance.Shared.Models.Stateless.Methods;
|
||||
internal abstract class Sorting
|
||||
{
|
||||
|
||||
internal static Models.Sorting Get(int faceDistancePermyriad, double faceDistanceTolerance, Models.FaceDistance faceDistanceEncoding, Models.FaceDistance faceDistanceLength, List<(long lcl, long minimum, long maximum, long ucl)> personKeysRangesCollection)
|
||||
internal static Models.Sorting Get(int faceDistancePermyriad, double rangeDistanceTolerance, Models.FaceDistance faceDistanceEncoding, Models.FaceDistance faceDistanceLength, List<(long lcl, long minimum, long maximum, long ucl)> personKeysRangesCollection)
|
||||
{
|
||||
Models.Sorting result;
|
||||
if (faceDistanceLength.Length is null)
|
||||
@ -17,7 +17,7 @@ internal abstract class Sorting
|
||||
TimeSpan timeSpan = new(faceDistanceLength.MinimumDateTime.Value.Ticks - ticks);
|
||||
bool older = timeSpan.TotalMilliseconds < 0;
|
||||
int daysDelta = (int)Math.Round(Math.Abs(timeSpan.TotalDays), 0);
|
||||
int distancePermyriad = (int)(faceDistanceLength.Length.Value / faceDistanceTolerance * faceDistancePermyriad);
|
||||
int distancePermyriad = (int)(faceDistanceLength.Length.Value / rangeDistanceTolerance * faceDistancePermyriad);
|
||||
if (!personKeysRangesCollection.Any())
|
||||
withinRanges.Add(0);
|
||||
else
|
||||
|
@ -23,7 +23,6 @@ public class Configuration
|
||||
[Display(Name = "Load Or Create Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Index"), Required] public bool? LoadOrCreateThenSaveIndex { get; set; }
|
||||
[Display(Name = "Location Confidence Factor"), Required] public int? LocationConfidenceFactor { get; set; }
|
||||
[Display(Name = "Mapped Max Index"), Required] public int? MappedMaxIndex { get; set; }
|
||||
[Display(Name = "Mixed Year Relative Paths"), Required] public string[] MixedYearRelativePaths { get; set; }
|
||||
[Display(Name = "Model Directory"), Required] public string ModelDirectory { get; set; }
|
||||
@ -88,8 +87,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.LoadOrCreateThenSaveIndex is null)
|
||||
throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveIndex));
|
||||
if (configuration.LocationConfidenceFactor is null)
|
||||
throw new NullReferenceException(nameof(configuration.LocationConfidenceFactor));
|
||||
if (configuration.MixedYearRelativePaths is null)
|
||||
throw new NullReferenceException(nameof(configuration.MixedYearRelativePaths));
|
||||
if (configuration.NumberOfJitters is null)
|
||||
@ -148,7 +145,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveIndex.Value,
|
||||
configuration.LocationConfidenceFactor.Value,
|
||||
configuration.MappedMaxIndex,
|
||||
configuration.MixedYearRelativePaths,
|
||||
configuration.ModelDirectory,
|
||||
|
@ -22,7 +22,6 @@ public class Configuration
|
||||
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; }
|
||||
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; }
|
||||
public bool LoadOrCreateThenSaveIndex { init; get; }
|
||||
public int LocationConfidenceFactor { init; get; }
|
||||
public int? MappedMaxIndex { init; get; }
|
||||
public string[] MixedYearRelativePaths { init; get; }
|
||||
public string ModelDirectory { init; get; }
|
||||
@ -66,7 +65,6 @@ public class Configuration
|
||||
string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
bool loadOrCreateThenSaveIndex,
|
||||
int locationConfidenceFactor,
|
||||
int? mappedMaxIndex,
|
||||
string[] mixedYearRelativePaths,
|
||||
string modelDirectory,
|
||||
@ -109,7 +107,6 @@ public class Configuration
|
||||
LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex;
|
||||
LocationConfidenceFactor = locationConfidenceFactor;
|
||||
MappedMaxIndex = mappedMaxIndex;
|
||||
MixedYearRelativePaths = mixedYearRelativePaths;
|
||||
ModelDirectory = modelDirectory;
|
||||
|
@ -206,6 +206,7 @@ public class UnitTestCalculations
|
||||
[TestMethod]
|
||||
public void TestAreaPermille()
|
||||
{
|
||||
int faceAreaPermille=1000;
|
||||
Location location;
|
||||
double confidence = 0.1D;
|
||||
int areaPermille, left, top, right, bottom, width, height;
|
||||
@ -215,7 +216,7 @@ public class UnitTestCalculations
|
||||
bottom = 100;
|
||||
width = 100;
|
||||
height = 100;
|
||||
areaPermille = IMapping.GetAreaPermille(bottom, height, left, right, top, width);
|
||||
areaPermille = IMapping.GetAreaPermille(faceAreaPermille, bottom, height, left, right, top, width);
|
||||
Assert.IsTrue(areaPermille == 1000);
|
||||
left = 0;
|
||||
right = 50;
|
||||
@ -224,7 +225,7 @@ public class UnitTestCalculations
|
||||
width = 100;
|
||||
height = 100;
|
||||
location = new(bottom, confidence, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width, 1);
|
||||
areaPermille = IMapping.GetAreaPermille(height, location, width);
|
||||
areaPermille = IMapping.GetAreaPermille(faceAreaPermille, height, location, width);
|
||||
Assert.IsTrue(areaPermille == 250);
|
||||
left = 0;
|
||||
right = 25;
|
||||
@ -234,7 +235,7 @@ public class UnitTestCalculations
|
||||
height = 100;
|
||||
location = new(bottom, confidence, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width, 1);
|
||||
OutputResolution outputResolution = new(height, 0, width);
|
||||
areaPermille = IMapping.GetAreaPermille(location, outputResolution);
|
||||
areaPermille = IMapping.GetAreaPermille(faceAreaPermille, location, outputResolution);
|
||||
Assert.IsTrue(areaPermille == 62);
|
||||
}
|
||||
|
||||
@ -541,4 +542,29 @@ public class UnitTestCalculations
|
||||
Assert.IsNotNull(lines);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestGetConfidencePercent()
|
||||
{
|
||||
int faceConfidencePercent = 100;
|
||||
double minimum, target, maximum, value, check;
|
||||
minimum = 0.8f;
|
||||
target = 0.8f;
|
||||
maximum = int.MaxValue;
|
||||
value = 0f;
|
||||
check = ILocation.GetConfidencePercent(faceConfidencePercent, new double[] { minimum, target, maximum }, value);
|
||||
Assert.IsTrue(check == 0);
|
||||
target = 0.8f;
|
||||
value = 0.4f;
|
||||
check = ILocation.GetConfidencePercent(faceConfidencePercent, new double[] { minimum, target, maximum }, value);
|
||||
Assert.IsTrue(check == 50);
|
||||
target = 0.8f;
|
||||
value = 0.8f;
|
||||
check = ILocation.GetConfidencePercent(faceConfidencePercent, new double[] { minimum, target, maximum }, value);
|
||||
Assert.IsTrue(check == 100);
|
||||
target = 0.8f;
|
||||
value = 1.6f;
|
||||
check = ILocation.GetConfidencePercent(faceConfidencePercent, new double[] { minimum, target, maximum }, value);
|
||||
Assert.IsTrue(check == 200);
|
||||
}
|
||||
|
||||
}
|
@ -17,11 +17,9 @@ public class Configuration
|
||||
[Display(Name = "Distance Move Unable to Match by 1 Tick"), Required] public bool? DistanceMoveUnableToMatch { get; set; }
|
||||
[Display(Name = "Distance Pixel Distance Tolerance"), Required] public int? DistancePixelDistanceTolerance { get; set; }
|
||||
[Display(Name = "Distance Rename to Match"), Required] public bool? DistanceRenameToMatch { get; set; }
|
||||
[Display(Name = "Face Area Permille Tolerance"), Required] public int? FaceDistanceAreaPermilleTolerance { get; set; }
|
||||
[Display(Name = "Face Distance Hidden Image Factor"), Required] public int? FaceDistanceHiddenImageFactor { get; set; }
|
||||
[Display(Name = "Location Minimum Confidence"), Required] public double? FaceDistanceMinimumConfidence { get; set; }
|
||||
[Display(Name = "Face Confidence Percent"), Required] public int? FaceConfidencePercent { get; set; }
|
||||
[Display(Name = "Face Distance Permyriad"), Required] public int? FaceDistancePermyriad { get; set; }
|
||||
[Display(Name = "Face Distance Tolerance"), Required] public double? FaceDistanceTolerance { get; set; }
|
||||
[Display(Name = "Force Face Last Write Time to Creation Time"), Required] public bool? ForceFaceLastWriteTimeToCreationTime { get; set; }
|
||||
[Display(Name = "Force Metadata Last Write Time to Creation Time"), Required] public bool? ForceMetadataLastWriteTimeToCreationTime { get; set; }
|
||||
[Display(Name = "Force Resize Last Write Time to Creation Time"), Required] public bool? ForceResizeLastWriteTimeToCreationTime { get; set; }
|
||||
@ -31,7 +29,6 @@ public class Configuration
|
||||
[Display(Name = "Load Or Create Then Save Distance Results"), Required] public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Image Faces Results"), Required] public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Load Or Create Then Save Index"), Required] public bool? LoadOrCreateThenSaveIndex { get; set; }
|
||||
[Display(Name = "Location Confidence Factor"), Required] public int? LocationConfidenceFactor { get; set; }
|
||||
[Display(Name = "Location Digits"), Required] public int? LocationDigits { get; set; }
|
||||
[Display(Name = "Location Factor"), Required] public int? LocationFactor { get; set; }
|
||||
[Display(Name = "Mapped Max Index"), Required] public int? MappedMaxIndex { get; set; }
|
||||
@ -59,6 +56,10 @@ public class Configuration
|
||||
[Display(Name = "Properties Changed For Metadata"), Required] public bool? PropertiesChangedForMetadata { get; set; }
|
||||
[Display(Name = "Properties Changed For Resize"), Required] public bool? PropertiesChangedForResize { get; set; }
|
||||
[Display(Name = "Property Configuration"), Required] public Property.Models.Configuration PropertyConfiguration { get; set; }
|
||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int[] RangeDaysDeltaTolerance { get; set; }
|
||||
[Display(Name = "Face Area Permille Tolerance"), Required] public int[] RangeFaceAreaPermilleTolerance { get; set; }
|
||||
[Display(Name = "Location Minimum Confidence"), Required] public double[] RangeFaceConfidence { get; set; }
|
||||
[Display(Name = "Face Distance Tolerance"), Required] public double[] RangeDistanceTolerance { get; set; }
|
||||
[Display(Name = "Retry Images Without a Face"), Required] public bool? RetryImagesWithoutAFace { get; set; }
|
||||
[Display(Name = "Reverse"), Required] public bool? Reverse { get; set; }
|
||||
[Display(Name = "Save Face Landmark For Output Resolutions"), Required] public string[] SaveFaceLandmarkForOutputResolutions { get; set; }
|
||||
@ -67,7 +68,6 @@ public class Configuration
|
||||
[Display(Name = "Save Resized Subfiles"), Required] public bool? SaveResizedSubfiles { get; set; }
|
||||
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
|
||||
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { get; set; }
|
||||
[Display(Name = "Sorting Days Delta Tolerance"), Required] public int? SortingDaysDeltaTolerance { get; set; }
|
||||
[Display(Name = "SortingMaximumPerFaceShould be High"), Required] public int? SortingMaximumPerFaceShouldBeHigh { get; set; }
|
||||
[Display(Name = "Sorting Maximum Per Key"), Required] public int? SortingMaximumPerKey { get; set; }
|
||||
[Display(Name = "Sorting Minimum to use Sigma"), Required] public int? SortingMinimumToUseSigma { get; set; }
|
||||
@ -99,16 +99,12 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.DistancePixelDistanceTolerance));
|
||||
if (configuration.DistanceRenameToMatch is null)
|
||||
throw new NullReferenceException(nameof(configuration.DistanceRenameToMatch));
|
||||
if (configuration.FaceDistanceAreaPermilleTolerance is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceAreaPermilleTolerance));
|
||||
if (configuration.FaceDistanceHiddenImageFactor is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceHiddenImageFactor));
|
||||
if (configuration.FaceDistanceMinimumConfidence is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceMinimumConfidence));
|
||||
if (configuration.FaceConfidencePercent is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceConfidencePercent));
|
||||
if (configuration.FaceDistancePermyriad is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistancePermyriad));
|
||||
if (configuration.FaceDistanceTolerance is null)
|
||||
throw new NullReferenceException(nameof(configuration.FaceDistanceTolerance));
|
||||
if (configuration.ForceFaceLastWriteTimeToCreationTime is null)
|
||||
throw new NullReferenceException(nameof(configuration.ForceFaceLastWriteTimeToCreationTime));
|
||||
if (configuration.ForceMetadataLastWriteTimeToCreationTime is null)
|
||||
@ -125,8 +121,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.LoadOrCreateThenSaveIndex is null)
|
||||
throw new NullReferenceException(nameof(configuration.LoadOrCreateThenSaveIndex));
|
||||
if (configuration.LocationConfidenceFactor is null)
|
||||
throw new NullReferenceException(nameof(configuration.LocationConfidenceFactor));
|
||||
if (configuration.LocationDigits is null)
|
||||
throw new NullReferenceException(nameof(configuration.LocationDigits));
|
||||
if (configuration.LocationFactor is null)
|
||||
@ -169,6 +163,14 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.PropertiesChangedForMetadata));
|
||||
if (configuration.PropertiesChangedForResize is null)
|
||||
throw new NullReferenceException(nameof(configuration.PropertiesChangedForResize));
|
||||
if (configuration.RangeDaysDeltaTolerance is null || configuration.RangeDaysDeltaTolerance.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeDaysDeltaTolerance));
|
||||
if (configuration.RangeFaceAreaPermilleTolerance is null || configuration.RangeFaceAreaPermilleTolerance.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeFaceAreaPermilleTolerance));
|
||||
if (configuration.RangeFaceConfidence is null || configuration.RangeFaceConfidence.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeFaceConfidence));
|
||||
if (configuration.RangeDistanceTolerance is null || configuration.RangeDistanceTolerance.Length != 3)
|
||||
throw new NullReferenceException(nameof(configuration.RangeDistanceTolerance));
|
||||
if (configuration.RetryImagesWithoutAFace is null)
|
||||
throw new NullReferenceException(nameof(configuration.RetryImagesWithoutAFace));
|
||||
if (configuration.Reverse is null)
|
||||
@ -185,8 +187,6 @@ public class Configuration
|
||||
configuration.SaveShortcutsForOutputResolutions = Array.Empty<string>();
|
||||
if (configuration.SkipSearch is null)
|
||||
throw new NullReferenceException(nameof(configuration.SkipSearch));
|
||||
if (configuration.SortingDaysDeltaTolerance is null)
|
||||
throw new NullReferenceException(nameof(configuration.SortingDaysDeltaTolerance));
|
||||
if (configuration.SortingMaximumPerFaceShouldBeHigh is null)
|
||||
throw new NullReferenceException(nameof(configuration.SortingMaximumPerFaceShouldBeHigh));
|
||||
if (configuration.SortingMaximumPerKey is null)
|
||||
@ -197,7 +197,7 @@ public class Configuration
|
||||
throw new NullReferenceException(nameof(configuration.TestDistanceResults));
|
||||
if (configuration.ValidResolutions is null)
|
||||
throw new NullReferenceException(nameof(configuration.ValidResolutions));
|
||||
_ = DateTime.Now.AddDays(-configuration.SortingDaysDeltaTolerance.Value);
|
||||
_ = DateTime.Now.AddDays(-configuration.RangeDaysDeltaTolerance[1]);
|
||||
result = new(configuration.PropertyConfiguration,
|
||||
configuration.CheckDFaceAndUpWriteDates.Value,
|
||||
configuration.CheckJsonForDistanceResults.Value,
|
||||
@ -206,11 +206,9 @@ public class Configuration
|
||||
configuration.DistanceMoveUnableToMatch.Value,
|
||||
configuration.DistancePixelDistanceTolerance.Value,
|
||||
configuration.DistanceRenameToMatch.Value,
|
||||
configuration.FaceDistanceAreaPermilleTolerance.Value,
|
||||
configuration.FaceDistanceHiddenImageFactor.Value,
|
||||
configuration.FaceDistanceMinimumConfidence.Value,
|
||||
configuration.FaceConfidencePercent.Value,
|
||||
configuration.FaceDistancePermyriad.Value,
|
||||
configuration.FaceDistanceTolerance.Value,
|
||||
configuration.ForceFaceLastWriteTimeToCreationTime.Value,
|
||||
configuration.ForceMetadataLastWriteTimeToCreationTime.Value,
|
||||
configuration.ForceResizeLastWriteTimeToCreationTime.Value,
|
||||
@ -220,7 +218,6 @@ public class Configuration
|
||||
configuration.LoadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
configuration.LoadOrCreateThenSaveIndex.Value,
|
||||
configuration.LocationConfidenceFactor.Value,
|
||||
configuration.LocationDigits.Value,
|
||||
configuration.LocationFactor.Value,
|
||||
configuration.MappedMaxIndex,
|
||||
@ -247,6 +244,10 @@ public class Configuration
|
||||
configuration.PropertiesChangedForIndex.Value,
|
||||
configuration.PropertiesChangedForMetadata.Value,
|
||||
configuration.PropertiesChangedForResize.Value,
|
||||
configuration.RangeDaysDeltaTolerance,
|
||||
configuration.RangeFaceAreaPermilleTolerance,
|
||||
configuration.RangeFaceConfidence,
|
||||
configuration.RangeDistanceTolerance,
|
||||
configuration.RetryImagesWithoutAFace.Value,
|
||||
configuration.Reverse.Value,
|
||||
configuration.SaveFaceLandmarkForOutputResolutions,
|
||||
@ -255,7 +256,6 @@ public class Configuration
|
||||
configuration.SaveResizedSubfiles.Value,
|
||||
configuration.SaveShortcutsForOutputResolutions,
|
||||
configuration.SkipSearch.Value,
|
||||
configuration.SortingDaysDeltaTolerance.Value,
|
||||
configuration.SortingMaximumPerFaceShouldBeHigh.Value,
|
||||
configuration.SortingMaximumPerKey.Value,
|
||||
configuration.SortingMinimumToUseSigma.Value,
|
||||
|
@ -16,11 +16,9 @@ public class Configuration
|
||||
public bool DistanceMoveUnableToMatch { init; get; }
|
||||
public int DistancePixelDistanceTolerance { init; get; }
|
||||
public bool DistanceRenameToMatch { init; get; }
|
||||
public int FaceDistanceAreaPermilleTolerance { init; get; }
|
||||
public int FaceDistanceHiddenImageFactor { init; get; }
|
||||
public double FaceDistanceMinimumConfidence { init; get; }
|
||||
public int FaceConfidencePercent { init; get; }
|
||||
public int FaceDistancePermyriad { init; get; }
|
||||
public double FaceDistanceTolerance { init; get; }
|
||||
public bool ForceFaceLastWriteTimeToCreationTime { init; get; }
|
||||
public bool ForceMetadataLastWriteTimeToCreationTime { init; get; }
|
||||
public bool ForceResizeLastWriteTimeToCreationTime { init; get; }
|
||||
@ -30,7 +28,6 @@ public class Configuration
|
||||
public string[] LoadOrCreateThenSaveDistanceResultsForOutputResolutions { init; get; }
|
||||
public string[] LoadOrCreateThenSaveImageFacesResultsForOutputResolutions { init; get; }
|
||||
public bool LoadOrCreateThenSaveIndex { init; get; }
|
||||
public int LocationConfidenceFactor { init; get; }
|
||||
public int LocationDigits { init; get; }
|
||||
public int LocationFactor { init; get; }
|
||||
public int? MappedMaxIndex { init; get; }
|
||||
@ -57,6 +54,10 @@ public class Configuration
|
||||
public bool PropertiesChangedForIndex { init; get; }
|
||||
public bool PropertiesChangedForMetadata { init; get; }
|
||||
public bool PropertiesChangedForResize { init; get; }
|
||||
public int[] RangeDaysDeltaTolerance { init; get; }
|
||||
public int[] RangeFaceAreaPermilleTolerance { init; get; }
|
||||
public double[] RangeFaceConfidence { init; get; }
|
||||
public double[] RangeDistanceTolerance { init; get; }
|
||||
public bool RetryImagesWithoutAFace { init; get; }
|
||||
public bool Reverse { init; get; }
|
||||
public string[] SaveFaceLandmarkForOutputResolutions { init; get; }
|
||||
@ -65,7 +66,6 @@ public class Configuration
|
||||
public bool SaveResizedSubfiles { init; get; }
|
||||
public string[] SaveShortcutsForOutputResolutions { init; get; }
|
||||
public bool SkipSearch { init; get; }
|
||||
public int SortingDaysDeltaTolerance { init; get; }
|
||||
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
|
||||
public int SortingMaximumPerKey { init; get; }
|
||||
public int SortingMinimumToUseSigma { init; get; }
|
||||
@ -81,11 +81,9 @@ public class Configuration
|
||||
bool distanceMoveUnableToMatch,
|
||||
int distancePixelDistanceTolerance,
|
||||
bool distanceRenameToMatch,
|
||||
int faceDistanceAreaPermilleTolerance,
|
||||
int faceDistanceHiddenImageFactor,
|
||||
double faceDistanceMinimumConfidence,
|
||||
int faceConfidencePercent,
|
||||
int faceDistancePermyriad,
|
||||
double faceDistanceTolerance,
|
||||
bool forceFaceLastWriteTimeToCreationTime,
|
||||
bool forceMetadataLastWriteTimeToCreationTime,
|
||||
bool forceResizeLastWriteTimeToCreationTime,
|
||||
@ -95,7 +93,6 @@ public class Configuration
|
||||
string[] loadOrCreateThenSaveDistanceResultsForOutputResolutions,
|
||||
string[] loadOrCreateThenSaveImageFacesResultsForOutputResolutions,
|
||||
bool loadOrCreateThenSaveIndex,
|
||||
int locationConfidenceFactor,
|
||||
int locationDigits,
|
||||
int locationFactor,
|
||||
int? mappedMaxIndex,
|
||||
@ -122,6 +119,10 @@ public class Configuration
|
||||
bool propertiesChangedForIndex,
|
||||
bool propertiesChangedForMetadata,
|
||||
bool propertiesChangedForResize,
|
||||
int[] rangeDaysDeltaTolerance,
|
||||
int[] rangeFaceAreaPermilleTolerance,
|
||||
double[] rangeFaceConfidence,
|
||||
double[] rangeDistanceTolerance,
|
||||
bool retryImagesWithoutAFace,
|
||||
bool reverse,
|
||||
string[] saveFaceLandmarkForOutputResolutions,
|
||||
@ -130,7 +131,6 @@ public class Configuration
|
||||
bool saveResizedSubfiles,
|
||||
string[] saveShortcutsForOutputResolutions,
|
||||
bool skipSearch,
|
||||
int sortingDaysDeltaTolerance,
|
||||
int sortingMaximumPerFaceShouldBeHigh,
|
||||
int sortingMaximumPerKey,
|
||||
int sortingSigma,
|
||||
@ -145,11 +145,9 @@ public class Configuration
|
||||
DistanceMoveUnableToMatch = distanceMoveUnableToMatch;
|
||||
DistancePixelDistanceTolerance = distancePixelDistanceTolerance;
|
||||
DistanceRenameToMatch = distanceRenameToMatch;
|
||||
FaceDistanceAreaPermilleTolerance = faceDistanceAreaPermilleTolerance;
|
||||
FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
|
||||
FaceDistanceMinimumConfidence = faceDistanceMinimumConfidence;
|
||||
FaceConfidencePercent = faceConfidencePercent;
|
||||
FaceDistancePermyriad = faceDistancePermyriad;
|
||||
FaceDistanceTolerance = faceDistanceTolerance;
|
||||
ForceFaceLastWriteTimeToCreationTime = forceFaceLastWriteTimeToCreationTime;
|
||||
ForceMetadataLastWriteTimeToCreationTime = forceMetadataLastWriteTimeToCreationTime;
|
||||
ForceResizeLastWriteTimeToCreationTime = forceResizeLastWriteTimeToCreationTime;
|
||||
@ -159,7 +157,6 @@ public class Configuration
|
||||
LoadOrCreateThenSaveDistanceResultsForOutputResolutions = loadOrCreateThenSaveDistanceResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveImageFacesResultsForOutputResolutions = loadOrCreateThenSaveImageFacesResultsForOutputResolutions;
|
||||
LoadOrCreateThenSaveIndex = loadOrCreateThenSaveIndex;
|
||||
LocationConfidenceFactor = locationConfidenceFactor;
|
||||
LocationDigits = locationDigits;
|
||||
LocationFactor = locationFactor;
|
||||
MappedMaxIndex = mappedMaxIndex;
|
||||
@ -186,6 +183,10 @@ public class Configuration
|
||||
PropertiesChangedForIndex = propertiesChangedForIndex;
|
||||
PropertiesChangedForMetadata = propertiesChangedForMetadata;
|
||||
PropertiesChangedForResize = propertiesChangedForResize;
|
||||
RangeDaysDeltaTolerance = rangeDaysDeltaTolerance;
|
||||
RangeFaceAreaPermilleTolerance = rangeFaceAreaPermilleTolerance;
|
||||
RangeFaceConfidence = rangeFaceConfidence;
|
||||
RangeDistanceTolerance = rangeDistanceTolerance;
|
||||
RetryImagesWithoutAFace = retryImagesWithoutAFace;
|
||||
Reverse = reverse;
|
||||
SaveFaceLandmarkForOutputResolutions = saveFaceLandmarkForOutputResolutions;
|
||||
@ -194,7 +195,6 @@ public class Configuration
|
||||
SaveResizedSubfiles = saveResizedSubfiles;
|
||||
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
|
||||
SkipSearch = skipSearch;
|
||||
SortingDaysDeltaTolerance = sortingDaysDeltaTolerance;
|
||||
SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
|
||||
SortingMaximumPerKey = sortingMaximumPerKey;
|
||||
SortingMinimumToUseSigma = sortingSigma;
|
||||
|
@ -141,7 +141,7 @@ public class UnitTestFace
|
||||
const int ToleranceAfterFactor = 600;
|
||||
Assert.IsTrue(DistanceDigits == 3);
|
||||
Assert.IsTrue(DistanceFactor == 1000);
|
||||
Assert.IsTrue(_Configuration.FaceDistanceTolerance == 0.6d);
|
||||
Assert.IsTrue(_Configuration.RangeDistanceTolerance[1] == 0.6d);
|
||||
Assert.IsTrue(ToleranceAfterFactor == 600);
|
||||
double valueA = 0.00001d;
|
||||
int checkA = (int)(Math.Round(valueA, _Configuration.LocationDigits) * _Configuration.LocationFactor);
|
||||
@ -150,7 +150,7 @@ public class UnitTestFace
|
||||
int checkB = (int)(Math.Round(valueB, _Configuration.LocationDigits) * _Configuration.LocationFactor);
|
||||
Assert.IsTrue(checkB == 100);
|
||||
Assert.IsTrue(checkB > checkA);
|
||||
int checkC = (int)(_Configuration.FaceDistanceTolerance * DistanceFactor);
|
||||
int checkC = (int)(_Configuration.RangeDistanceTolerance[1] * DistanceFactor);
|
||||
Assert.IsTrue(checkC == ToleranceAfterFactor);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user