face_size_limit added so we ignore faces that are too small
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user