People: Add min face size config option #22
This commit is contained in:
parent
82fccb23c4
commit
b4bcfe499c
|
@ -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())
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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"`
|
||||
|
|
|
@ -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()))
|
||||
|
|
Loading…
Reference in a new issue