SkipOlderThanDays

This commit is contained in:
Mike Phares 2023-03-04 18:12:42 -07:00
parent 4484345d9f
commit d38c558128
6 changed files with 17 additions and 6 deletions

View File

@ -473,13 +473,15 @@ public partial class E_Distance
return faceDistanceEncodings;
}
public static FaceDistanceContainer[] FilteredFaceDistanceContainers(Map.Models.MapLogic mapLogic, FaceDistanceContainer[] faceDistanceContainers, DistanceLimits distanceLimits)
public static FaceDistanceContainer[] FilteredFaceDistanceContainers(Map.Models.MapLogic mapLogic, FaceDistanceContainer[] faceDistanceContainers, long? skipOlderThan, DistanceLimits distanceLimits)
{
List<FaceDistanceContainer> results = new();
foreach (FaceDistanceContainer faceDistanceContainer in faceDistanceContainers)
{
if (faceDistanceContainer.FaceDistance is null || faceDistanceContainer.Face.Mapping?.MappingFromLocation is null)
throw new NotSupportedException();
if (skipOlderThan is not null && (faceDistanceContainer.FaceDistance.MinimumDateTime is null || faceDistanceContainer.FaceDistance.MinimumDateTime.Value.Ticks < skipOlderThan.Value))
continue;
if (faceDistanceContainer.Face.Mapping.MappingFromLocation.ConfidencePercent < distanceLimits.FaceConfidencePercent)
continue;
if (faceDistanceContainer.Face.Mapping.MappingFromLocation.AreaPermyriad < distanceLimits.FaceAreaPermyriad)

View File

@ -732,8 +732,9 @@ public partial class DlibDotNet
int? useFiltersCounter = null;
SortingContainer[] sortingContainers;
FaceDistanceContainer[] filteredFaceDistanceContainers;
long? skipOlderThan = _Configuration.SkipOlderThanDays is null ? null : new DateTime(ticks).AddDays(-_Configuration.SkipOlderThanDays.Value).Ticks;
distanceLimits = new(_Configuration.FaceAreaPermyriad, _Configuration.FaceConfidencePercent, _Configuration.FaceDistancePermyriad, _Configuration.RangeDaysDeltaTolerance, _Configuration.RangeDistanceTolerance, _Configuration.RangeFaceAreaTolerance, _Configuration.RangeFaceConfidence, _Configuration.SortingMaximumPerFaceShouldBeHigh);
filteredFaceDistanceContainers = E_Distance.FilteredFaceDistanceContainers(mapLogic, faceDistanceContainers, distanceLimits);
filteredFaceDistanceContainers = E_Distance.FilteredFaceDistanceContainers(mapLogic, faceDistanceContainers, skipOlderThan, distanceLimits);
if (!filteredFaceDistanceContainers.Any())
_Log.Information("All images have been filtered!");
else
@ -744,7 +745,7 @@ public partial class DlibDotNet
for (useFiltersCounter = 1; useFiltersCounter < _Configuration.UseFilterTries; useFiltersCounter++)
{
distanceLimits = new(_Configuration.FaceAreaPermyriad, _Configuration.FaceConfidencePercent, _Configuration.FaceDistancePermyriad, _Configuration.RangeDaysDeltaTolerance, _Configuration.RangeDistanceTolerance, _Configuration.RangeFaceAreaTolerance, _Configuration.RangeFaceConfidence, _Configuration.SortingMaximumPerFaceShouldBeHigh, useFiltersCounter);
filteredFaceDistanceContainers = E_Distance.FilteredFaceDistanceContainers(mapLogic, faceDistanceContainers, distanceLimits);
filteredFaceDistanceContainers = E_Distance.FilteredFaceDistanceContainers(mapLogic, faceDistanceContainers, skipOlderThan, distanceLimits);
if (filteredFaceDistanceContainers.Any())
_Log.Information("All images have been filtered!");
else

View File

@ -75,6 +75,7 @@ public class Configuration
[Display(Name = "Save Shortcuts"), Required] public string[] SaveShortcutsForOutputResolutions { get; set; }
[Display(Name = "Save Sorting Without Person"), Required] public bool? SaveSortingWithoutPerson { get; set; }
[Display(Name = "Skip Not Skip Directories"), Required] public string[] SkipNotSkipDirectories { get; set; }
[Display(Name = "Skip Older Than Days"), Required] public int? SkipOlderThanDays { get; set; }
[Display(Name = "Skip Search"), Required] public bool? SkipSearch { 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; }
@ -284,6 +285,7 @@ public class Configuration
configuration.SaveShortcutsForOutputResolutions,
configuration.SaveSortingWithoutPerson.Value,
configuration.SkipNotSkipDirectories,
configuration.SkipOlderThanDays,
configuration.SkipSearch.Value,
configuration.SortingMaximumPerFaceShouldBeHigh.Value,
configuration.SortingMaximumPerKey.Value,

View File

@ -72,6 +72,7 @@ public class Configuration
public bool SaveSortingWithoutPerson { init; get; }
public string[] SkipNotSkipDirectories { init; get; }
public bool SkipSearch { init; get; }
public int? SkipOlderThanDays { init; get; }
public int SortingMaximumPerFaceShouldBeHigh { init; get; }
public int SortingMaximumPerKey { init; get; }
public int SortingMinimumToUseSigma { init; get; }
@ -143,6 +144,7 @@ public class Configuration
string[] saveShortcutsForOutputResolutions,
bool saveSortingWithoutPerson,
string[] skipNotSkipDirectories,
int? skipOlderThanDays,
bool skipSearch,
int sortingMaximumPerFaceShouldBeHigh,
int sortingMaximumPerKey,
@ -214,6 +216,7 @@ public class Configuration
SaveShortcutsForOutputResolutions = saveShortcutsForOutputResolutions;
SaveSortingWithoutPerson = saveSortingWithoutPerson;
SkipNotSkipDirectories = skipNotSkipDirectories;
SkipOlderThanDays = skipOlderThanDays;
SkipSearch = skipSearch;
SortingMaximumPerFaceShouldBeHigh = sortingMaximumPerFaceShouldBeHigh;
SortingMaximumPerKey = sortingMaximumPerKey;

View File

@ -19,7 +19,7 @@
"FocusDirectory": "",
"xFocusDirectory": "/Hawaii 2022",
"FocusModel": "",
"xxFocusModel": "NIKON D3400",
"xFocusModel": "NIKON D3400",
"PersonCharactersCopyCount": 0,
"xPersonCharactersCopyCount": 2,
"xRootDirectory": "D:/Tmp/phares/Pictures",
@ -28,6 +28,8 @@
"RootDirectory": "D:/1) Images A/Images-45f4401",
"xxxxxRootDirectory": "D:/1) Images A/Images-45f4401/Facebook/=2022.3 Facebook",
"SaveSortingWithoutPerson": true,
"xSkipOlderThanDays": null,
"SkipOlderThanDays": 1800,
"JLinks": [
"Julie"
],
@ -48,7 +50,7 @@
],
"RangeDistanceTolerance": [
0,
0.65,
0.98,
1.8
],
"RangeFaceAreaTolerance": [
@ -58,7 +60,7 @@
],
"RangeFaceConfidence": [
0,
0.8,
0.5,
1.6
],
"SaveFaceDistancesForOutputResolutions": [

View File

@ -108,6 +108,7 @@
"SaveFullYearOfRandomFiles": true,
"SaveResizedSubFiles": true,
"SaveSortingWithoutPerson": false,
"SkipOlderThanDays": null,
"SkipSearch": false,
"SortingMaximumPerFaceShouldBeHigh": 3000,
"SortingMaximumPerKey": 7,