Python : edge AI (엣지 AI) 라즈베리파이 텐서플로우 설치

목표 : edge AI

시계열 데이터 실시간 분석

메인 출처 : https://qengineering.eu/install-tensorflow-2.7-on-raspberry-64-os.html

뇌피셜) 라즈베리파이 tensorflow가 정식으로 지원되지않아 매우 힘들었다.
형님들 께서는 시간을 아끼시길 바랍니다.

뇌피셜) 해당 출처 재단에서 연구해서 만든 텐서플로우 버전인것같습니다. (qengineering)
텐서플로우가 aarch64에서 안돌아가요.

텐서플로우 라이트를 사용하려고했는데 시계열 모델을 어떻게 하는지 모르겠다.
주로 거의 이미지 인식이다.
뇌피셜) 아마 시계열데이터는 그 과거에 맞춰 학습해야 하기때문에 사전학습으로 무리여서 그런듯싶다.

최대장점

서버가 필요없이(서버구축비용절감, DB구축비용절감)
그 즉시 데이터의 결과를 알려준다.
보안이 매우 우수하다.
뇌피셜) 로컬에서 그 즉시 처리하기때문에 서버오픈 안해도된다.

최대단점

버그 발생시 수정이 숨막힌다. 내 수준에서 버그를 고칠수 없다
e.g. (CPU 관련 버그 AVX , Wheel 관련버그, 라이브러리 충돌, 하드웨어 플랫폼 충돌 등)

성능

  • 수집데이터 gan으로 결측치 즉시 보완
  • 과거 시계열 데이터 기반 즉시 미래 시계열 예측
  • 즉시 이상 감지

우분투 16, 18 버전은 틀딱 버전이라서 바로 21버전으로 설치하였다.
20 버전이 제일 베스트 같으나 20버전 에서는 안돌아갔다. 이유는 모른다.

참고 사이트는 70여개 되어서 생략하였다.

우분투가 같은 버전인데도 데스크탑 버전만 실행되었다.
서버버전은 안된다.
원인은 찾기 싫었다. 아마도 라이브러리 충돌인거같은데 데스크탑으로 그냥 쓰기로하였다.
뇌피셜) 데스크탑과 서버 차이는 그렇게 속도성능 차이가 나지않을것같다.
뇌피셜) 메모리용량 소모만 차이가 나는게 아닐까 싶다.

사용 하드웨어
라즈베리파이4 모델 B rev 1.4
우분투 os 파일은 공식 홈페이지에서 설치하였다.

1. 우분투 설치 및 환경설정

우분투 파일은 공식홈페이지에서 설치

https://ubuntu.com/download/raspberry-pi
21.10 데스크탑 버전 64bit
뇌피셜) 이게 3개가 같은뜻이더라 arm64 , armv8 , aarch64

sd 카드에 부팅파일 쓰기

https://www.raspberrypi.com/software/
imager1.7.1 윈도우 버전 다운받앗다.

sd카드를 라즈베리파이에 삽입 후 환경확인

uname -a
uname -i (필수아니넹 ㅋ)

------------------- #9-Ubuntu SMP PREEMPT Wed Sep 29 08:27:44 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
매우 중요하다
aarch64가 3개떠야한다 이거몰라서 시간엄청 낭비했다.
1개떠도안된다.

1개가 뜨면 uname -i에서 unknown이 떠버린다.
uname -i 도 aarch64가 떠야한다. 암튼 arm64 종류가 떠야한다.

그러면 pip로 설치할때 해당플랫폼은 텐서플로우 설치할수없습니다 뜨면서 다운로드 안됫다.
강제로 wheel을 인터넷에 다운받아서 설치는 되지만 import하면 Illegal instruction (core dumped) 뜨면서 안된다. 아무튼 안된다.

