μ΄ νλ‘μ νΈλ Jetson Nanoμ λ―Έλ RCμΉ΄λ₯Ό νμ©νμ¬ λΌμΈ νΈλνΉμ μννλ μμ¨μ£Όν μμ€ν
μ
λλ€.
Jetson Nanoμ μΉ΄λ©λΌμ GPIOλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μμ§νκ³ , PilotNet λͺ¨λΈμ μ¬μ©ν΄ μ£Όν κ²½λ‘λ₯Ό νμ΅ λ° μ μ΄ν©λλ€.
- νλ‘μ νΈ κ°μ
- ν΄λ ꡬ쑰
- μμ κ°μ΄λ
- κΈ°μ μ€ν
- μ£Όμ κΈ°λ₯
- κ²°κ³Ό λ° μ±λ₯
- κ°λ°μ μκ°
- μΆκ° ν
- νλ‘μ νΈ μ΄λ¦: Self-Driving Car νλ‘μ νΈ
- λͺ©μ : Jetson Nano κΈ°λ° λ―Έλ RCμΉ΄λ‘ λΌμΈ νΈλνΉμ μμ£Όνλ μμ¨μ£Όν μμ€ν ꡬν
- κ°λ° κΈ°κ°: π 2024λ 9μ ~ 2024λ 12μ 18μΌ
- μ¬μ©λ κΈ°μ :
- π οΈ νλμ¨μ΄: μΉ΄λ©λΌ, DC λͺ¨ν°, μ보 λͺ¨ν°, Jetson Nano
- π» μννΈμ¨μ΄:
- JetPack 4.6.5
- Python 3.6.9
- OpenCV 4.1.1
- PyTorch 1.10.0
- Torchvision 0.11.1
- Scikit-learn
- CUDA 10.2
Self-Driving-Car-Project/
β
βββ data/ # λ°μ΄ν° λλ ν°λ¦¬
β βββ raw/ # μλ³Έ λ°μ΄ν°
β β βββ images/ # μ΄λ―Έμ§ νμΌ
β β βββ training_data.csv # μ‘°ν₯κ° λ°μ΄ν°
β βββ processed/ # μ μ²λ¦¬λ λ°μ΄ν°
β βββ resized_images/ # 리μ¬μ΄μ¦λ μ΄λ―Έμ§
β βββ training_data_resized.csv
β
βββ data_preprocessing/ # λ°μ΄ν° μ μ²λ¦¬ μ½λ
β βββ 1image_dataset.py # μ΄λ―Έμ§ λ° κ°λ μΆμΆ
β βββ 2dataset_path.py # λ°μ΄ν° κ²½λ‘ μμ
β βββ 3reset_data.py # λ°μ΄ν° κ²ν λ° μμ
β βββ 4distribution_plot.py # μ‘°ν₯κ° λΆν¬ μκ°ν
β βββ 5oversample_data.py # λ°μ΄ν° μ€λ²μνλ§
β βββ 6resize_images.py # μ΄λ―Έμ§ 리μ¬μ΄μ¦
β
βββ models/ # λͺ¨λΈ κ΄λ ¨ λλ ν°λ¦¬
β βββ best_pilotnet_model.pth # νμ΅λ λͺ¨λΈ
β
βββ training/ # νμ΅ μ½λ
β βββ train_pilotnet.py # PilotNet λͺ¨λΈ νμ΅ μ½λ
β
βββ testing/ # μ€μκ° ν
μ€νΈ μ½λ
β βββ test.py # μ€μκ° μΆλ‘ λ° ν
μ€νΈ
β
βββ README.md # νλ‘μ νΈ μ€λͺ
νμΌ
βββ requirements.txt # μμ‘΄μ± ν¨ν€μ§ λͺ©λ‘
λ¨Όμ GitHub μ μ₯μλ₯Ό ν΄λ‘ ν©λλ€.
git clone https://github.com/theunkillabledemonking/Self-Driving-Car-Project.git
cd Self-Driving-Car-Project
Dockerλ₯Ό μ¬μ©ν΄ 컨ν
μ΄λλ₯Ό μ€ννλ €λ©΄ μλ λͺ
λ Ήμ΄λ₯Ό μ¬μ©νκ±°λ, docker-compose.yml
νμΌμ νμ©νμΈμ.
sudo docker run -it \
--ipc=host \
--runtime=nvidia \
--restart=always \
-v $(pwd):/workspace \ # λ‘컬 λλ ν 리 μ°κ²°
--device /dev/video0:/dev/video0 \ # μΉ΄λ©λΌ λλ°μ΄μ€ μ°κ²°
--device /dev/gpiomem:/dev/gpiomem \ # GPIO λλ°μ΄μ€ μ°κ²°
-e DISPLAY=$DISPLAY \ # X11 λμ€νλ μ΄ νκ²½ λ³μ μ λ¬
-e QT_X11_NO_MITSHM=1 \
-v /tmp/.X11-unix:/tmp/.X11-unix \ # X11 μ λμ€ μμΌ μ°κ²°
--shm-size=1g \ # 곡μ λ©λͺ¨λ¦¬ ν¬κΈ° μ€μ
--privileged \ # νΉκΆ λͺ¨λ νμ±ν
--name my_camera_gpio_container \ # 컨ν
μ΄λ μ΄λ¦
ultralytics/ultralytics:latest-jetson-jetpack4 /bin/bash
docker-compose.yml
νμΌμ μμ±νκ±°λ, μλ λ΄μ©μ νλ‘μ νΈ λλ ν 리μ μΆκ°νμΈμ.
version: "3.8"
services:
my_camera_gpio_service:
image: ultralytics/ultralytics:latest-jetson-jetpack4
container_name: my_camera_gpio_container
runtime: nvidia
ipc: host
privileged: true
restart: always
shm_size: 1g
volumes:
- ./workspace:/workspace
- /tmp/.X11-unix:/tmp/.X11-unix
devices:
- /dev/video0:/dev/video0
- /dev/gpiomem:/dev/gpiomem
environment:
DISPLAY: $DISPLAY
QT_X11_NO_MITSHM: "1"
Docker Composeλ‘ μ€ννλ €λ©΄ μλ λͺ λ Ήμ΄λ₯Ό μ¬μ©νμΈμ:
docker-compose up -d
컨ν μ΄λ μ€ν ν μλ λͺ λ Ήμ΄λ‘ λ΄λΆμ μ μνμ¬ νλ‘μ νΈλ₯Ό μ€ννμΈμ.
docker exec -it my_camera_gpio_container /bin/bash
python train_pilotnet.py
xhost +local:docker
NVIDIA Jetson νκ²½μμ CUDAμ JetPack λ²μ μ΄ νΈνλλμ§ νμΈνμΈμ.
.env
νμΌμ μ¬μ©ν΄ νκ²½ λ³μλ₯Ό μ μνκ³ μ»¨ν
μ΄λμ μ λ¬ν μ μμ΅λλ€.
π κΈ°μ | μ€λͺ |
---|---|
Jetson Nano | Edge AI νλμ¨μ΄ νλ«νΌ |
OpenCV | μ΄λ―Έμ§ μ²λ¦¬ λ° λΆμ λΌμ΄λΈλ¬λ¦¬ |
PyTorch | λ₯λ¬λ λͺ¨λΈ νμ΅ λ° μΆλ‘ |
Torchvision | μ΄λ―Έμ§ λ°μ΄ν°μ μ§μ λꡬ |
Scikit-learn | λ°μ΄ν° μ μ²λ¦¬ λ° λΆμ |
CUDA | GPU κΈ°λ° μ»΄ν¨ν μ§μ |
- λΌμΈ νΈλνΉ: RCμΉ΄κ° μ§μ λ λΌμΈμ λ°λΌ μ£Όν
- μ€μκ° λ°μ΄ν° μμ§: μΉ΄λ©λΌ λ° GPIOλ₯Ό ν΅ν΄ λ°μ΄ν° μμ§
- λͺ¨λΈ νμ΅: PilotNet λͺ¨λΈμ νμ΅νμ¬ μ£Όν κ²½λ‘ μμΈ‘
- μ€μκ° μΆλ‘ : νμ΅λ λͺ¨λΈμ κΈ°λ°μΌλ‘ μ€μκ° μ£Όν μ μ΄
- λ°μ΄ν° μ μ²λ¦¬: μ΄λ―Έμ§ 리μ¬μ΄μ¦ λ° λ°μ΄ν° μ¦κ° μν
- λͺ¨λΈ κ²μ¦: μ±λ₯ κ²μ¦ λ° μ΅μ ν
- λΆμ κ²°κ³Ό: μλ³Έ λ°μ΄ν°λ νΉμ μ‘°ν₯κ°μ λ°μ΄ν°κ° κ³Όλνκ² λͺ°λ €μμΌλ©°, κ· νμ μΈ νμ΅μ μν΄ μΆκ°μ μΈ μ μ²λ¦¬κ° νμνμ΅λλ€.
- κ°μ λ λΆν¬: μ€λ²μνλ§μ ν΅ν΄ μ‘°ν₯κ° λ°μ΄ν°κ° κ· λ±νκ² λΆν¬λλλ‘ μ‘°μ νμ¬, λͺ¨λΈ νμ΅ μ±λ₯μ κ°ννμ΅λλ€.
- Train Loss: μ΅μ’ κ° 0.1794
- Validation Loss: μ΅μ’ κ° 0.3982
- Test Accuracy: 88.75%
- μ€λ²μνλ§ κΈ°λ²μΌλ‘ λ°μ΄ν° λΆκ· ν λ¬Έμ λ₯Ό ν΄κ²°.
- PilotNet λͺ¨λΈμ μ΅μ ν κ²°κ³Ό Test Accuracyκ° μ½ 2.27% κ°μ λμμ΅λλ€.
- νμ΅ κ³Όμ μ€ Validation Lossμ Train Loss κ°μ κ°κ·Ήμ μ€μ΄λ©° κ³Όμ ν© λ¬Έμ λ₯Ό μννμ΅λλ€.
μ΄ νλ‘μ νΈλ theunkillabledemonkingμ μν΄ κ°λ°λμμ΅λλ€.
theunkillabledemonking π κ°λ°μ |
- Jetson Nanoμ μ΅μ νλ μννΈμ¨μ΄λ₯Ό μ€μΉν΄μ£ΌμΈμ.
- PilotNet λͺ¨λΈμ ꡬ쑰λ₯Ό λ³κ²½νμ¬ μΆκ° μ±λ₯μ ν₯μν μ μμ΅λλ€.
- λ°μ΄ν° μμ§ μ μΆ©λΆν μ£Όν λ°μ΄ν°λ₯Ό ν보νλ κ²μ΄ μ€μν©λλ€.
π μ±κ³΅μ μΈ νλ‘μ νΈ μ§νμ κΈ°μν©λλ€! ππ¨