People: Add min face size config option #22

This commit is contained in:
Michael Mayer 2021-09-23 13:47:18 +02:00
parent 82fccb23c4
commit b4bcfe499c
5 changed files with 18 additions and 4 deletions

View file

@ -142,6 +142,7 @@ func configAction(ctx *cli.Context) error {
fmt.Printf("%-25s %d\n", "jpeg-quality", conf.JpegQuality())
// Facial recognition.
fmt.Printf("%-25s %d\n", "face-size", conf.FaceSize())
fmt.Printf("%-25s %f\n", "face-score", conf.FaceScore())
fmt.Printf("%-25s %d\n", "face-overlap", conf.FaceOverlap())
fmt.Printf("%-25s %d\n", "face-cluster-core", conf.FaceClusterCore())

View file

@ -2,6 +2,15 @@ package config
import "github.com/photoprism/photoprism/internal/face"
// FaceSize returns the face size threshold in pixels.
func (c *Config) FaceSize() int {
if c.options.FaceSize < 20 || c.options.FaceSize > 10000 {
return 40
}
return c.options.FaceSize
}
// FaceScore returns the face quality score threshold.
func (c *Config) FaceScore() float64 {
if c.options.FaceScore < 1 || c.options.FaceScore > 100 {

View file

@ -428,6 +428,12 @@ var GlobalFlags = []cli.Flag{
Value: 92,
EnvVar: "PHOTOPRISM_JPEG_QUALITY",
},
cli.IntFlag{
Name: "face-size",
Usage: "min face size in `PIXELS`",
Value: 40,
EnvVar: "PHOTOPRISM_FACE_SIZE",
},
cli.Float64Flag{
Name: "face-score",
Usage: "face `QUALITY` threshold",

View file

@ -112,6 +112,7 @@ type Options struct {
ThumbSizeUncached int `yaml:"ThumbSizeUncached" json:"ThumbSizeUncached" flag:"thumb-size-uncached"`
JpegSize int `yaml:"JpegSize" json:"JpegSize" flag:"jpeg-size"`
JpegQuality int `yaml:"JpegQuality" json:"JpegQuality" flag:"jpeg-quality"`
FaceSize int `yaml:"-" json:"-" flag:"face-size"`
FaceScore float64 `yaml:"-" json:"-" flag:"face-score"`
FaceOverlap int `yaml:"-" json:"-" flag:"face-overlap"`
FaceClusterCore int `yaml:"-" json:"-" flag:"face-cluster-core"`

View file

@ -15,15 +15,12 @@ func (ind *Index) Faces(jpeg *MediaFile, expected int) face.Faces {
return face.Faces{}
}
var minSize int
var thumbSize thumb.Name
// Select best thumbnail depending on configured size.
if Config().ThumbSizePrecached() < 1280 {
minSize = 20
thumbSize = thumb.Fit720
} else {
minSize = 30
thumbSize = thumb.Fit1280
}
@ -41,7 +38,7 @@ func (ind *Index) Faces(jpeg *MediaFile, expected int) face.Faces {
start := time.Now()
faces, err := ind.faceNet.Detect(thumbName, minSize, true, expected)
faces, err := ind.faceNet.Detect(thumbName, Config().FaceSize(), true, expected)
if err != nil {
log.Debugf("%s in %s", err, txt.Quote(jpeg.BaseName()))