Gần đây chủ đề AI và lập trình ứng dụng di động khá hot. Vì vậy, mình muốn chia sẻ với các bạn cách xây dựng ứng dụng ứng dụng AI trên di động.

Chuẩn bị Model

Chúng tôi sẽ sử dụng mô hình ResNet18 được đào tạo trước cho hướng dẫn này. ResNet18 là mô hình thị giác máy tính hiện đại với 1000 lớp để phân loại.

Cài đặt thư viện Torchvision

pip install torchvision

Tải model Resnet18

Chúng ta cần thực hiện các lệnh sau để tạo input và load model về máy import torch import torchvision resnet18 = torchvision.models.resnet18(pretrained=True) resnet18.eval() example_inputs = torch.rand(1, 3, 224, 224) resnet18_traced = torch.jit.trace(resnet18, example_inputs = example_inputs) resnet18_traced.save(“resnet18_traced.pt”)

Tạo ứng dụng Android

Tải xuống và cài đặt Android Studio nếu bạn chưa cài đặt trong khi cài đặt, hãy nói CÓ để tải xuống và cài đặt SDK. Liên kết: https://developer.android.com/studio

Cài đặt Android Studio

Sau khi đã cài đặt Android Studio chúng ta lần lượt làm theo các bước sau: – Chọn Empty Activity
  • Điền tên Project

Cài đặt NDK để chạy mã bên trong Android:

Cài đặt NDK để chạy mã gốc bên trong Android: Chuyển đến Công cụ> Trình quản lý SDK. Nhấp vào Công cụ SDK. Chọn hộp bên cạnh NDK (Cạnh nhau).

Thêm các phụ thuộc trong Android

Bên trong build.gradle (Mô-đun: ứng dụng). Thêm phần sau vào bên trong các dependencies . dependencies { implementation fileTree(dir: ‘libs’, include: [‘*.jar’]) implementation ‘androidx.appcompat:appcompat:1.0.2’ implementation ‘androidx.constraintlayout:constraintlayout:1.1.3’ implementation ‘org.pytorch:pytorch_android:1.3.0’ implementation ‘org.pytorch:pytorch_android_torchvision:1.3.0’ }

Thêm một bố cục cơ bản để tải và hiển thị giao diện trên Android

Đi tới app> res> layout> activity_main.xml và thêm mã bên dưới

Bạn sẽ có kết quả như sau:

Giao diện App Android

Chúng ta cần đặt quyền để đọc các kho ảnh trên thiết bị.

Đi tới app> manifests> AndroidManifest.xml và thêm mã bên dưới vào bên trong thẻ tệp kê khai.
Nhận quyền khi tải ứng dụng (Điều này chỉ được yêu cầu cho đến khi bạn cấp quyền).

Đi tới MainActivity java. Thêm mã bên dưới vào bên trong phương thức onCreate ().

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[] {android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}

Copy model ResNet vào ứng dụng Android

Bây giờ là lúc chúng ta sao chép mô hình mà chúng ta đã tạo bằng cách sử dụng tập lệnh python.
Mở ứng dụng của bạn từ File Explorer / Finder.
Đi tới ứng dụng> src> main.
Tạo một thư mục chứa các nội dung được đặt tên
Sao chép mô hình của bạn trong thư mục này.
Khi mở ra, bạn sẽ thấy trong Android Studio của mình, bạn sẽ thấy như trong hình dưới đây. (Nếu không, nhấp chuột phải vào thư mục ứng dụng và nhấp vào Đồng bộ hóa ứng dụng).

Thiết lập đầu ra của mô hình

Chúng ta cần liệt kê các lớp đầu ra của mô hình. Đi tới app > java. Bên trong thư mục đầu tiên tạo một tên lớp Java mới là ModelClasses. Xác định danh sách các lớp là (Danh sách đầy đủ là 1000 lớp, vì vậy, có thể sao chép tất cả ở Link bên dưới, hãy kiểm tra Json hoặc kiểm tra Git. Để biết danh sách đầy đủ và sao chép bên trong danh sách bên dưới): public static String [] MODEL_CLASSES = new String [] { “tench, Tinca tinca”, “cá vàng, Carassius auratus”

Các hàm chính trong Main Activity

Kiểm tra hoạt động của Ứng dụng

Bây giờ là lúc để kiểm tra ứng dụng. Có hai cách để làm điều đó: – Chạy trên Trình giả lập, mình thường hay chạy trên BlueStack – Sử dụng thiết bị Android. (Để làm được điều này, bạn cần bật USB Debugging Sau khi bạn chạy ứng dụng của mình, nó sẽ hoạt động giống như ứng dụng dưới đây:

Link code: https://github.com/tusharck/Object-Detector-Android-App-Using-PyTorch-Mobile-Neural-Network/blob/master/ObjectDetectorDemo/app/src/main/java/com/tckmpsi/objectdetectordemo/ModelClasses.java

Link app example: https://play.google.com/store/apps/details?id=com.nhunguet.objectdetectordemo&fbclid=IwAR1MEp0bQI3J06-w5w5jLyrn5vxGQNuHzzz5xDUSTar55ngYlDe8QMTSwz0

1 COMMENT

LEAVE A REPLY

Please enter your comment!
Please enter your name here