face_size_limit added so we ignore faces that are too small

This commit is contained in:
2022-02-02 21:12:14 +11:00
parent 8b3844d882
commit e1a6348967
3 changed files with 16 additions and 8 deletions

View File

@@ -242,13 +242,14 @@ class Settings(Base):
default_refimg_model = Column(Integer,ForeignKey('ai_model.id'), unique=True, nullable=False)
default_scan_model = Column(Integer,ForeignKey('ai_model.id'), unique=True, nullable=False)
default_threshold = Column(Integer)
face_size_limit = Column(Integer)
scheduled_import_scan = Column(Integer)
scheduled_storage_scan = Column(Integer)
scheduled_bin_cleanup = Column(Integer)
bin_cleanup_file_age = Column(Integer)
def __repr__(self):
return f"<id: {self.id}, import_path: {self.import_path}, storage_path: {self.storage_path}, recycle_bin_path: {self.recycle_bin_path}, default_refimg_model: {self.default_refimg_model}, default_scan_model: {self.default_scan_model}, default_threshold: {self.default_threshold}, scheduled_import_scan:{self.scheduled_import_scan}, scheduled_storage_scan: {self.scheduled_storage_scan}, scheduled_bin_cleanup: {Self.scheduled_bin_cleanup}, bin_cleanup_file_age: {self.bin_cleanup_file_age}>"
return f"<id: {self.id}, import_path: {self.import_path}, storage_path: {self.storage_path}, recycle_bin_path: {self.recycle_bin_path}, default_refimg_model: {self.default_refimg_model}, default_scan_model: {self.default_scan_model}, default_threshold: {self.default_threshold}, face_size_limit: {self.face_size_limit}, scheduled_import_scan:{self.scheduled_import_scan}, scheduled_storage_scan: {self.scheduled_storage_scan}, scheduled_bin_cleanup: {self.scheduled_bin_cleanup}, bin_cleanup_file_age: {self.bin_cleanup_file_age}>"
################################################################################
# Class describing Person to Refimg link in DB via sqlalchemy
@@ -1913,16 +1914,18 @@ def InitialValidationChecks():
####################################################################################################################################
# AddFaceToFile(): adds the specified face, location & model_used to the specified file
####################################################################################################################################
def AddFaceToFile( locn_data, face_data, file_eid, model_id ):
def AddFaceToFile( locn_data, face_data, file_eid, model_id, settings ):
w = locn_data[1] - locn_data[3]
h = locn_data[2] - locn_data[0]
if w < settings.face_size_limit or h < settings.face_size_limit:
return
face = Face( face=face_data.tobytes(), locn=json.dumps(locn_data), w=w, h=h )
session.add(face)
session.commit()
ffl = FaceFileLink( face_id=face.id, file_eid=file_eid, model_used=model_id )
session.add(ffl)
session.commit()
return face
return
####################################################################################################################################
# DelFacesForFile(): quick func to delete any faces associated with the specified file
@@ -2022,7 +2025,7 @@ def ScanFileForPerson( job, e, force=False ):
face_locations = face_recognition.face_locations(im, model=model.name )
unknown_encodings = face_recognition.face_encodings(im, known_face_locations=face_locations)
for locn, face in zip( face_locations, unknown_encodings ):
AddFaceToFile( locn, face, e.id, model.id )
AddFaceToFile( locn, face, e.id, model.id, settings )
file_h.faces_created_on = time.time()
faces = session.query(Face).join(FaceFileLink).filter(FaceFileLink.file_eid==e.id).all()