라즈베리파이4

라즈베리파이 yolov5 설치 오류 프로파일링

왕초보코딩러 2024. 1. 6. 14:27
728x90

2023년 10월을 기준으로

2023.09.11 - [라즈베리파이4] - [라즈베리파이4] 라즈베리파이4에 yolov5 설치하기

 

[라즈베리파이4] 라즈베리파이4에 yolov5 설치하기

https://dev-sunyo.tistory.com/6 [Raspberry Pi] 라즈베리 파이4 Yolov5 설치 Yolov5를 라즈베리에서 설치하는데 여러 링크를 참고하였다. 근데 해당 링크들로 설치를 진행했을 때 오류가 많아 내가 설치에 성공

dogfoot1.tistory.com

이 블로그 글을 이용하면 yolov5에 오류가 발생하더라고요

 

git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip install -r requirements.txt coremltools tensorflow
sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools

이렇게 사용하면

 

python detect.py

 

라즈베리파이4 yolov5를 이용하여 모델을 실행해봤을 때

segmentation fault가 나옵니다.

구글링으로 쳐도 나오지 않아서 해결 방법을 찾아봤습니다.

 

 

그래서 segmentation fault가 무엇인지 살펴보았습니다.

https://gem1n1.tistory.com/197

 

Python segmentation fault 해결방법

Python sementation fault는 다양한 상황에서 발생할 수 있다. 1. 코드 상의 문제 (도달할 수 없는 메모리에 액세스 하는 코드를 작성했을 때) 2. 호환되지 않는 패키지 간의 충돌 나의 경우는 2였다. 원래

gem1n1.tistory.com

1. 잘못된 메모리 참조

2. 호환되지 않는 패키지 간 충돌

 

이 두가지가 원인이라고 합니다.

그런데 detect.py는 yolov5에서 만들어진 파이썬 파일이기 때문에 1번이 원인일 것 같지 않았고

2번 패키지 간의 충돌이라고 생각했습니다.

 


그래서 yolov5 segmentation fault를 해결하기 위해 가설을 세워봤습니다.

1. pip의 문제

2. 기본 패키지와 yolov5의 requirements.txt의 패키지 버전 충돌

3. requirements.txt가 다운 받는 패키지의 버전 문제

 

 


1. pip의 문제

pip3를 추천한다는 글을 보고 pip 대신 pip3를 사용하여 다시 requirements.txt를 설치했습니다.

->해결 안됨

 


2. 라즈베리파이에 설치된 기본 패키지와

yolov5의 requirements.txt의 패키지 버전 충돌

 

이때는, 가상환경을 만들지 않았기 때문에

기본 패키지와 requiremetns.txt의 패키지 버전이 충돌한 것이라고 생각했습니다.

그래서 가상환경을 만들어줬습니다.

 

 

가상환경에서 yolov5를 git clone하고 requirements.txt를 깔아줬습니다.

pip3 install vitualenv
virtualenv yolo5_1
cd yolo5_1
source bin/activate
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip3 install -r requirements.txt coremltools tensorflow
sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools

설치 완.

 

 

가상환경으로 들어가서 python detect.py를 해봤습니다.

->해결 안됨

 


3. requirements.txt가 다운 받는 패키지의 버전 문제

기존에 $git clone https://github.com/ultralytics/yolov5.git을 하면

나오는 requirements.txt를 보겠습니다.

 

특정 버전 이상만 설치하면 된다는 requirements.txt이네요.

하지만 특정 버전 이상만 설치하면 되기 때문에 설치할 때마다 버전이 바뀌는 문제가 일어날 수 있을 것 같습니다

그래서 옛날에 anaconda를 이용해서 만든 yolov5 가상환경의 환경을 복사해서 새로운 requirements.txt를 만들어주겠습니다.

 

일단 pip list를 봅니다

pip list

가상환경이기 때문에 requirements.txt로 설치한 패키지들만 있네요

 

이제 이 list를 새로운 requirements.txt로 바꿔주겠습니다

pip freeze > new_require.txt

 

다른 폴더로 옮겨 이름을 requirements.txt로 바꾼 후 라즈베리파이4에 옮겨줍니다.

 

virtualenv yolo5_2
cd yolo5_2
source bin/activate
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
pip3 install -r requirements.txt

아까 옮긴 requirements.txt로 설치해줍니다.

 

->해결 완!!!!!!!

requirements.txt가 받은 패키지 문제였습니다....