Documentation
¶
Overview ¶
Package core facenet core module
Index ¶
- Variables
- func EuclideanDistance(face1 []float32, face2 []float32) float64
- func LoadPeople(r io.Reader, people *People) error
- func QualityThreshold(scale int) (score float32)
- func ReadCascadeDir(plc *pigo.PuplocCascade, path string) (result map[string][]*FlpCascade, err error)
- type Area
- type Areas
- type ErrCode
- type Error
- type Extractor
- type Face
- type FaceMarker
- type FaceMarkers
- type Faces
- type FlpCascade
- type Net
- func (t *Net) Detect(img image.Image, minSize int, expected int) (faces Faces, err error)
- func (t *Net) DetectMultiple(img image.Image, minSize int) (faces Faces, err error)
- func (t *Net) DetectSingle(img image.Image, minSize int) (face Face, err error)
- func (t *Net) LoadModel() error
- func (t *Net) ModelLoaded() bool
- func (t *Net) Train(label string, images []image.Image, minSize int) (person Person, err error)
- type People
- func (people *People) Append(items ...*Person)
- func (people *People) Delete(name string) bool
- func (*People) Descriptor() ([]byte, []int)deprecated
- func (x *People) GetList() []*Person
- func (people *People) Match(embedding []float32) (*Person, float64, error)
- func (people *People) Nearest(embedding []float32) (*Person, float64)
- func (people *People) Neighbour(embedding []float32, nearest *Person) (*Person, float64)
- func (*People) ProtoMessage()
- func (x *People) ProtoReflect() protoreflect.Message
- func (x *People) Reset()
- func (people *People) ResolveCollisions()
- func (people *People) Save(w io.Writer) error
- func (people *People) Setup()
- func (x *People) String() string
- type Person
- func (person *Person) Append(embedding []float32)
- func (person *Person) AverageDistance(embedding []float32) float64
- func (person *Person) CalcCenter() (result []float32, radius float64, count int)
- func (*Person) Descriptor() ([]byte, []int)deprecated
- func (person *Person) Equal(another *Person) bool
- func (x *Person) GetCenter() []float32
- func (x *Person) GetCollisionRadius() float64
- func (x *Person) GetEmbeddings() []*Person_Embedding
- func (x *Person) GetName() string
- func (x *Person) GetRadius() float64
- func (person *Person) Match(embedding []float32) (bool, float64)
- func (*Person) ProtoMessage()
- func (x *Person) ProtoReflect() protoreflect.Message
- func (person *Person) ReCenter()
- func (x *Person) Reset()
- func (person *Person) ResolveCollision(p2 *Person)
- func (x *Person) String() string
- type Person_Embedding
Constants ¶
This section is empty.
Variables ¶
var ClusterCore = 4
ClusterCore depreciated
var ClusterDist = 0.64
ClusterDist default cluster distance
var ClusterMinScore = 15
ClusterMinScore depreciated
var ClusterMinSize = 95
ClusterMinSize depreciated
var CropSize = imageutil.Sizes[imageutil.Tile160]
CropSize default crop size for image
var File_core_person_proto protoreflect.FileDescriptor
var MatchDist = 0.46
MatchDist default match distance
var MaxImageSize = 640
MaxImageSize defines maxium image size for detection resize
var OverlapThreshold = 42
OverlapThreshold default face overlap threshold
var OverlapThresholdFloor = OverlapThreshold - 1
OverlapThresholdFloor default face overlap threshold floor
var SampleThreshold = 2 * ClusterCore
SampleThreshold depreciated
var ScoreThreshold = 4.0
ScoreThreshold default quality threshold score
Functions ¶
func EuclideanDistance ¶
EuclideanDistance calculate euclidean distance between to vectors
func QualityThreshold ¶
QualityThreshold returns the scale adjusted quality score threshold.
func ReadCascadeDir ¶
func ReadCascadeDir(plc *pigo.PuplocCascade, path string) (result map[string][]*FlpCascade, err error)
ReadCascadeDir reads the facial landmark points cascade files from the provided directory.
Types ¶
type Area ¶
type Area struct { Name string `json:"name,omitempty"` Row int `json:"x,omitempty"` Col int `json:"y,omitempty"` Scale int `json:"size,omitempty"` }
Area represents a face landmark position.
type ErrCode ¶
type ErrCode int
ErrCode error code
const ( // UnknownErr unknown error code UnknownErr ErrCode = iota // ExtractImageSizeTooSmallErr extract image size is too small ExtractImageSizeTooSmallErr // NoFaceErr no face detected error NoFaceErr // InferenceFailedErr extract face failed InferenceFailedErr // ImageToTensorSizeErr convert image to tensor size error ImageToTensorSizeErr // NegativeDistanceMatchErr match distance is negative NegativeDistanceMatchErr // TooFarMatchErr match distance is too far TooFarMatchErr // CollisionMatchErr match distance is larger than collision radius, may need more trainning data CollisionMatchErr // NothingMatchErr represents nothing matched NothingMatchErr // UnknownClassifierErr represents met an unknown classifier in saved db UnknownClassifierErr )
type Error ¶
type Error struct { // Code error code Code ErrCode `json:"code,omitempty"` // Msg error message Msg string `json:"msg,omitempty"` }
Error custom error object
type Extractor ¶
type Extractor struct {
// contains filtered or unexported fields
}
Extractor struct contains Pigo face detector general settings.
type Face ¶
type Face struct { Rows int `json:"rows,omitempty"` Cols int `json:"cols,omitempty"` Score int `json:"score,omitempty"` Area Area `json:"face,omitempty"` Eyes Areas `json:"eyes,omitempty"` Landmarks Areas `json:"landmarks,omitempty"` Embeddings [][]float32 `json:"embeddings,omitempty"` }
Face represents a face detected.
func TrySizeExtractSingle ¶
TrySizeExtractSingle extract single face with different minSize
func (*Face) Dim ¶
Dim returns the max number of rows and cols as float32 to calculate relative coordinates.
func (*Face) EmbeddingsJSON ¶
EmbeddingsJSON returns detected face embeddings as JSON array.
func (*Face) EyesMidpoint ¶
EyesMidpoint returns the point in between the eyes.
func (*Face) RelativeLandmarks ¶
RelativeLandmarks returns relative face areas.
func (*Face) RelativeLandmarksJSON ¶
RelativeLandmarksJSON returns relative face areas as JSON.
type FaceMarker ¶
type FaceMarker struct {
// contains filtered or unexported fields
}
FaceMarker detected face
func NewFaceMarker ¶
func NewFaceMarker(face Face, label string, distance float64) *FaceMarker
NewFaceMarker init a FaceMarker
func (FaceMarker) Bounds ¶
func (f FaceMarker) Bounds(img image.Image) image.Rectangle
Bounds FackeMarker image bounds
func (FaceMarker) Error ¶
func (f FaceMarker) Error() error
Error identify the successful of matching
func (*FaceMarker) SetError ¶
func (f *FaceMarker) SetError(err error)
SetError set face maker match failed
type FaceMarkers ¶
type FaceMarkers struct {
// contains filtered or unexported fields
}
FaceMarkers image detected with markers
func NewFaceMarkers ¶
func NewFaceMarkers(img image.Image) *FaceMarkers
NewFaceMarkers init face markers
func (*FaceMarkers) Append ¶
func (fm *FaceMarkers) Append(m FaceMarker)
Append append FaceMarker to FaceMarkers
func (FaceMarkers) Draw ¶
func (fm FaceMarkers) Draw(font *imageutil.Font, txtColor string, successColor string, failedColor string, strokeWidth float64, succeedOnly bool) image.Image
Draw draw face markers on image
func (*FaceMarkers) FaceImages ¶
func (fm *FaceMarkers) FaceImages(img image.Image) []image.Image
FaceImages get face images from face markers
type Faces ¶
type Faces []Face
Faces represents a list of faces detected.
func TrySizeExtractMultiple ¶
func TrySizeExtractMultiple(img image.Image, findLandmarks bool, minSize int) (faces Faces, err error)
TrySizeExtractMultiple extract multiple faces with different minSize
func (Faces) Uncertainty ¶
Uncertainty return the max face detection uncertainty in percent.
type FlpCascade ¶
type FlpCascade struct { *pigo.PuplocCascade // contains filtered or unexported fields }
FlpCascade holds the binary representation of the facial landmark points cascade files
type Net ¶
type Net struct {
// contains filtered or unexported fields
}
Net is a wrapper for the TensorFlow Facenet model.
func (*Net) Detect ¶
Detect runs the detection and facenet algorithms over the provided source image.
func (*Net) DetectMultiple ¶
DetectMultiple detect multiple faces try to use different minSize
func (*Net) DetectSingle ¶
DetectSingle detect single face try to use different minSize
func (*Net) ModelLoaded ¶
ModelLoaded tests if the TensorFlow model is loaded.
type People ¶
type People struct { List []*Person `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"` // contains filtered or unexported fields }
func (*People) Descriptor
deprecated
func (*People) ProtoMessage ¶
func (*People) ProtoMessage()
func (*People) ProtoReflect ¶
func (x *People) ProtoReflect() protoreflect.Message
func (*People) ResolveCollisions ¶
func (people *People) ResolveCollisions()
ResolveCollisions resolves collisions of different subject's faces.
type Person ¶
type Person struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Embeddings []*Person_Embedding `protobuf:"bytes,2,rep,name=embeddings,proto3" json:"embeddings,omitempty"` Center []float32 `protobuf:"fixed32,3,rep,packed,name=center,proto3" json:"center,omitempty"` Radius float64 `protobuf:"fixed64,4,opt,name=radius,proto3" json:"radius,omitempty"` CollisionRadius float64 `protobuf:"fixed64,5,opt,name=collision_radius,json=collisionRadius,proto3" json:"collision_radius,omitempty"` // contains filtered or unexported fields }
func (*Person) AverageDistance ¶
AverageDistance returns the average distance between o and all people
func (*Person) CalcCenter ¶
CalcCenter returns the center coordinates of a set of people
func (*Person) Descriptor
deprecated
func (*Person) GetCollisionRadius ¶
func (*Person) GetEmbeddings ¶
func (x *Person) GetEmbeddings() []*Person_Embedding
func (*Person) ProtoMessage ¶
func (*Person) ProtoMessage()
func (*Person) ProtoReflect ¶
func (x *Person) ProtoReflect() protoreflect.Message
func (*Person) ResolveCollision ¶
ResolveCollision calculate CollisionRadius for a person
type Person_Embedding ¶
type Person_Embedding struct { Value []float32 `protobuf:"fixed32,1,rep,packed,name=value,proto3" json:"value,omitempty"` // contains filtered or unexported fields }
func (*Person_Embedding) Descriptor
deprecated
func (*Person_Embedding) Descriptor() ([]byte, []int)
Deprecated: Use Person_Embedding.ProtoReflect.Descriptor instead.
func (*Person_Embedding) GetValue ¶
func (x *Person_Embedding) GetValue() []float32
func (*Person_Embedding) ProtoMessage ¶
func (*Person_Embedding) ProtoMessage()
func (*Person_Embedding) ProtoReflect ¶
func (x *Person_Embedding) ProtoReflect() protoreflect.Message
func (*Person_Embedding) Reset ¶
func (x *Person_Embedding) Reset()
func (*Person_Embedding) String ¶
func (x *Person_Embedding) String() string