https://github.com/csharper63/arn_pw5
https://github.com/csharper63/arn_pw5
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/csharper63/arn_pw5
- Owner: CSharper63
- Created: 2023-06-18T08:58:33.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2023-06-18T09:13:14.000Z (almost 2 years ago)
- Last Synced: 2025-01-02T12:24:57.592Z (5 months ago)
- Language: Kotlin
- Size: 8.99 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Classification with TensorFLow Lite Model Maker and Android Studio ML Model Binding
This project is forked from [https://github.com/hoitab/TFLClassify](https://github.com/hoitab/TFLClassify). Only minor modifications have been applied to use another weight file and remove what was unnecessary for us.
If you don't rename the weight file, you **don't have to modify the code**! Otherwise you will need to rename some variable names in the code.
# Android Studio Installation
You will need to download the Android Studio IDE. Instructions to do so are avaible here: [https://developer.android.com/studio/install](https://developer.android.com/studio/install)
# Using your model weights
The code below can be used to create a _.tfile_ weight file from your model weights.
When you've exported the _.tfile_ weights file, put this weight file and the _labels.txt_ under `TFLClassify/app/src/main/ml/`.```python
import tensorflow as tf
from tflite_support.metadata_writers import image_classifier
from tflite_support.metadata_writers import writer_utils# Task Library expects label files that are in the same format as the one below.
LABEL_FILE = "labels.txt"
SAVE_TO_PATH = "MyModel.tflite"# Create the labels file
with open(LABEL_FILE, 'w') as label_file:
for label in class_names: # /!\ class_names variable must contains the names of the labels you have.
label_file.write("{}\n".format(label))tflite_model = tf.lite.TFLiteConverter.from_keras_model(model).convert()
# Save the model.
with open(SAVE_TO_PATH, 'wb') as f:
f.write(tflite_model)
ImageClassifierWriter = image_classifier.MetadataWriter# Normalization parameters is required when reprocessing the image. It is
# optional if the image pixel values are in range of [0, 255] and the input
# tensor is quantized to uint8. See the introduction for normalization and
# quantization parameters below for more details.
# https://www.tensorflow.org/lite/convert/metadata#normalization_and_quantization_parameters)
INPUT_NORM_MEAN = 127.5
INPUT_NORM_STD = 127.5# Create the metadata writer.
writer = ImageClassifierWriter.create_for_inference(
writer_utils.load_file(SAVE_TO_PATH),
[INPUT_NORM_MEAN],
[INPUT_NORM_STD],
[LABEL_FILE]
)# Verify the metadata generated by metadata writer.
print(writer.get_metadata_json())# Populate the metadata into the model.
writer_utils.save_file(writer.populate(), SAVE_TO_PATH)
```# Testing your model on your smartphone
Instructions are given below, but check the following link for further informations: [https://developer.android.com/studio/run/device](https://developer.android.com/studio/run/device)
Note that in some rare cases you will need to install some drivers. Check Google documentation or the documentation from your smartphone's manufacturer.
The given code is **not compatible with Iphones**! If you don't have any compatible Android smartphone we can lend you one.
## Enabling USB debugging
You will need to have USB debugging enabled to be able to run the app on your smartphone by connecting it by USB.
1. To turn on developer mode: About phone -> tap on build number 7 times.
2. Settings -> System -> Advanced -> Developer options -> USB debugging : activate this option## Connect the smartphone to your computer
1. Connect your smartphone to your computer with the cable
2. Allow USB debugging## Running the app on your device
In Android Studio you should now see your smartphone in the running devices selection
# Testing your model on an emulator
**This is not necessary!** If you want to try with an emulator and your webcam you can do like so (on Android Studio) :
1. Devices list -> AVD Manager -> Create virtual device... -> Phone -> Pixel 4 -> API level 30, Android 11 -> Show Advanced Settings -> Camera : select your webcam here. -> Finish
Troubleshooting :
1. Be sure to have enough space on the disk
2. Be sure to have the Android 11 SDK installed : Tools -> SDK Manager -> Android SDK -> Check "Android 11.0 (R)" -> ApplyThen you can run the code on the emulator.
# License
Copyright (C) 2020 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.