You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2024/09/06 14:48:54 UTC

(tvm) branch main updated: [Apps] Remove mxnet dependency from /apps/android_camera/models (#17297)

This is an automated email from the ASF dual-hosted git repository.

tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git


The following commit(s) were added to refs/heads/main by this push:
     new ec28b6794b [Apps] Remove mxnet dependency from /apps/android_camera/models (#17297)
ec28b6794b is described below

commit ec28b6794b93b90bfdaf3b281cd7f4c3b4a1fbf8
Author: Masahiro Hiramori <mh...@gmail.com>
AuthorDate: Fri Sep 6 23:48:49 2024 +0900

    [Apps] Remove mxnet dependency from /apps/android_camera/models (#17297)
    
    * use torchvision's resnet18 instead of mxnet
    
    * cleanup import statements
---
 apps/android_camera/models/prepare_model.py | 31 +++++++++++++++--------------
 apps/android_camera/models/requirements.txt |  3 ++-
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/apps/android_camera/models/prepare_model.py b/apps/android_camera/models/prepare_model.py
index 9f2cbbdd6d..5fd99967ae 100644
--- a/apps/android_camera/models/prepare_model.py
+++ b/apps/android_camera/models/prepare_model.py
@@ -15,18 +15,16 @@
 # specific language governing permissions and limitations
 # under the License.
 
-import logging
-import pathlib
-from pathlib import Path
-from typing import Union
+import json
 import os
 from os import environ
-import json
+from pathlib import Path
+from typing import Union
 
 import tvm
 import tvm.relay as relay
-from tvm.contrib import utils, ndk, graph_executor as runtime
-from tvm.contrib.download import download_testdata, download
+from tvm.contrib import ndk
+from tvm.contrib.download import download, download_testdata
 
 target = "llvm -mtriple=arm64-linux-android"
 target_host = None
@@ -50,15 +48,18 @@ def del_dir(target: Union[Path, str], only_if_empty: bool = False):
 
 def get_model(model_name, batch_size=1):
     if model_name == "resnet18_v1":
-        import mxnet as mx
-        from mxnet import gluon
-        from mxnet.gluon.model_zoo import vision
+        import torch
+        import torchvision
 
-        gluon_model = vision.get_model(model_name, pretrained=True)
-        img_size = 224
-        data_shape = (batch_size, 3, img_size, img_size)
-        net, params = relay.frontend.from_mxnet(gluon_model, {"data": data_shape})
-        return (net, params)
+        weights = torchvision.models.ResNet18_Weights.IMAGENET1K_V1
+        torch_model = torchvision.models.resnet18(weights=weights).eval()
+        input_shape = [1, 3, 224, 224]
+        input_data = torch.randn(input_shape)
+        scripted_model = torch.jit.trace(torch_model, input_data)
+
+        input_infos = [("data", input_data.shape)]
+        mod, params = relay.frontend.from_pytorch(scripted_model, input_infos)
+        return (mod, params)
     elif model_name == "mobilenet_v2":
         import keras
         from keras.applications.mobilenet_v2 import MobileNetV2
diff --git a/apps/android_camera/models/requirements.txt b/apps/android_camera/models/requirements.txt
index dbf496b2d9..3e35efdeb6 100644
--- a/apps/android_camera/models/requirements.txt
+++ b/apps/android_camera/models/requirements.txt
@@ -1,4 +1,5 @@
 keras==2.9
-mxnet
 scipy
 tensorflow==2.9.3
+torch
+torchvision