실시간 킥보드 단속 시스템 - Raspberry Pi 4 8GB에서 실행 시행착오

🖥 Raspberry Pi 4 8GB

YOLOv3를 압축하여 모델을 생성하였으니 실제로 Raspberry Pi에서 실행하여 그 속도와 성능을 확인해보기로 했습니다.

📌 요약

  1. 가상 환경을 이용하여 환경 세팅을 하려고 하여 Miniconda를 설치하려고 했지만 이는 raspberry pi 4에서 더이상 지원이 안되었고 대신 minforge를 설치하였다. 하지만 결국에는 가상환경없이 하기로 하였다.
  2. OpenCV 4.5.5를 설치하였다.
  3. Pytorch 1.7.0과 TorchVision 0.8.0을 설치하여 실행했는데 한장당 처리 속도가 2.5~4초가 걸려서 실시간 처리가 불가능하다고 판단하여 NNPack을 이용하려고 시도했다.
  4. NNPack은 OpenCV 3.4.0과 호환이 된다고 하고 build가 계속 실패하였다.
  5. raspberry pi OS는 Bulleseye OS 64 bit, Pytorch 1.11.0 (Bullseye OS), TorchVision 0.12.0 (Bullseye OS)를 설치하여 모든 것을 최신으로 설치하였는데 실행해보니 한장당 처리속도가 0.5 ~ 1초로 이전의 1/3배로 단축되었다.

    최신 OS와 최신 패키지가 최적화를 하여 압축한 FLOPs에 맞는 성능을 내주었다고 결론을 내렸다.

🔧 Setting

1. 가상환경 생성

Miniconda를 설치하려고 했지만 설치되지 않았다. 찾아본 결과 다음과 같은 글이 있었다.

https://stackoverflow.com/questions/60532678/what-is-the-difference-between-miniconda-and-miniforge

miniforge는 conda-forge 채널로 패키지를 설치하는 community가 conda를 작게 만든 것이고 miniconda는 Anaconda에서 conda를 작체 만든것이고 anaconda 채널을 이용하여 패키지를 설치한다고 되어 있다. miniforge가 시작된 것은 miniconda가 aarch64를 지원하지 않기 때문이라고 한다. 그래서 miniforge로 설치해야한다.

❌ miniconda는 설치가 안됨

참고

1. miniconda 설치 파일 다운로드

Linux installers Python 3.7의 Miniconda3 Linux-aarch64 64-bit를 다운 받는다.
다운로드 후 download 폴더에 있는 파일을 pi로 옮긴다.

2. Verify your installation

https://conda.io/projects/conda/en/latest/user-guide/install/download.html#cryptographic-hash-verification
sha256sum Miniconda3-py37_4.11.0 Linux-aarch64.sh

3. Installing on Linux

https://conda.io/projects/conda/en/latest/user-guide/install/linux.html
bash Miniconda3-py37_4.11.0 Linux-aarch64.sh
엔터를 계속 누르고 yes를 하고 경로 설정 시 엔터를 눌러 기본값으로 설정한다.

4. reload terminal window

설치가 완료되면 터미널 창을 껐다가 다시 켠다.

5. 설치 확인

conda list 명령을 입력하여 잘 동작하는지 확인한다.

6. 가상환경 생성

conda create -n kickboard python=3.7
conda activate kickboard

⭕ miniforge 설치하기

참고링크

1. download Miniforge3-Linux-aarch64

https://github.com/conda-forge/miniforge

2. 다운로드 폴더로 이동

cd Download

3. 설치

bash Miniforge3-Linux-aarch64.sh

4. 확인

터미널 창을 껐다가 켰을 때 conda list 명령이 실행되는지 확인한다.

6. 가상환경 생성

conda create -n kickboard python=3.7
conda activate kickboard

2. OpenCV 4.5.5 설치하기

참고링크
다음 링크를 참고하여 설치하였다.

1. Version check

설치 전에 버전을 확인해야한다.

uname -a

aarch64인지 확인한다.

2. Swap check

build시 충분한 Swap memory 공간이 있는지 확인한다.
이는 Raspberry Pi 4 2GB 버전만 해당되는 사항이고 Raspberry Pi 4 4GB 또는 8GB의 경우 바꿀 것이 없다. 따라서 이 과정은 생략한다.

3. EEPROM check

EEPROM software version을 확인해야한다. 이를 하지 않으면 OpenCV 사용 시 열이 과도하게 발생하여 라즈베리 파이의 수명을 단축시킬 수 있다. 따라서 EEPROM software를 업데이트 하는 것만으로 열은 낮추어 라즈베리파이의 수명을 연장할 수 있다.

sudo rpi-eeprom-update

이때 BOOTLOAER: up-to-date 인지 확인한다.
이렇지 않다면 아래 명령을 실행한다.

sudo rpi-eeprom-update -a
sudo reboot

4. GPU memory 설정 변경하기

[menu]-[Preferences]-[Raspberry Pi Configuration]-[Performance]-[GPU Memory]를 128로 변경한다.

5. Installation script

script를 이용하여 설치에 필요한 모든 명령을 한번에 수행할 수 있다.

메모리가 총 6.5GB가 넘는지 확인한다.

free -m

필요한 파일을 다운받고 script를 실행하여 OpenCV를 설치한다.

wget https://github.com/Qengineering/Install-OpenCV-Raspberry-Pi-64-bits/raw/main/OpenCV-4-5-5.sh

sudo chmod 755 ./OpenCV-4-5-5.sh

./OpenCV-4-5-5.sh

6. 컴파일 결과물을 설치한다.

참고링크

  • 우선 생성된 opencv 폴더의 build 폴더로 이동한다.
cd opencv/build
  • 설치한다.
sudo make install
  • opencv 라이브러리를 찾을 수 있도록 한다.
sudo ldconfig

7. 설치 완료된 것을 확인한다.

conda list

패키지 이름에 python-opencv가 있으면 성공

3. NNPACK 설치(실패)

https://egemenertugrul.github.io/blog/Darknet-NNPACK-on-Raspberry-Pi/

4. Pytorch 1.11.0과 TorchVision 0.12.0 설치

https://qengineering.eu/install-pytorch-on-raspberry-pi-4.html
위 링크를 참고하여 Bullseye OS 버전으로 설치하였다.

실행 결과

좋은 웹페이지 즐겨찾기