Jetson & 머신러닝

[3] 신호등 인식 및 차량 출발 안내(작성중)

아크리엑터 2024. 7. 12. 12:52
반응형


앞의 게시물에서 하드웨어에 대한 설명을 했고, 그 하드웨어에 대한 safe shutdown 스크립트만 추가하면 하드웨어 관련 사항은 끝날 것 같다.

 

아래 글과도 관련있다.

https://makejarvis.tistory.com/170

 

[생활코딩#1] 이미지 학습 및 사물 인식 응용 방법

1. 배경 chatgpt 4o 가 일반화되는 상황에서, LLM으로 사람이 하는 모든 행위(보고, 듣고, 말하고, 생각하는)를 구현할수 있게 된다.   과거라면,  모델을 직접 만들어야지 내가 직접했다고 할수 있

makejarvis.tistory.com

 

1. safe shutdown

script를 os에 넣어서, 차량 전원이 꺼지면 OS를 자동으로 shutdown하도록 한다.   전원이 종료되면, 꺼지도록 만든다. 물론, 전원이 종료되었을 때, shutdown되는 동안 전원이 공급되도록 만들어줘야 한다.

 

이를 위해서는 아래의 2개 글을 참고해서, 특정 GPIO 핀이 ON상태가 되면, shutdown시키도록 설정을 하도록 한다.

https://makejarvis.tistory.com/147

 

jetson nano, xavier safe shutdown button 안전 종료 버튼 만들기 (1)

updated 2024.7.7   아래 것이 더 나아서 업데이트 합니다. 기존 글은 종료 버튼이 아니라, 다른 용도로 활용할 수 있습니다. https://makejarvis.tistory.com/171 아주 간단한, 우분투 전원버튼으로 자동 Shutdo

makejarvis.tistory.com

 

https://makejarvis.tistory.com/164

 

Jetson Xavier 안전 종료 버튼 실행(3)

updated 2024.7.7   아래 것이 더 나아서 업데이트 합니다. 아래 글은 다른 용도로 사용할 수있습니다. https://makejarvis.tistory.com/171 아주 간단한, 우분투 전원버튼으로 자동 Shutdown 종료 방법기존에는

makejarvis.tistory.com

 

마지막으로, 전원이 꺼졌을 때 GPIO핀을 ON상태로 바꿔주는 것은 별도의 회로로 구성을 한다. 이것은 아래의 글에 설명하였다.

https://makejarvis.tistory.com/152

 

[2] 신호등 신호 변경 인식 및 차량 출발 인식 시스템 만들기

몇 년전 차안에서 있은 일부터 기록한다. 첫번째 사례는 출근길에 자주 있었던 상황이다. 서울에서 분당까지 출근할 때, 사거리에 멈췄을 때 잠시 눈을 감고 쉴 때가 많다. 1시간의 출근 시간동

makejarvis.tistory.com

 

 

 

2. 신호등 인식을 시키기 위한 카메라 구입


usb 카메라를 구입했음.  시야각은 가능하면 좁게 볼수 있는 놈으로 정하는 것이 낫다. 75도짜리를 하려고 했는데, 최종은 90도 앵글의 카메라를 샀다.
https://s.click.aliexpress.com/e/_onw6XEm

 

US $42.44 | 3840*2160 4K HD CMOS IMX415 95 Degree USB 2.0 Camera Module With Digital Mic 30FPS  MJPEG, YUY2

US $42.44 | 3840*2160 4K HD CMOS IMX415 95 Degree USB 2.0 Camera Module With Digital Mic 30FPS MJPEG, YUY2

star.aliexpress.com



90도 짜리도 시야각이 좀 넓기는 하다. 그리고 촬영된 영상이 외곡이 안되어야지 분석하는데 효과적이지 않을까 싶다.

이것 저것 사다가 시험해보려하니 비용이 많이 들어서, 현재 있는 부품들로 한정하였다.


3. 학습하기 위한 차, 신로등 이미지 얻기

이미지를 얻는 방법은 다양할텐데, 하드웨어를 차량에 설치 하지 않은 상황이라서, 구매한 카메라를 휴대폰에 연결해서 동영상을 촬영하였다.
그 후, 촬영된 동영상에서 신호등과 차량 이미지를 뽑아내게 했다. 이 방법은 기존의 yolo의 기본적으로 제공되는 모델을 이용해서 자동차, 버스, 트럭, 신허등 이미지를 인식했을 때, 파일에 해당 이미지를 저장하고 인식한 이미지의 테두리 사각형을 표시하도록 하는 방식을 사용해봤다. 이 결과물을 이용해서, 신호등에 대한 색상인식만 추가하면 품질 수준이 더 높게 될 것 같은 생각에서...

하지만, 당장 빨리 하려니 노가다가 제일 쉬운 방법으로 직접 이미지 샘플링하고, 인형에 눈 붙이듯이 자동차와 신호등 색상을 분류하도록 하는 방식으로 진행했다.

위에서 전반적인 내용을 설명했는데, 촬영 동영상을 얻는 방법이다. 구매한 카메라를 휴대폰에 연결해서 촬영하는 방법은 아래의 앱을 사용하였다.  구글스토어에서 usb camera 일반 버전을 사용하였다. 다른 앱을 사용해도 된다.



촬영된 동영상에서 필요한 사진을 동영상 툴을 이용해서 스냅샷을 저장하였다. 이렇게 해서 실체 차량 주행 영상에서 스냅샷 사진을 수백개 만들었다.  블랙박스의 카메라 영상을 사용하니, 카메라 렌즈가 상이해서 이미지에 대한 인식이 다를 수 있어서, 실제 사용하게될 카메라로 촬영한 영상을 직접 얻어서 학습용도로 사용하게 하였다.


4. 라벨링 작업

학습을 시키기 위해서, 스냅샷으로 촬영한 파일에 눈알 붙이는 작업을 해야 한다. 이 라벨링 작업은 labelme 프로그램을 사용하였다. regtangle로 설정하였다.

 


  

5. PyTorch 2.1.0 / Torch Vision 0.16.1 설치(CUDA지원)

학습과 실제 추론 작업을 하기 위해, Jetson Device에 torch와 torchvision을 설치하였다. 기존 설치된 것은 CUDA를 지원하지 않아서, GPU없이 CPU로만 실행되어서 모두 삭제하고 설치하는 방식으로 CUDA지원하게 하였다.

jetson nano에서 이렇게 설치를 해서, 학습도 할 수 있지만 시간이 오래 걸리고 메모리의 제약이 있어서, 학습은 성능이 더 좋은 시스템에서 진행하도록 하였다. (내 경우에는  Jetson AGX Xavier가 있어서, 이것을 학습용으로 사용하였다)  당연히, 학습/추론에 사용할 디바이스에 아래 절차로 설치를 해줘야 한다. jetson nano에도 동일하게 설치된다.

https://makejarvis.tistory.com/166

 

torch / vision 설치 on Jetson Xavier (yolo GPU학습용)

1. 기본 설치$ sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev$ sudo pip3 install 'Cython 2. torch 다운로드   jetpack 5.1.3이 설치된 Xavier에서 여러가지 방법을 해봤다. 소스로 설치를 해봤고, whl

makejarvis.tistory.com

 

5. yolov8 설치/환경설정

아래의 2개 글을 참고해서, yolov8을 설치한다.  첫번째 글에 있는 yolov5를 사용해도 큰 차이는 없다.

https://makejarvis.tistory.com/172

 

python 가상환경(venv) 사용하기

1. 가상 환경프로젝트 마다 파이썬의 패키지 버전을 달리해야 하는 경우가 있는데, 개별 프로젝트 단위로 설치되는 패키지 버전을 달리할 수 있도록 한다. 2. venv 설치$ sudo apt install python3-venvReadi

makejarvis.tistory.com

 

https://makejarvis.tistory.com/167

 

yolov8 설치 on Jetson xavier

$ sudo pip3 install ultralyticsCollecting ultralytics Downloading ultralytics-8.2.48-py3-none-any.whl (793 kB) |████████████████████████████████| 793 kB 1.2 MB/s Collecting ultralytics-thop>=2

makejarvis.tistory.com

 

 

6. 학습

 

 

 

7. 시험

 

 

 

8. 차량 장착

 

 

 

9. 실제 적용한 내용

 

 

반응형