| | |
| | | import ( |
| | | "analysis/logo" |
| | | "analysis/work" |
| | | "container/list" |
| | | "context" |
| | | "sync" |
| | | |
| | | "basic.com/valib/gogpu.git" |
| | | |
| | | "basic.com/valib/gosdk.git" |
| | | "analysis/gosdk" |
| | | ) |
| | | |
| | | type trackInfo struct { |
| | |
| | | |
| | | tracker map[string]*trackInfo |
| | | |
| | | cache *list.List |
| | | cv *sync.Cond |
| | | cond bool |
| | | list *LockList |
| | | } |
| | | |
| | | // NewYDetectWithTrack with track |
| | |
| | | cfg: cfg, |
| | | weights: weights, |
| | | name: name, |
| | | cache: list.New(), |
| | | cv: sync.NewCond(&sync.Mutex{}), |
| | | cond: false, |
| | | list: NewLockList(6), |
| | | } |
| | | } |
| | | |
| | |
| | | gpu = gogpu.ValidGPU(2048) |
| | | } |
| | | yolo := gosdk.InitYolo(y.cfg, y.weights, y.name, gpu) |
| | | logo.Infoln("yolo use gpu: ", gpu) |
| | | |
| | | if yolo == nil { |
| | | logo.Infoln("yolo start failed: ", gpu) |
| | | return false |
| | | } |
| | | logo.Infoln("yolo use gpu: ", gpu) |
| | | |
| | | y.yolo = yolo |
| | | return true |
| | |
| | | // Run impl interface |
| | | func (y *YoloDetect) Run(ctx context.Context, in <-chan work.MsgRS, out chan<- work.MsgRS, typ string) { |
| | | y.detectTrack(ctx, in, out, typ) |
| | | |
| | | } |