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; 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(); List<FaceDistanceContainer> results = new();
foreach (FaceDistanceContainer faceDistanceContainer in faceDistanceContainers) foreach (FaceDistanceContainer faceDistanceContainer in faceDistanceContainers)
{ {
if (faceDistanceContainer.FaceDistance is null || faceDistanceContainer.Face.Mapping?.MappingFromLocation is null) if (faceDistanceContainer.FaceDistance is null || faceDistanceContainer.Face.Mapping?.MappingFromLocation is null)
throw new NotSupportedException(); 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) if (faceDistanceContainer.Face.Mapping.MappingFromLocation.ConfidencePercent < distanceLimits.FaceConfidencePercent)
continue; continue;
if (faceDistanceContainer.Face.Mapping.MappingFromLocation.AreaPermyriad < distanceLimits.FaceAreaPermyriad) if (faceDistanceContainer.Face.Mapping.MappingFromLocation.AreaPermyriad < distanceLimits.FaceAreaPermyriad)

View File

@ -732,8 +732,9 @@ public partial class DlibDotNet
int? useFiltersCounter = null; int? useFiltersCounter = null;
SortingContainer[] sortingContainers; SortingContainer[] sortingContainers;
FaceDistanceContainer[] filteredFaceDistanceContainers; 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); 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()) if (!filteredFaceDistanceContainers.Any())
_Log.Information("All images have been filtered!"); _Log.Information("All images have been filtered!");
else else
@ -744,7 +745,7 @@ public partial class DlibDotNet
for (useFiltersCounter = 1; useFiltersCounter < _Configuration.UseFilterTries; useFiltersCounter++) 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); 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()) if (filteredFaceDistanceContainers.Any())
_Log.Information("All images have been filtered!"); _Log.Information("All images have been filtered!");
else else

View File

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

View File

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

View File

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

View File

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