Distance bug fix

This commit is contained in:
2022-09-29 13:13:41 -07:00
parent 152612bacb
commit 4568d3fbc6
21 changed files with 933 additions and 879 deletions

View File

@ -71,10 +71,10 @@ public partial class DlibDotNet
_Index = new(configuration);
_Random = new(configuration);
_Rename = new(configuration);
_MapConfiguration = Get(configuration);
_Distance = new(
configuration.DistanceMoveUnableToMatch,
configuration.DistancePixelDistanceTolerance,
configuration.DistanceRenameToMatch,
configuration.FaceDistanceAreaPermilleTolerance,
configuration.FaceDistanceMinimumConfidence,
configuration.FaceDistancePermyriad,
@ -116,6 +116,11 @@ public partial class DlibDotNet
predictorModel,
configuration.PropertiesChangedForFaces);
}
{
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetGifLowQuality();
_FaceParts = new D2_FaceParts(imageCodecInfo, encoderParameters, filenameExtension, configuration.CheckDFaceAndUpWriteDates, configuration.OverrideForFaceLandmarkImages);
}
_MapConfiguration = Get(configuration, _Faces.FileNameExtension, _Faces.HiddenFileNameExtension, _FaceParts.FileNameExtension);
if (_FirstRun || !_ArgZeroIsConfigurationRootDirectory)
personContainers = Array.Empty<PersonContainer>();
else
@ -139,10 +144,6 @@ public partial class DlibDotNet
e2Navigate.Navigate(propertyConfiguration, model, predictorModel, configuration.OutputResolutions[0]);
_Log.Information(propertyConfiguration.RootDirectory);
}
{
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetGifLowQuality();
_FaceParts = new D2_FaceParts(imageCodecInfo, encoderParameters, filenameExtension, configuration.CheckDFaceAndUpWriteDates, configuration.OverrideForFaceLandmarkImages);
}
{
(ImageCodecInfo imageCodecInfo, EncoderParameters encoderParameters, string filenameExtension) = C_Resize.GetTuple(
configuration.OutputExtension,
@ -323,28 +324,18 @@ public partial class DlibDotNet
throw new Exception("Configuration has to match interface!");
}
private static Map.Models.Configuration Get(Models.Configuration configuration)
private static Map.Models.Configuration Get(Models.Configuration configuration, string facesFileNameExtension, string facesHiddenFileNameExtension, string facePartsFileNameExtension)
{
Map.Models.Configuration result = new(
configuration.FaceDistanceAreaPermilleTolerance,
configuration.FaceDistanceHiddenImageFactor,
configuration.FaceDistancePermyriad,
configuration.FaceDistanceMinimumConfidence,
configuration.FaceDistanceTolerance,
configuration.MapLogicSigma,
configuration.MappingDefaultName,
configuration.DistanceMoveUnableToMatch,
configuration.MappingSaveNotMapped,
configuration.MappingSaveMapped,
configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForAddToMapping,
configuration.MappingUseDeterministicHashCodeUnknownFaceKeyValuePairsForSaveMapping,
configuration.PersonBirthdayFirstYear,
configuration.PersonBirthdayFormat,
configuration.PersonKeyFormat,
configuration.SortingDaysDeltaTolerance,
configuration.SortingMaximumPerFaceShouldBeHigh,
configuration.SortingMaximumPerKey,
configuration.SortingSigma);
facesFileNameExtension,
facesHiddenFileNameExtension,
facePartsFileNameExtension);
return result;
}
@ -431,7 +422,7 @@ public partial class DlibDotNet
if (item.Property?.Id is not null
&& faces.Any(l => l.FaceEncoding is not null && l.Location is not null && l.OutputResolution is not null)
&& idToMappedFaceFilesCollection.TryGetValue(item.Property.Id.Value, out List<(string, int)>? collection))
_ = _Distance.GetUnableToMatchCountAndRenameMatches(_Faces.FileNameExtension, eDistanceContentDirectory, mappingFromItem, faces, collection);
_Distance.LookForMatchFacesAndPossiblyRename(_Faces.FileNameExtension, eDistanceContentDirectory, mappingFromItem, faces, collection);
if (_Configuration.SaveFaceLandmarkForOutputResolutions.Contains(outputResolution))
{
throw new NotImplementedException();
@ -905,15 +896,16 @@ public partial class DlibDotNet
_AppSettings.MaxDegreeOfParallelism,
_Configuration.PropertyConfiguration,
_MapConfiguration,
_Faces.FileNameExtension,
_Faces.HiddenFileNameExtension,
_FaceParts.FileNameExtension,
ticks,
personContainers,
a2PeopleSingletonDirectory,
eDistanceContentDirectory,
distinctFilteredFaces,
_Distance);
mapLogic.CopyManualFiles(dFacesContentDirectory, distinctFilteredFaces);
int totalNotMapped = mapLogic.AddToMapping(distinctFilteredFaces);
if (_Configuration.MappingSaveMapped)
mapLogic.SaveMapped(dFacesContentDirectory, d2FacePartsContentDirectory, distinctFilteredFaces, totalNotMapped);
sortingContainers = _Distance.SetFaceMappingSortingCollectionThenGetSortingContainers(_AppSettings.MaxDegreeOfParallelism, ticks, mapLogic, selectedFilteredFaces, useFiltersCounter);
if (!sortingContainers.Any())
{
@ -925,11 +917,9 @@ public partial class DlibDotNet
}
}
E_Distance.SaveFaceDistances(_Configuration.PropertyConfiguration, sortingContainers);
int totalNotMapped = mapLogic.AddToMapping(distinctFilteredFaces);
if (totalNotMapped > 0)
mapLogic.ForceSingleImageThenSaveMapping(dFacesContentDirectory, d2FacePartsContentDirectory, distinctFilteredFaces, sortingContainers, useFiltersCounter, totalNotMapped);
mapLogic.CopyManualFiles(dFacesContentDirectory, distinctFilteredFaces);
if (_MapConfiguration.MappingSaveNotMapped)
mapLogic.ForceSingleImageThenSaveSorting(dFacesContentDirectory, d2FacePartsContentDirectory, distinctFilteredFaces, sortingContainers, useFiltersCounter, totalNotMapped);
if (_Configuration.MappingSaveNotMapped)
mapLogic.SaveNotMappedTicks();
if (_Configuration.SaveShortcutsForOutputResolutions.Contains(outputResolution))
mapLogic.SaveShortcuts(_Configuration.JuliePhares, distinctFilteredFaces);
@ -1042,8 +1032,9 @@ public partial class DlibDotNet
propertyRoot = Property.Models.Stateless.IResult.GetResultsGroupDirectory(_Configuration.PropertyConfiguration, nameof(A_Property), create: false);
propertyLogic = new(_AppSettings.MaxDegreeOfParallelism, _Configuration.PropertyConfiguration, _Resize.FileNameExtension, _Configuration.Reverse, model, predictorModel);
}
Dictionary<int, List<(string, int)>> idToMappedFaceFilesCollection = Map.Models.Stateless.Methods.IMapLogic.DeleteEmptyDirectoriesAndGetMappedFaceFiles(_MapConfiguration, _Faces.FileNameExtension, ticks, a2PeopleContentDirectory, eDistanceContentDirectory, personContainers);
Dictionary<int, List<(string, int)>> idToMappedFaceFilesCollection = Map.Models.Stateless.Methods.IMapLogic.DeleteEmptyDirectoriesAndGetMappedFaceFiles(_MapConfiguration, ticks, a2PeopleContentDirectory, eDistanceContentDirectory, personContainers);
FullDoWork(argZero, model, predictorModel, propertyRoot, ticks, propertyLogic, t, containers, eDistanceContentDirectory, idToMappedFaceFilesCollection);
_Distance.Clear();
foreach (string outputResolution in _Configuration.OutputResolutions)
{
if (_FirstRun || container is not null)

View File

@ -16,6 +16,7 @@ public class Configuration
[Display(Name = "Distance Factor"), Required] public int? DistanceFactor { get; set; }
[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; }
@ -33,7 +34,6 @@ public class Configuration
[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 = "Map Logic Sigma"), Required] public int? MapLogicSigma { get; set; }
[Display(Name = "Mapped Max Index"), Required] public int? MappedMaxIndex { get; set; }
[Display(Name = "Mapping Default Name"), Required] public string MappingDefaultName { get; set; }
[Display(Name = "Mapping Save Mapped"), Required] public bool? MappingSaveMapped { get; set; }
@ -100,6 +100,8 @@ public class Configuration
throw new NullReferenceException(nameof(configuration.DistanceMoveUnableToMatch));
if (configuration.DistancePixelDistanceTolerance is null)
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)
@ -132,8 +134,6 @@ public class Configuration
throw new NullReferenceException(nameof(configuration.LocationDigits));
if (configuration.LocationFactor is null)
throw new NullReferenceException(nameof(configuration.LocationFactor));
if (configuration.MapLogicSigma is null)
throw new NullReferenceException(nameof(configuration.MapLogicSigma));
if (configuration.MappingDefaultName is null)
throw new NullReferenceException(nameof(configuration.MappingDefaultName));
if (configuration.MappingSaveNotMapped is null)
@ -223,6 +223,7 @@ public class Configuration
configuration.DistanceFactor.Value,
configuration.DistanceMoveUnableToMatch.Value,
configuration.DistancePixelDistanceTolerance.Value,
configuration.DistanceRenameToMatch.Value,
configuration.FaceDistanceAreaPermilleTolerance.Value,
configuration.FaceDistanceHiddenImageFactor.Value,
configuration.FaceDistanceMinimumConfidence.Value,
@ -240,7 +241,6 @@ public class Configuration
configuration.LocationConfidenceFactor.Value,
configuration.LocationDigits.Value,
configuration.LocationFactor.Value,
configuration.MapLogicSigma.Value,
configuration.MappedMaxIndex,
configuration.MappingDefaultName,
configuration.MappingSaveNotMapped.Value,

