Yardım Kaggle üzerinde TensorFlow ile Büyük Bariyer Resifi korumak Meydan Üyelik

CMake ile çapraz derleme TensorFlow Lite

Bu sayfa, çeşitli ARM cihazları için TensorFlow Lite kitaplığının nasıl oluşturulacağını açıklar.

Aşağıdaki talimatlar Ubuntu 16.04.3 64 bit PC (AMD64), TensorFlow devel liman işçisi görüntü üzerinde test edilmiştir devel: tensorflow / tensorflow .

Önkoşullar

CMake'in kurulu ve indirilmiş TensorFlow kaynak koduna ihtiyacınız var. Lütfen onay CKağıt ile Yapı TensorFlow Lite Ayrıntılar için sayfa.

Hedef ortamınızı kontrol edin

Aşağıdaki örnekler Raspberry Pi OS, Ubuntu Server 20.04 LTS ve Mendel Linux 4.0 altında test edilmiştir. Hedef glibc sürümünüze ve CPU yeteneklerinize bağlı olarak, farklı araç zinciri sürümünü kullanmanız ve parametreleri oluşturmanız gerekebilir.

glibc sürümünü kontrol etme

ldd --version
ldd (Debian GLIBC 2.28-10) 2.28
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

ABI uyumluluğunu kontrol etme

Hedefiniz ARM 32-bit ise, VFP uygunluğuna bağlı olarak iki ABI mevcuttur. armhf ve armel . Bu belge bir armhf örneği göstermektedir, armel hedefleri için farklı araç zinciri kullanmanız gerekir.

CPU kapasitesini kontrol etme

ARMv7 için, hedefin desteklenen VFP sürümünü ve NEON kullanılabilirliğini bilmelisiniz.

cat /proc/cpuinfo
processor   : 0
model name  : ARMv7 Processor rev 3 (v7l)
BogoMIPS    : 108.00
Features    : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part    : 0xd08
CPU revision    : 3

AArch64 (ARM64) için oluşturun

Bu talimat gösterileri nasıl uyumlu AArch64 ikili oluşturmak için mercan Mendel Linux 4.0 , Ahududu Pi (ile Ubuntu Sunucu 20.04.01 LTS 64 bit yüklü).

Araç zincirini indir

Bu komutlar gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu araç zincirini ${HOME}/toolchains altına yükler.

curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C ${HOME}/toolchains

CMake'i çalıştırın

ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-
ARMCC_FLAGS="-funsafe-math-optimizations"
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
  -DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
  -DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
  -DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
  -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
  -DCMAKE_SYSTEM_NAME=Linux \
  -DCMAKE_SYSTEM_PROCESSOR=aarch64 \
  ../tensorflow/lite/

ARMv7 NEON için derleme etkin

Bu talimat, Raspberry Pi 3 ve 4 ile uyumlu VFPv4 ve NEON etkin ikili ile ARMv7'nin nasıl oluşturulacağını gösterir.

Araç zincirini indir

Bu komutlar gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf araç zincirini ${HOME}/toolchains altına yükler.

curl -LO https://storage.googleapis.com/mirror.tensorflow.org/developer.arm.com/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz
mkdir -p ${HOME}/toolchains
tar xvf gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz -C ${HOME}/toolchains

CMake'i çalıştırın

ARMCC_FLAGS="-march=armv7-a -mfpu=neon-vfpv4 -funsafe-math-optimizations"
ARMCC_PREFIX=${HOME}/toolchains/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
  -DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
  -DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
  -DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
  -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
  -DCMAKE_SYSTEM_NAME=Linux \
  -DCMAKE_SYSTEM_PROCESSOR=armv7 \
  ../tensorflow/lite/

Raspberry Pi Zero (ARMv6) için Yapın

Bu talimat, Raspberry Pi Zero ile uyumlu ARMv6 ikili dosyasının nasıl oluşturulacağını gösterir.

Araç zincirini indir

Bu komutlar arm-rpi-linux-gnueabihf araç zincirini ${HOME}/toolchains altına kurar.

curl -L https://github.com/rvagg/rpi-newer-crosstools/archive/eb68350c5c8ec1663b7fe52c742ac4271e3217c5.tar.gz -o rpi-toolchain.tar.gz
tar xzf rpi-toolchain.tar.gz -C ${HOME}/toolchains
mv ${HOME}/toolchains/rpi-newer-crosstools-eb68350c5c8ec1663b7fe52c742ac4271e3217c5 ${HOME}/toolchains/arm-rpi-linux-gnueabihf

CMake'i çalıştırın

ARMCC_PREFIX=${HOME}/toolchains/arm-rpi-linux-gnueabihf/x64-gcc-6.5.0/arm-rpi-linux-gnueabihf/bin/arm-rpi-linux-gnueabihf-
ARMCC_FLAGS="-march=armv6 -mfpu=vfp -funsafe-math-optimizations"
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
  -DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
  -DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
  -DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
  -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
  -DCMAKE_SYSTEM_NAME=Linux \
  -DCMAKE_SYSTEM_PROCESSOR=armv6 \
  -DTFLITE_ENABLE_XNNPACK=OFF \
  ../tensorflow/lite/