0. 목표
hailo에서 제공하는 예제 중 하나인 detection.py을 이용해 내가 만든 hef파일을 실행시켜 볼 예정이다.
1. lable.json 생성
다음과 같이 test-labels.json 파일을 만들어준다.
{
"detection_threshold": 0.5,
"max_boxes":200,
"labels": [
"pupiles",
"eyes"
]
}
detection_threshold : 탐지된 객체의 신뢰도이다. 신뢰도가 50% 미만인 객체는 출력되지 않는다
max_boxes : 최대 탐지할 객체 개수를 200개로 설정
labels : 모델이 탐지할 객체 목록
나 같은 경우는 pupils과 eyes라는 객체이다.
2. HEF을 이용한 실행
다음과 같은 명령어를 통해 detection.py를 실행시킨다.
python basic_pipelines/detection.py --labels-json resources/test-labels.json --hef-path ./yolov8s.hef --input /dev/video0
주의해야 할 점은 각 test-label.json과 yolov8s.hef 파일의 경로를 잘 지정해 주면 된다.
아무튼 실행시키면 잘 작동하고. 눈을 부드럽게 잘 인식하는 것을 확인할 수 있었다.
test.py
import subprocess
command = [
"python", "./main.py",
"--labels-json", "./test-labels.json",
"--hef-path", "./yolov8s.hef",
"--input", "/dev/video0"
]
result = subprocess.run(command, capture_output=True, text=True)
print("STDOUT:", result.stdout)
print("STDERR:", result.stderr)
매번 저 명령어 치기 귀찮아서 단순하게 파이썬 스크립트 하나만 실행시키면 동작하게끔 만들어놨다.
3. pt 모델과 비교
3-1. yolov8s.pt
파이토치 모델을 그대로 라즈베리파이에서 실행시켰을 때는 cpu 사용량이 154%이며 CPU 3 사용량이 98.7%로 매우 높다
3-2. yolov8s.hef
hef파일로 컴파일을 시킨 후 실행시켰을 때는 CPU 사용량이 59.7%로 최적화가 된 것을 확인할 수 있다.
또한 메모리 사용량이라던지 Load averge도 조금 줄어들었다.
일단 현재 목표인 "hef파일을 실행시킨다!"까지만 마친 상태이고 저게 왜 돌아가는지는 아직 잘 모른다. 일단 detection.py코드를 잘 분석해 보고 공부해서 내가 잘 활용할 수 있게끔 해야겠다
'2025(학부 3학년) > [project]미숙련자를 위한 운전 피드백 디바이스' 카테고리의 다른 글
현재 겪고 있는 문제와 해결 방안 (0) | 2025.03.16 |
---|---|
[Hailo8] pt → HEF 파일 변환 (0) | 2025.03.08 |
[Hailo8] Dataflow Compiler (0) | 2025.03.02 |
[Hailo8] 기본 세팅 (0) | 2025.02.27 |
[라즈베리파이5, Hailo8] 구매 및 조립 (0) | 2025.02.27 |