refactor: convert input/output to uint8

This commit is contained in:
Cyrille Nofficial 2021-12-31 19:36:35 +01:00
parent ce58df8a6d
commit ba9e54d1fb
2 changed files with 8 additions and 8 deletions

View File

@ -192,13 +192,13 @@ func (p *Part) Value(img image.Image) (float32, float32, error) {
dx = img.Bounds().Dx() dx = img.Bounds().Dx()
dy = img.Bounds().Dy() dy = img.Bounds().Dy()
bb := make([]byte, dx*dy*3) bb := make([]uint8, dx*dy*3)
for y := 0; y < dy; y++ { for y := 0; y < dy; y++ {
for x := 0; x < dx; x++ { for x := 0; x < dx; x++ {
r, g, b, _ := img.At(x, y).RGBA() r, g, b, _ := img.At(x, y).RGBA()
bb[(y*dx+x)*3+0] = byte(float64(r) / 257.0) bb[(y*dx+x)*3+0] = uint8(float64(r) / 257.0)
bb[(y*dx+x)*3+1] = byte(float64(g) / 257.0) bb[(y*dx+x)*3+1] = uint8(float64(g) / 257.0)
bb[(y*dx+x)*3+2] = byte(float64(b) / 257.0) bb[(y*dx+x)*3+2] = uint8(float64(b) / 257.0)
} }
} }
status = input.CopyFromBuffer(bb) status = input.CopyFromBuffer(bb)
@ -211,8 +211,8 @@ func (p *Part) Value(img image.Image) (float32, float32, error) {
return 0., 0., fmt.Errorf("invoke failed: %v", status) return 0., 0., fmt.Errorf("invoke failed: %v", status)
} }
output := p.interpreter.GetOutputTensor(0).Int8s() output := p.interpreter.GetOutputTensor(0).UInt8s()
zap.L().Debug("raw steering", zap.Int8s("result", output)) zap.L().Debug("raw steering", zap.Uint8s("result", output))
//outputSize := output.Dim(output.NumDims() - 1) //outputSize := output.Dim(output.NumDims() - 1)

View File

@ -7,7 +7,7 @@ import (
) )
// LinearBin perform inverse linear_bin, taking // LinearBin perform inverse linear_bin, taking
func LinearBin(arr []int8, n int, offset int, r float64) (float64, float64) { func LinearBin(arr []uint8, n int, offset int, r float64) (float64, float64) {
outputSize := len(arr) outputSize := len(arr)
type result struct { type result struct {
score float64 score float64
@ -17,7 +17,7 @@ func LinearBin(arr []int8, n int, offset int, r float64) (float64, float64) {
var results []result var results []result
minScore := 0.2 minScore := 0.2
for i := 0; i < outputSize; i++ { for i := 0; i < outputSize; i++ {
score := float64(int(arr[i])+128) / 255.0 score := float64(int(arr[i])) / 255.0
if score < minScore { if score < minScore {
continue continue
} }