Illegal instruction (core dumped)
해결 방안으로 텐서플로우 다운그레이드 하면 된다고한다.
하지만, 우리는 파이썬 3.9 버전이다.
무슨원인인지 모르지만 파이썬 3.6으로 설치해도 다운그레이드 해도 안됨.
버전별로 텐서플로우 지원이 다르다.
텐서플로우2는 64비트를 지원한다.
https://www.tensorflow.org/install?hl=ko
참고 바랍니다.
에러 코드는 저렇게 뜨지만 이유가 다양하다고함
e.g. CPU AVX 지원 유무 , 컴파일러 지원 유무

그외 추가 환경확인

free -m #메모리
gcc -v #컴파일러 버전


이유는 모르겠지만 swap 메모리 1.5gb 남겨야한다고함.
저는 귀찮아서 기존 1gb 그대로 가져감.

Tensorflow Lite를 컴파일하려면 온보드 메모리sawp 가 1.5gb 넘어야한다고함.
저는 tf lite 안씀 하지만 추후 사용 될 예정이므로 swap 조절법 참고바랍니다.
https://qengineering.eu/install-opencv-4.4-on-raspberry-pi-4.html#Swap_space

인터넷이 안되니까 연결부터 하겠습니다.

무선인터넷 연결

sudo apt-get install network-manager
sudo nmtui

nmtui 치고 와이파이 리스트에서 연결하면 끝

근데 하다보니 어떤 OS에서는 와이파이 리스트가 안떳음.. 수동으로 입력하거나
안되시면
https://changun516.tistory.com/120 [하루의 쉼터]
참고 바랍니다.

라즈베리파이 원격접속 설정

편하게 작업하기위해 ssh 원격접속으로 환경설정하고자 함.
https://ca.ramel.be/74
https://reddb.tistory.com/190#google_vignette

수없이 많이 봤지만 제일 빠르고 간편한 방법으로 진행하고자함.

먼저, 랜선 꼽고

sudo apt-get install openssh-server
sudo vi /etc/ssh/sshd_config

주석 제거후 port 번호 임의 입력

sudo service ssh start #ssh 실행
sudo service ssh status # 포트 열린거 확인

포트가 1004 열렸는지 확인

sudo ufw allow from 192.168.1.0/24 to any port 1004 proto tcp
# 192.168.1.~ 으로 들어오는 모든 아이파 포트에 대하여 1004포트 tcp 개방

sudo ufw enable

sudo ufw status numbered #방화벽 확인

이제 나의 pc에서 파워셀을 열어

ssh [email protected] -p 1004 
# ubuntu 라는 계정으로 해당 아이피의 포트 접속

비밀번호 에러가 뜨면 라즈베리파이 터미널에서 셀창에 passwd 입력하여 로 비밀번호 아무거나 변경 후 다시 접속

저 처럼 원격접속할때 한번에 끝내면되지만,
실패해서 여러번 접속하면 이상한거 뜸.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@@@@@@
@경고: 원격 호스트 식별이 변경되었습니다! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ @@@@@@@@@@
누군가 불쾌한 일을 하고 있을 가능성이 있습니다!
누군가가 지금 당신을 도청하고 있을 수 있습니다(중간자 공격)!
RSA 호스트 키가 방금 변경되었을 수도 있습니다.
원격 호스트가 보낸 RSA 키의 지문은 다음과 같습니다.

이거뜨면 ras호스트키 삭제했음

C:\Users\users\.ssh 에서 파일 다삭제했음

apt-get 업데이트

apt-get update
apt-get upgrade

2. 텐서플로우 설치

무조건 백지상태에서 시작합니다.
먼저 apt 로 파이썬 다운로드했으면 포맷바랍니다.
파이썬 3.9면 괜찮습니다.
또한 python-pip 패키지 설치했으면 포맷바랍니다.
저는 안되더라구요.


https://qengineering.eu/install-tensorflow-2.7-on-raspberry-64-os.html

빨간 번호 다 확인 바랍니다. 하나라도 틀리면 안돌아가요. 1번은 틀려도됨.
근데 이사람은 aarch64 가 하나인데 돌아갑니다.
저는 안돌아갔어요. 이게 이사람이 어떤 이미지 로 돌린건지 모르겠어요.
저도 debian bullseye 깔았는데 1개 뜨긴하는데 안돌아가요.
텐서플로우 설치할때 텐서플로우 설치가안되요.
여기서 빅 포인트는 5번입니다.
numpy 1.19.5 만 지원됩니다.
뇌피셜) 왜냐하면 비정식판이 해당 numpy버전만 호환된다고합니다.
실제로 그외 버전에서 실행하면 cpu AVX 에러떠요
뇌피셜) aarch64가 지원안되는것같습니다.

