Implementierung eines ML -Modells in eine Android -App mit TensorFlow LiteAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Implementierung eines ML -Modells in eine Android -App mit TensorFlow Lite

Post by Anonymous »

Ich bin also neu in der Domäne der Android -App -Entwicklung. Wenn ich die Schritte korrekt verstehe:
Auswahl 1: < /p>

Machen Sie das Modell im Tensorflow. Konvertieren Sie mit Tflite_Converter in Tflite < /li>
< /ol>
oder < /p>

Machen Sie das Modell in das Modell in Pytorch. Konvertieren Sie mit Ai-Edge-Torch in Tflite < /p>
< /li>
Metadaten mit der TFLite-Support-Bibliothek Metadaten hinzufügen. < /P>
< /li>
Fügen Sie das Modell in der App über Android Studios hinzu, indem Sie die TFLite -Datei hinzufügen und den generierten Code verwenden. < /p>
< /li>
< /ol>
Probleme, die ich habe: < /p>

Ai-Edge-Torch funktioniert nicht auf Kaggle / Colab /Offline Jupyter Notebook aufgrund vieler Abhängigkeitsprobleme. Ich konnte Tflite_Support 0.1.0A1 auf meinem Gebiet installieren und es scheint zu funktionieren, aber jedes Mal, wenn ich überprüfe, ob Metadaten in meinem Modell gespeichert wurden, zeigt es keine Änderungen an. Weder reflektiert es, wenn ich die Metadaten mit Python drucke, noch wenn ich sie in Android Studios importiere. Ich habe auch eine virtuelle Umgebung mit Python 3.9 ausprobiert und sie hat immer noch nicht funktioniert. Studios, wenn ich es ohne Metadaten benutze, weil die App immer wieder abstürzt. Ich habe versucht, einen vorgezogenen Esrgan.Tflite mit Metadaten herunterzuladen und es funktioniert vollkommen in Ordnung. Link < /p>
< /li>
< /ol>
Bitte helfen Sie mir Arbeit oder ein anderer Rahmen, damit es funktioniert. Ich bin bereit zu lernen und auch Flutter zu verwenden, wenn es einfacher ist, diese Aufgabe dort auszuführen. Ich bin hier neu, so dass ein kleiner detaillierter Rat geschätzt wird. > Ich habe bisher viele Dinge ausprobiert, um Metadaten hinzuzufügen. Eine, die funktioniert hat (zumindest schien zu funktionieren) ist: < /p>
from tflite_support import flatbuffers
from tflite_support import metadata as _metadata
from tflite_support import metadata_schema_py_generated as _metadata_fb

# Create model info
model_meta = _metadata_fb.ModelMetadataT()
model_meta.name = model_name
model_meta.description = "Image Super Resolution"
model_meta.version = "v1"
model_meta.author = "Tanish"
model_meta.license = "None"

# Create input info
input_meta = _metadata_fb.TensorMetadataT()
input_meta.name = "input"
input_meta.description = "Input image to be processed"
input_meta.content = _metadata_fb.ContentT()
input_meta.content.contentProperties = _metadata_fb.ImagePropertiesT()
input_meta.content.contentProperties.colorSpace = _metadata_fb.ColorSpaceType.RGB
input_meta.content.contentPropertiesType = _metadata_fb.ContentProperties.ImageProperties

# Specify tensor shape and type
input_meta.shape = [1, 128, 128, 3] # [batch, height, width, channels]
input_meta.dtype = 1

# Create output info
output_meta = _metadata_fb.TensorMetadataT()
output_meta.name = "output"
output_meta.description = "Output upscaled image"
output_meta.content = _metadata_fb.ContentT()
output_meta.content.contentProperties = _metadata_fb.ImagePropertiesT()
output_meta.content.contentProperties.colorSpace = _metadata_fb.ColorSpaceType.RGB
output_meta.content.contentPropertiesType = _metadata_fb.ContentProperties.ImageProperties

# Specify tensor shape and type
output_meta.shape = [1, 512, 512, 3] # [batch, height, width, channels]
output_meta.dtype = 1

subgraph = _metadata_fb.SubGraphMetadataT()
subgraph.inputTensorMetadata = [input_meta]
subgraph.outputTensorMetadata = [output_meta]
model_meta.subgraphMetadata = [subgraph]

b = flatbuffers.Builder(0)
b.Finish(
model_meta.Pack(b),
_metadata.MetadataPopulator.METADATA_FILE_IDENTIFIER)
metadata_buf = b.Output()

populator = _metadata.MetadataPopulator.with_model_file(MODEL_PATH)
populator.load_metadata_buffer(metadata_buf)
# Add metadata to the model
populator.populate()

# Get the updated model buffer
updated_model_buf = populator.get_model_buffer()

# Save the updated model to a file
with open(NEW_MODEL_PATH, "wb") as f:
f.write(updated_model_buf)

print(f"Model with metadata saved to: {NEW_MODEL_PATH}")
< /code>
Ich habe erwartet, dass sich die Metadaten in Bezug auf meine Updates ändern, aber sie sind in den Android -Studios nicht sichtbar, wenn ich das Modell importiere.
und die App stürzt auch dann ab, wenn ich das Modell initialisiere.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post