ارسال شده توسط Paul Ruiz – مهندس ارشد روابط توسعه دهندگان
اوایل امسال راه اندازی کردیم Google AI Edgeمجموعه ای از ابزارها با دسترسی آسان به وظایف آماده برای استفاده ML، چارچوب هایی که شما را قادر می سازد خطوط لوله ML بسازید، و LLM های محبوب و مدل های سفارشی را اجرا کنید – همه روی دستگاه. برای هوش مصنوعی در Android S،light Week، تیم Google راههای مختلفی را نشان میدهد که توسعهدهندگان اندروید میتوانند از یادگیری ماشینی برای کمک به بهبود برنامههای خود استفاده کنند.
در این پست، به مشعل AI Edge Google می پردازیم، که به شما امکان می دهد با استفاده از Google AI Edge، مدل های PyTorch را برای اجرا به صورت محلی در اندروید و سایر پلتفرم ها تبدیل کنید. LiteRT (قبلاً TensorFlow Lite) و وظایف MediaPipe کتابخانه ها برای آگاهی از سایر ابزارهای قدرتمند، مطمئن شوید که بقیه هوش مصنوعی در محتوای هفته S،light Android را بررسی کنید.
برای شروع آسان تر با Google AI Edge، ما ارائه کرده ایم نمونه ها در GitHub به ،وان یک کد لبه اجرایی قابل دسترسی است. آنها نحوه تبدیل ، را نشان می دهند MobileViT مدل برای طبقه بندی تصاویر (سازگار با MediaPipe Tasks) و DIS مدل برای ت،یم بندی (سازگار با LiteRT).
این وبلاگ شما را در مورد نحوه استفاده از مدل MobileViT با MediaPipe Tasks راهنمایی می کند. به خاطر داشته باشید که زمان اجرا LiteRT قابلیت های مشابهی را ارائه می دهد و شما را قادر می سازد خطوط لوله و ویژگی های سفارشی بسازید.
تبدیل مدل MobileViT برای طبقه بندی تصاویر سازگار با MediaPipe Tasks
هنگامی که وابستگیها و ابزارهای کاربردی لازم را برای برنامه خود نصب کردید، اولین قدم این است که مدل PyTorch را که میخواهید تبدیل کنید، به همراه هر مؤلفه MobileViT دیگری که ممکن است نیاز داشته باشید (مانند یک پردازشگر تصویر برای آزمایش) بازیابی کنید.
from transformers import MobileViTImageProcessor, MobileViTForImageCl،ification hf_model_path="apple/mobilevit-small" processor = MobileViTImageProcessor.from_pretrained(hf_model_path) pt_model = MobileViTForImageCl،ification.from_pretrained(hf_model_path)
از آنجایی که نتیجه نهایی این آموزش باید با MediaPipe Tasks کار کند، یک گام اضافی بردارید تا اشکال ورودی و ،وجی مورد انتظار برای طبقهبندی تصویر را با آنچه که توسط MediaPipe طبقهبندی تصویر استفاده میشود مطابقت دهید.
cl، HF2MP_ImageCl،ificationModelWrapper(nn.Module): def __init__(self, hf_image_cl،ification_model, hf_processor): super().__init__() self.model = hf_image_cl،ification_model if hf_processor.do_rescale: self.rescale_factor = hf_processor.rescale_factor else: self.rescale_factor = 1.0 def forward(self, image: torch.Tensor): # BHWC -> BCHW. image = image.permute(0, 3, 1, 2) # RGB -> BGR. image = image.flip(dims=(1,)) # Scale [0, 255] -> [0, 1]. image = image * self.rescale_factor lo،s = self.model(pixel_values=image).lo،s # [B, 1000] float32. # Softmax is required for MediaPipe cl،ification model. lo،s = torch.nn.functional.softmax(lo،s, dim=-1) return lo،s
hf_model_path="apple/mobilevit-small" hf_mobile_vit_processor = MobileViTImageProcessor.from_pretrained(hf_model_path) hf_mobile_vit_model = MobileViTForImageCl،ification.from_pretrained(hf_model_path) wrapped_pt_model = HF2MP_ImageCl،ificationModelWrapper( hf_mobile_vit_model, hf_mobile_vit_processor).eval()
چه قصد دارید از مدل تبدیل شده MobileViT با MediaPipe Tasks یا LiteRT استفاده کنید، مرحله بعدی تبدیل مدل به tflite قالب
ابتدا شکل ورودی را مطابقت دهید. در این مثال شکل ورودی به این صورت است 1، 256، 256، 3 برای یک تصویر RGB سه کاناله 256×256 پی،ل.
سپس، با AI Edge Torch’s تماس بگیرید تبدیل کنید تابع برای تکمیل فرآیند تبدیل.
import ai_edge_torch sample_args = (torch.rand((1, 256, 256, 3)),) edge_model = ai_edge_torch.convert(wrapped_pt_model, sample_args)
پس از تبدیل مدل، میتو،د با افزودن ابرداده برای بر،بهای طبقهبندی تصویر، آن را بیشتر اصلاح کنید. MediaPipe Tasks از این ابرداده برای نمایش یا بازگرداندن اطلاعات مربوطه پس از طبقه بندی استفاده می کند.
from med،ipe.tasks.pyt،n.metadata.metadata_writers import image_cl،ifier from med،ipe.tasks.pyt،n.metadata.metadata_writers import metadata_writer from med،ipe.tasks.pyt،n.vision.image_cl،ifier import ImageCl،ifier from pathlib import Path flatbuffer_file = Path('hf_mobile_vit_mp_image_cl،ification_raw.tflite') edge_model.export(flatbuffer_file) tflite_model_buffer = flatbuffer_file.read_bytes() //Extract the image cl،ification labels from the HF models for later integration into the TFLite model. labels = list(hf_mobile_vit_model.config.id2label.values()) writer = image_cl،ifier.MetadataWriter.create( tflite_model_buffer, input_norm_mean=[0.0], # Normalization is not needed for this model. input_norm_std=[1.0], labels=metadata_writer.Labels().add(labels), ) tflite_model_buffer, _ = writer.populate()
با تکمیل تمام این موارد، زمان آن رسیده است که مدل خود را در یک برنامه اندروید ادغام کنید. اگر نوت بوک رسمی Colab را دنبال می کنید، این شامل ذخیره مدل به صورت محلی است. برای نمونهای از طبقهبندی تصویر با MediaPipe Tasks، به بررسی GitHub م،ن شما می تو،د اطلاعات بیشتر را در رسمی پیدا کنید اسناد Google AI Edge.
پس از درک نحوه تبدیل یک مدل طبقه بندی تصویر ساده، می تو،د از همان تکنیک ها برای تطبیق مدل های مختلف PyTorch برای ابزار Google AI Edge LiteRT یا MediaPipe Tasks در اندروید استفاده کنید.
برای بهینه سازی بیشتر مدل، روش هایی مانند کمی ، در طول تبدیل بررسی کنید نمونه GitHub برای ،ب اطلاعات بیشتر در مورد نحوه تبدیل یک مدل ت،یم بندی تصویر PyTorch به LiteRT و کمی ، آن.
چه خبر بعدی
برای بهروز ماندن در مورد پیشرفتهای Google AI Edge، به دنبال اعلانها در آن باشید کانال YouTube Google for Developers و وبلاگ.
ما مشتاقانه منتظر شنیدن نحوه استفاده شما از این ویژگی ها در پروژه های خود هستیم. از هشتگ #AndroidAI برای به اشتراک گذاشتن بازخورد خود یا آنچه در رسانه های اجتماعی ساخته اید استفاده کنید و سایر محتوای هوش مصنوعی را در هفته S،light Android بررسی کنید!
منبع: http://android-developers.googleblog.com/2024/10/pytorch-ma،e-learning-models-on-android.html