아래는 제 라즈베리파이 사양입니다.

pip3 설치

sudo apt-get python3-pip
sudo pip3 install numpy==1.19.5

왠만하면 가상환경도 설치바람

텐서플로우 i/o (비정식판) 설치

출처 : https://qengineering.eu/install-tensorflow-2.7-on-raspberry-64-os.html
# get a fresh start
$ sudo apt-get update
$ sudo apt-get upgrade

# install pip3
$ sudo apt-get install git python3-pip


# download tensorflow io
$ git clone -b v0.23.1 --depth=1 --recursive https://github.com/tensorflow/io.git
$ cd io
$ python3 setup.py -q bdist_wheel --project tensorflow_io_gcs_filesystem
$ cd dist
$ sudo -H pip3 install tensorflow_io_gcs_filesystem-0.23.1-cp39-cp39-linux_aarch64.whl
$ cd ~

텐서플로우 설치 (비정식판)

# utmost important: use only numpy version 1.19.5
# check the version first
$ pip3 list | grep numpy
# if not version 1.19.5, update!
$ sudo -H pip3 install numpy==1.19.5
# (re)install termcolor at the correct location
$ python3 -m pip install termcolor
# install gdown to download from Google drive
$ sudo -H pip3 install gdown
# download the wheel
$ gdown https://drive.google.com/uc?id=1FdVZ1kX5QZgWk2SSgq31C2-CF95QhT58
# install TensorFlow 2.7.0
$ sudo -H pip3 install tensorflow-2.7.0-cp39-cp39-linux_aarch64.whl

끝입니다.

import tensorflow as tf

tf.keras.layer.dense 등 모델 생성 테스트 동작 확인하였습니다.

sample code : tensorflow ex
import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)

텐서플로우가 파이썬보다 c++에서 몇배더 빠르게 돌아간다고합니다.
파이썬으로 왜설치함? 개뻘짓 축하드립니다.
저는 c++로 모델만들 자신이없거든요.
이미지 인식위주면 tensorflow lite 오픈소스 그대로 사용 하면 될것같습니다.
저는 시계열 데이터 분석이라서 lite 오픈소스가없었습니다.

라즈베리파이가 개인pc보다 4배 느렸습니다. 개인pc 사양은 램32, cpu 인텔십세대 i5
하지만 가격으로 보자면 라즈베리파이는 10만원인데 pc 100만원보다 저렴한
킹가성비를 보여줍니다.

3. 그 외 각종버그 및 기타

pip3 install tensorflow

텐서플로우 설치가 안된다.

해당 하드웨어 플랫폼에 맞은 것을 찾을수 없습니다.

aarch64 인식을 못한것으로 사료됨.
uname -i 에서 aarch64가 인식되어야함.

텐서라이트 설치오류

sudo apt-get install cmake
sudo apt-get install curl
sudo apt-get install build-essential
sudo apt-get install make

Swap 설정

https://psychoria.tistory.com/717 (추천)
https://devkingdom.tistory.com/169

mkdir /swap
dd if=/dev/zero of=/swap/swapfile bs=1024 count=2097152
swap 2.1gb 생성

cd /swap
mkswap swapfile
chmod 600 swapfile
swapon swapfile
시스템권한 설정
스왑제거
swapoff swapfile
rm -rf /swap/swapfile
/swap/swapfile swap swap defaults 1 1 -> 주석 or 삭제

가상환경

sudo apt update
sudo apt install python3-dev python3-pip python3-venv

python3 -m venv --system-site-packages ./venv-tensor

source ./venv-tensor/bin/activate

error: invalid command 'bdist_wheel' 에러

pip3 install wheel

좋은 웹페이지 즐겨찾기