View File

@ -15,6 +15,7 @@ public class Configuration
public int DistanceFactor { init; get; }
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; }
@ -32,7 +33,6 @@ public class Configuration
public int LocationConfidenceFactor { init; get; }
public int LocationDigits { init; get; }
public int LocationFactor { init; get; }
public int MapLogicSigma { init; get; }
public int? MappedMaxIndex { init; get; }
public string MappingDefaultName { init; get; }
public bool MappingSaveNotMapped { init; get; }
@ -83,6 +83,7 @@ public class Configuration
int distanceFactor,
bool distanceMoveUnableToMatch,
int distancePixelDistanceTolerance,
bool distanceRenameToMatch,
int faceDistanceAreaPermilleTolerance,
int faceDistanceHiddenImageFactor,
double faceDistanceMinimumConfidence,
@ -100,7 +101,6 @@ public class Configuration
int locationConfidenceFactor,
int locationDigits,
int locationFactor,
int mapLogicSigma,
int? mappedMaxIndex,
string mappingDefaultName,
bool mappingSaveNotMapped,
@ -150,6 +150,7 @@ public class Configuration
DistanceFactor = distanceFactor;
DistanceMoveUnableToMatch = distanceMoveUnableToMatch;
DistancePixelDistanceTolerance = distancePixelDistanceTolerance;
DistanceRenameToMatch = distanceRenameToMatch;
FaceDistanceAreaPermilleTolerance = faceDistanceAreaPermilleTolerance;
FaceDistanceHiddenImageFactor = faceDistanceHiddenImageFactor;
FaceDistanceMinimumConfidence = faceDistanceMinimumConfidence;
@ -167,7 +168,6 @@ public class Configuration
LocationConfidenceFactor = locationConfidenceFactor;
LocationDigits = locationDigits;
LocationFactor = locationFactor;
MapLogicSigma = mapLogicSigma;
MappedMaxIndex = mappedMaxIndex;
MappingDefaultName = mappingDefaultName;
MappingSaveNotMapped = mappingSaveNotMapped;

