Files
photoprism/internal/ai/classify/label.go
Michael Mayer 35e9294d87 AI: Add vision package and vision API endpoints #127 #1090
These changes allow to configure the computer vision models through an
optional vision.yml configuration file. Note that the API endpoints
are not yet functional and require further work.

Signed-off-by: Michael Mayer <michael@photoprism.app>
2025-04-06 23:39:37 +02:00

61 lines
1.4 KiB
Go

package classify
import (
"strings"
"github.com/photoprism/photoprism/pkg/txt"
)
// Label represents a MediaFile label (automatically created).
type Label struct {
Name string `json:"label"` // Label name
Source string `json:"source"` // Where was this label found / detected?
Uncertainty int `json:"uncertainty"` // >= 0
Priority int `json:"priority"` // >= 0
Categories []string `json:"categories"` // List of similar labels
}
// LocationLabel returns a new location label.
func LocationLabel(name string, uncertainty int) Label {
priority := -1
if index := strings.Index(name, " / "); index > 1 {
name = name[:index]
}
if index := strings.Index(name, " - "); index > 1 {
name = name[:index]
}
var categories []string
if rule, ok := Rules.Find(name); ok {
priority = rule.Priority
categories = rule.Categories
}
return Label{
Name: name,
Source: SrcLocation,
Uncertainty: uncertainty,
Priority: priority,
Categories: categories,
}
}
// Title returns a formatted label title as string.
func (l *Label) Title() string {
return txt.Title(txt.Clip(l.Name, txt.ClipDefault))
}
// Confidence returns a matching confidence in percent.
func (l *Label) Confidence() int {
if l.Uncertainty > 100 {
return 0
} else if l.Uncertainty < 0 {
return 100
} else {
return 100 - l.Uncertainty
}
}