一如以往, 過程總是辛苦的. 從轉檔, 安裝android studio, 了解各元件的功能與關係, 左試右試都不會完全成功. 這篇先記下會成功的方法.
A. source code
https://github.com/zldrobit/yolov5/tree/tf-android
Yolov5 環境建立.... 先跳過, 這比yolov4 darknet 的建立簡單多了.
基本上, 依下面步驟就可以簡單成功
1. conda create --name yolo5 python=3.8
conda activate yolo5
cd \yolov5 source code 中
2. pip install -r requirement1.txt
3. pip install tensorflow==2.4.1
4. 如還有缺少, 就個別 install 缺少的元件, 即可
5. python detect test --weights xx.pt --source 0.jpg
>> 以上指令做到 沒有缺元件的error 就算成功.
# 一開始安裝最新 python 3.9, tensorflow 也被自動安裝上 v2.8, 過種中一直無法成功, 後來重新安裝 py3.8, tensorflow 2.41
# yolov5 環境已算很成熟, 使用requirement 安裝, 就完成大部的安裝工作.
6. 將download 下來的source code 解壓到 D:\main_dir\ 只是舉例
B. 產生tensorflow model file
1. 將訓練好的原 yolov5s.pt 轉成tensorflow lite, 先將default 的coco yolov5 的weight file 做成功後再往下做.
python export.py --weights yolov5s.pt --include tflite --img 320 --data coco.yaml
這時會產生一個 yolov5s-fp16.tflite, 這個檔要放在 android 的assets 目錄, 才能跟著產生APK
2. 將 yolov5s-fp16.tflite copy 到 D:\Main_dir\android\app\src\main\assets
C. : 建立android studio 的環境.
https://developer.android.com/studio 按下綠色按鈕
android-studio-2021.1.1.22-windows.exe
不管一開始是否將全部必要的版本都安裝上, 都可以之後補充安裝
要熟悉幾個設定頁面,
1. File --> Project Structure
2. Tools-->SDK manager
3. Tools-->Device manager
D. 開啟 android studio 的project
android 的project 目錄通常以 android/ app 開頭
1. 從左上目錄 File --> open , 選到
* 要等前置作業完成後, 就可以開始編譯了.
2. 選 Make project , 就可以編譯
4. 如果沒有錯誤, 可以選擇run 內的 "run-app", 或中間的run 就可以帶出手機的emulator 看到執行的結果
5. 建立出APK, 在build 的中間, Build Bundle(s)/APK , 先選 build bundles
6. 再選build APK, 如果一切都沒問題. 在
D:\main_dir\ android\app\build\outputs\apk\debug , 就有 app-debug.apk copy 到手機即可安裝
如果一切都順利, 到此就結束了, 可以在手機看到object detect 成果.
一如往常, 事情不會這麼順利.
E. 安裝必要的android studio 套件
1. 手機版本: 設定--> 關於手機--> 軟體資訊, 記下Android 版本例如是12
如果你有數台手機想安裝, 也同時記下來.
a.進入SDK manager
注意API level 欄位,
選好後, 按下APPLY 就會開始安裝, 之後按下OK
b. 選SDK tool
勾選右下,show package Details, 進入 SDK 細項, 及NDK 細項
因為一直卡關, 版本一直追加, 貼圖為最後的樣子, 也許可以再精簡一些, 沒有必要增加這麼多版本.
d. 叫出 tools 的device manage
create device : 建立模擬手機. android 12 對應到API31
F. Build ->make project 會出第一個錯
No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
file --> project structure
Gradle version : 是另一個不好處理的問題, 不確定相依性如何, 或是如同系統建議的, 更新到最快就沒有問題?!
# 試過多個source code 版本, 整個過程一直在改 Gradle, 也一直無法完全成功
按下下方NDK 右下方的向下箭頭, 先選一個版本, 如果還是有error , 再換成其他版本
# NDK 會有版本及搭配SDK 的問題, 之後如果了解了真正的原因及用法後, 再補充說明,
下一篇: 如何加入custom train 後的 .pt
YOLO5 建立custom 手機安卓(android) 的APK-tflite TensorFlow版本(二)- 任性學習