robocar-steering-tflite-edg.../vendor/github.com/mattn/go-tflite/README.md

97 lines
2.9 KiB
Markdown

# go-tflite
Go binding for TensorFlow Lite
![](https://raw.githubusercontent.com/mattn/go-tflite/master/screenshots/screenshot.png)
## Usage
```go
model := tflite.NewModelFromFile("sin_model.tflite")
if model == nil {
log.Fatal("cannot load model")
}
defer model.Delete()
options := tflite.NewInterpreterOptions()
defer options.Delete()
interpreter := tflite.NewInterpreter(model, options)
defer interpreter.Delete()
interpreter.AllocateTensors()
v := float64(1.2) * math.Pi / 180.0
input := interpreter.GetInputTensor(0)
input.Float32s()[0] = float32(v)
interpreter.Invoke()
got := float64(interpreter.GetOutputTensor(0).Float32s()[0])
```
See `_example` for more examples
## Requirements
* TensorFlow Lite - This release requires 2.2.0-rc3
## Tensorflow Installation
You must install Tensorflow Lite C API. Assuming the source is under /source/directory/tensorflow
```
$ cd /source/directory/tensorflow
$ bazel build --config opt --config monolithic tensorflow:libtensorflow_c.so
```
Or to just compile the tensorflow lite libraries:
```
$ cd /some/path/tensorflow
$ bazel build --config opt --config monolithic //tensorflow/lite:libtensorflowlite.so
$ bazel build --config opt --config monolithic //tensorflow/lite/c:libtensorflowlite_c.so
```
In order for go to find the headers you must set the CGO_CFLAGS environment variable for the source and libraries of tensorflow.
If your libraries are not installed in a standard location, you must also give the go linker the path to the shared librares
with the CGO_LDFLAGS environment variable.
```
$ export CGO_CFLAGS=-I/source/directory/tensorflow
$ export CGO_LDFLAGS=-L/path/to/tensorflow/libaries
```
If you don't love bazel, you can try `Makefile.tflite`.
Put this file as `Makefile` in `tensorflow/lite/c`, and run `make`.
Sorry, this has not been test for Linux or Mac
Then run `go build` on some of the examples.
## Edge TPU
To be able to compile and use the EdgeTPU delegate, you need to install the libraries from here:
https://github.com/google-coral/edgetpu
There is also a deb package here:
https://coral.withgoogle.com/docs/accelerator/get-started/#1-install-the-edge-tpu-runtime
The libraries from should be installed in a system wide library path like `/usr/local/lib`
The include files should be installed somewhere that is accesable from your CGO include path
For x86:
```
cd /tmp && git clone https://github.com/google-coral/edgetpu.git && \
cp edgetpu/libedgetpu/direct/k8/libedgetpu.so.1.0 /usr/local/lib/libedgetpu.so.1.0 && \
ln -rs /usr/local/lib/libedgetpu.so.1.0 /usr/local/lib/libedgetpu.so.1 && \
ln -rs /usr/local/lib/libedgetpu.so.1.0 /usr/local/lib/libedgetpu.so && \
mkdir -p /usr/local/include/libedgetpu && \
cp edgetpu/libedgetpu/edgetpu.h /usr/local/include/edgetpu.h && \
cp edgetpu/libedgetpu/edgetpu_c.h /usr/local/include/edgetpu_c.h && \
rm -Rf edgetpu
```
## License
MIT
## Author
Yasuhrio Matsumoto (a.k.a. mattn)