S3FD: wrong small face check fix

This commit is contained in:
iperov 2019-03-18 00:30:08 +04:00
parent 2b40fa182f
commit 00e56299c4

View file

@ -33,20 +33,19 @@ class S3FDExtractor(object):
olist = self.model.predict( np.expand_dims(input_image,0) ) olist = self.model.predict( np.expand_dims(input_image,0) )
detected_faces = self.refine (olist) detected_faces = self.refine (olist)
#filtering faces < 40pix by any side #filtering faces < 40pix by any side
#enlarging bottom line a bit for 2DFAN-4, because default is not enough covering a chin #enlarging bottom line a bit for 2DFAN-4, because default is not enough covering a chin
new_detected_faces = [] new_detected_faces = []
for l,t,r,b in detected_faces: for ltrb in detected_faces:
l,t,r,b = [ x*input_scale for x in ltrb]
bt = b-t bt = b-t
if min(r-l,bt) < 40: if min(r-l,bt) < 40:
continue continue
new_detected_faces.append ((l,t,r,b+bt*0.1)) b += bt*0.1
new_detected_faces.append ( [int(x) for x in (l,t,r,b) ] )
return [ (int(face[0]*input_scale), return new_detected_faces
int(face[1]*input_scale),
int(face[2]*input_scale),
int(face[3]*input_scale)) for face in new_detected_faces ]
def refine(self, olist): def refine(self, olist):
bboxlist = [] bboxlist = []