View File

@ -57,7 +57,8 @@
"DistanceFactor": 8,
"DistanceMoveUnableToMatch": false,
"DistancePixelDistanceTolerance": 1,
"FaceDistanceAreaPermilleTolerance": 250,
"DistanceRenameToMatch": false,
"FaceDistanceAreaPermilleTolerance": 7,
"FaceDistanceHiddenImageFactor": 2,
"FaceDistanceMinimumConfidence": 0.8,
"FaceDistancePermyriad": 10000,
@ -71,7 +72,6 @@
"LocationConfidenceFactor": 2,
"LocationDigits": 9,
"LocationFactor": 10000,
"MapLogicSigma": 3,
"MappedMaxIndex": 1034720,
"MappingDefaultName": "John Doe~25",
"MappingSaveFaceEncoding": false,
@ -118,7 +118,7 @@
"SkipSearch": false,
"SortingDaysDeltaTolerance": 700,
"SortingMaximumPerFaceShouldBeHigh": 1000,
"SortingMaximumPerKey": 27,
"SortingMaximumPerKey": 7,
"SortingSigma": 3,
"TestDistanceResults": true,
"WriteBitmapDataBytes": false,

View File

@ -57,6 +57,7 @@
"DistanceFactor": 8,
"DistanceMoveUnableToMatch": false,
"DistancePixelDistanceTolerance": 1,
"DistanceRenameToMatch": false,
"FaceDistanceAreaPermilleTolerance": 250,
"FaceDistanceHiddenImageFactor": 2,
"FaceDistanceMinimumConfidence": 0.8,
@ -71,7 +72,6 @@
"LocationConfidenceFactor": 2,
"LocationDigits": 9,
"LocationFactor": 10000,
"MapLogicSigma": 3,
"MappedMaxIndex": 1034720,
"MappingDefaultName": "John Doe~25",
"MappingSaveFaceEncoding": false,
@ -116,7 +116,7 @@
"SkipSearch": false,
"SortingDaysDeltaTolerance": 700,
"SortingMaximumPerFaceShouldBeHigh": 1000,
"SortingMaximumPerKey": 27,
"SortingMaximumPerKey": 7,
"SortingSigma": 3,
"TestDistanceResults": true,
"WriteBitmapDataBytes": false,

View File

@ -57,6 +57,7 @@
"DistanceFactor": 8,
"DistanceMoveUnableToMatch": false,
"DistancePixelDistanceTolerance": 1,
"DistanceRenameToMatch": false,
"FaceDistanceAreaPermilleTolerance": 250,
"FaceDistanceHiddenImageFactor": 2,
"FaceDistanceMinimumConfidence": 0.8,
@ -71,7 +72,6 @@
"LocationConfidenceFactor": 2,
"LocationDigits": 9,
"LocationFactor": 10000,
"MapLogicSigma": 3,
"MappedMaxIndex": 1034720,
"MappingDefaultName": "John Doe~25",
"MappingSaveFaceEncoding": false,
@ -116,7 +116,7 @@
"SkipSearch": false,
"SortingDaysDeltaTolerance": 700,
"SortingMaximumPerFaceShouldBeHigh": 1000,
"SortingMaximumPerKey": 27,
"SortingMaximumPerKey": 7,
"SortingSigma": 3,
"TestDistanceResults": true,
"WriteBitmapDataBytes": false,