Skip to content

piekarskipawel/MobileViT-V2-to-Core-ML-Converter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Konwersja MobileViT V2 0.50 (TensorFlow/Keras → Core ML)

Ten skrypt realizuje konwersję modelu MobileViT V2 0.50 z formatu TensorFlow/Keras do formatu Core ML (.mlpackage), zoptymalizowanego pod systemy iOS 16+ oraz macOS 13+.


🛠 Problem: Brakująca obsługa OnesLike

Podczas standardowej konwersji architektury MobileViT V2 przy użyciu coremltools, proces często kończy się błędem:

Unsupported Ops

Przyczyną jest brak natywnego mapowania dla operacji OnesLike w grafie TensorFlow. Operacja ta jest wykorzystywana m.in. w mechanizmach attention modelu.


💡 Rozwiązanie: Rejestracja Custom Op

Zamiast modyfikować architekturę modelu lub ingerować w warstwy Keras, zastosowano dekorator:

@register_tf_op

Pozwala on rozszerzyć konwerter Core ML o brakującą operację, definiując jej odpowiednik w MIL (Model Intermediate Language).


🔧 Implementacja OnesLike

Matematycznie:

ones_like(x) = tensor o kształcie x wypełniony 1

Implementacja w Core ML:

  1. Pobranie kształtu wejścia (mb.shape)
  2. Utworzenie tensora przez mb.fill
from coremltools.converters.mil import Builder as mb
from coremltools.converters.mil.frontend.tensorflow.tf_op_registry import register_tf_op

@register_tf_op
def OnesLike(context, node):
    """
    Custom handler dla operacji OnesLike.
    Mapowanie: TF OnesLike -> MIL Fill(Shape(x), 1.0)
    """
    input_tensor = context[node.inputs[0]]
    shape = mb.shape(x=input_tensor)
    out = mb.fill(shape=shape, value=1.0, name=node.name)
    context.add(node.name, out)

🚀 Specyfikacja Skryptu

Parametr Wartość
Model bazowy MobileViT V2 0.50
Zadanie Klasyfikacja binarna (np. zmiany skórne)
Format wyjściowy mlprogram (FP32)
Target iOS 16+, macOS 13+
Input (1, 256, 256, 3)

⚙️ Kluczowe Funkcjonalności

✅ Statyczny TensorType

ct.TensorType(shape=(1, 256, 256, 3))

✅ Metadane Modelu

Po konwersji model zawiera:

  • nazwy wejść/wyjść
  • opisy
  • typy danych

📦 Instalacja

pip install coremltools tf_keras tensorflow keras_cv_attention_models

▶️ Użycie

1. Przygotuj model

Umieść plik .keras w katalogu:

BASE_DIR = "ścieżka/do/modelu"

2. Uruchom konwersję

python convert_mv2_tensor.py

3. Integracja z iOS

  • Przeciągnij plik .mlpackage do projektu w Xcode
  • Xcode automatycznie wygeneruje klasę Swift
  • Model gotowy do użycia

📌 Uwagi

  • Model działa najlepiej z batch size = 1
  • FP32 zapewnia maksymalną kompatybilność

🧠 Podsumowanie

Dzięki rejestracji customowej operacji OnesLike:

  • unikamy modyfikacji modelu źródłowego
  • zachowujemy kompatybilność z TensorFlow
  • umożliwiamy pełną konwersję do Core ML

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages