一如以往, 過程總是辛苦的. 從轉檔, 安裝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

image

不管一開始是否將全部必要的版本都安裝上, 都可以之後補充安裝

要熟悉幾個設定頁面, 

    1. File --> Project Structure

    2. Tools-->SDK manager

    3. Tools-->Device manager

D. 開啟 android studio 的project

  android 的project 目錄通常以 android/ app 開頭

  1. 從左上目錄 File --> open , 選到

image

* 要等前置作業完成後, 就可以開始編譯了.

image

2. 選 Make project , 就可以編譯

image

4. 如果沒有錯誤, 可以選擇run 內的 "run-app", 或中間的run 就可以帶出手機的emulator 看到執行的結果

5. 建立出APK, 在build 的中間, Build Bundle(s)/APK  , 先選 build bundles

image

6. 再選build APK, 如果一切都沒問題. 在
    D:\main_dir\  android\app\build\outputs\apk\debug  , 就有 app-debug.apk copy 到手機即可安裝

如果一切都順利, 到此就結束了, 可以在手機看到object detect 成果.

 

一如往常, 事情不會這麼順利.

E. 安裝必要的android studio 套件

   1. 手機版本: 設定--> 關於手機--> 軟體資訊, 記下Android 版本例如是12

       如果你有數台手機想安裝, 也同時記下來.

      image

      a.進入SDK manager

image

注意API level 欄位, 

選好後, 按下APPLY 就會開始安裝, 之後按下OK

 b. 選SDK tool

  image 

   勾選右下,show package Details, 進入 SDK 細項, 及NDK 細項

image

image

因為一直卡關, 版本一直追加, 貼圖為最後的樣子, 也許可以再精簡一些, 沒有必要增加這麼多版本.

  d. 叫出 tools 的device manage 

image

   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

image

Gradle version : 是另一個不好處理的問題, 不確定相依性如何, 或是如同系統建議的, 更新到最快就沒有問題?!

  #  試過多個source code 版本, 整個過程一直在改 Gradle, 也一直無法完全成功

按下下方NDK 右下方的向下箭頭, 先選一個版本, 如果還是有error , 再換成其他版本

  # NDK 會有版本及搭配SDK 的問題, 之後如果了解了真正的原因及用法後, 再補充說明,

image

下一篇: 如何加入custom train 後的 .pt 

             YOLO5 建立custom 手機安卓(android) 的APK-tflite TensorFlow版本(二)- 任性學習

arrow
arrow
    創作者介紹
    創作者 cianfen 的頭像
    cianfen

    cianfen的部落格

    cianfen 發表在 痞客邦 留言(0) 人氣()