วันพฤหัสบดีที่ 27 พฤศจิกายน พ.ศ. 2568

YOLOv8 on reComputer Jetson

ติดตั้ง CUDA ให้เรียบร้อยก่อน หากยังไม่ได้ติดตั้ง CUDA ให้ไปอ่านบทความนี้

https://maimemory.blogspot.com/2025/11/update-2025-flash-nvidia-jetson-nano.html


เปิด Terminal ตรวจสอบเวอร์ชั่นของ Python ด้วยคำสั่ง

python --version
python3 --version

จะพบว่า Jetpack 4.6.6 จะติดตั้ง Python3.6 มา แต่ Package Ultralytics รองรับการใช้งานร่วมกับ Python3.8 ขึ้นไป จึงต้อง Update Package และติดตั้ง Python3.8 ด้วยคำสั่ง

sudo apt update
sudo apt search python3
sudo apt install python3.8

ตรวจสอบเวอร์ชั่นของ Python3 ด้วยคำสั่ง

python3 --version
python3.8 --version

จะเห็นได้ว่า Default ของคำสั่ง python3 คือ python3.6 ต้องเปลี่ยนให้ Default ของคำสั่ง python3 เป็น python3.8 ด้วยคำสั่ง

echo alias python3="python3.8" >> ~/.bashrc
cat ~/.bashrc
python3 --version
source ~/.bashrc
python3 --version

ติดตั้ง pip (Package Installer for Python) ด้วยคำสั่ง

sudo apt search python3-pip
psudo apt install python3-pip

ตรวจสอบเวอร์ชั่นของ pip และอัพเกรด pip ด้วยคำสั่ง

sudo apt search python3-pip
sudo apt install python3-pip
pip3 --version
python3 -m pip --version
python3 -m pip install pip --upgrade

cd มาที่ Desktop จากนั้นสร้างโฟลเดอร์ YOLOv8 และติดตั้งโมดูล venv (Virtual Environment) สำหรับ Python3.8 เพื่อแยก Environment ของโปรเจคออกจาก Global Package

cd Desktop
mkdir YOLOv8
cd YOLOv8
sudo apt install python3.8-venv

ตรวจสอบการติดตั้งโมดูล venv และสร้าง Virtual Environment ภายในโปรเจคด้วยคำสั่ง

dpkg --list | grep venv
python3 -m venv venv
ls

ติดตั้ง jtop (Jetson Table of Processes) สำหรับมอนิเตอร์การทำงานของ Jetson และ Run ด้วยคำสั่ง

sudo python3 -m pip install jetson-stats
sudo jtop

เชื่อมต่อกล้อง USB จากนั้นตรวจสอบ Library V4L2 สำหรับใช้งานกล้องที่ติดตั้งมาพร้อม Jetpack ด้วยคำสั่ง

cat /lib/modules/$(uname -r)/modules.builtin | grep v4l2


ติดตั้ง v4l2-ctl (V4L Utils) สำหรับใช้งานร่วมกับกล้องและตรวจสอบ Device กล้องที่เชื่อมต่ออยู่ด้วยคำสั่ง 

sudo apt install v4l-utils
v4l2-ctl --list-devices

เชื่อมต่อการแสดงผลภาพจากใน Docker Container กับ X11 Display ด้วยคำสั่ง

xhost +local:docker

สร้างตัวแปร $t และ Pull Docker Container สำหรับ Run GPU จาก Ultralytics และ Run Container โดยเชื่อมต่อกล้อง USB /dev/video0 และ X11 Display สำหรับแสดงผลภาพจากใน Container ด้วยคำสั่ง

t=ultralytics/ultralytics:latest-jetson-jetpack4
sudo docker pull $t && sudo docker run -it --name yolov8 --ipc=host --runtime=nvidia --device /dev/video0:/dev/video0 --env="DISPLAY" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" $t

ทดสอบการเชื่อมต่อระหว่าง PyTorch กับ CUDA ภายใน GPU ด้วยการ Run Console ของ Python3 และใช้คำสั่ง

python3
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.current_device())
print(torch.cuda.get_device_name(0))
import torchvision
print(torchvision.__version__)
exit()
exit

เตรียมไฟล์ webcam.py (yolov8n.engine,device=0) และไฟล์ engine.py (สำหรับแปลงไฟล์ .pt เป็น .engine) สำหรับ Run ใน Docker Container จากนั้น Run Docker Container และ Copy โปรเจคโฟลเดอร์เข้าไปใน Docker Container ด้วยคำสั่ง

sudo docker start yolov8
sudo docker ps -a
sudo docker cp <project folder including all files and venv> yolov8:/home

Exec เข้าไปใน Container และ Activate Virtual Environment ด้วยคำสั่ง

sudo docker exec -it yolov8 bash
cd ../home/<project folder>
source venv/bin/activate
pip list

ติดตั้ง Ultralytics ภายใน Docker Container ภายใต้ Virtual Environment ด้วยคำสั่ง

python3 -m pip install pip --upgrade
pip install ultralytics

แปลงไฟล์ yolov8n.pt เป็น yolov8n.engine ด้วยการ Run ไฟล์ engine.py ด้วยคำสั่ง

python3 engine.py

ไฟล์ engine.py
                                                        from ultralytics import YOLO
                                                        model = YOLO("yolov8n.pt")
                                                        model.export(format="engine")

ถอนการติดตั้ง opencv-python-headless และติดตั้ง opencv-python ด้วยคำสั่ง

pip list
pip uninstall opencv-python-headless
pip install opency-python

Run ไฟล์ webcam.py เพื่อ Detect Object ผ่านกล้อง USB ด้วยคำสั่ง

python3 webcam.py

ไฟล์ webcam.py
                                from ultralytics import YOLO
                                import cv2
                                print(cv2.__version__)
                                model = YOLO("yolov8n.engine")
                                cap = cv2.VideoCapture(0)
                                while(True):
                                        ret, frame = cap.read()
                                        results = model(source=frame, save=False, device=0, conf=0.7)
                                        for r in results:
                                                annotated = r.plot()
                                                cv2.imshow("Live Camera", annotated)
                                                if(cv2.waitKey(1) & 0xFF == ord('q')):
                                                        break
                                cap.release()
                                cv2.destroyAllWindows()

ออกจาก Virtual Environment และออกจาก Docker Container ด้วยคำสั่ง

deactivate
exit

[Update 2025] Flash Nvidia Jetson Nano Module ด้วย SDK Manager 2.3.0 พร้อมติดตั้ง CUDA

ติดตั้ง VMWare ก่อนแล้วติดตั้ง OS Ubuntu 18.04 LTS ลงบน VMWare จากนั้น Run Ubuntu แล้วเปิด Web Browser พิมพ์ค้นหา SDK Manager แล้วคลิก Link ของ Nvidia Developer



เลื่อนลงมาด้านล่างไปที่ Visit SDK Manager Downloads Archive for older versions


เลือก Download SDK Manager เวอร์ชัน 2.3.0



จะได้ไฟล์ sdkmanager_2.3.0-amd64.deb มา


ดับเบิ้ลคลิกที่ไฟล์เพื่อติดตั้ง SDK Manager


หลังจากติดตั้งสำเร็จ เปิด Terminal แล้วพิมพ์คำสั่ง sdkmanager เพื่อเปิดซอฟต์แวร์ขึ้นมา


ทำการ Login ด้วย Nvidia Developer Account (จะต้องทำสมัคร Account ก่อน)


เสียบสาย USB ระหว่าง Nvidia Jetson Nano ในโหมด Factory Recovery กับคอมพิวเตอร์ SDK Manager จะสามารถ Detect Jetson Nano modules ได้



คลิกเครื่องหมากถูกที่ Host Machine ออก เพราะเราต้องการ Download เฉพาะซอฟต์แวร์ที่จะใช้กับ Nvidia Jetson Nano โดยเลือก Target Operating System เป็น Linux JetPack 4.6.6


คลิกเครื่องหมายถูกที่ Jetson SDK Components ออก เพื่อติดตั้งเฉพาะ OS เท่านั้น


คลิก Accept license agreement จากนั้นคลิก Continue เพื่อเริ่ม Download และติดตั้ง โดยให้กรอก Password ของ OS Ubuntu ที่ใช้อยู่


SDK Manager จะทำการ Download และ Create OS image รอจนครบ 100%



จากนั้นจะเข้าสู่กระบวนการ Flash OS หากเชื่อมต่อ Nvidia Jetson Nano ที่อยู่ในโหมด Factory Recovery ให้เลือกข้อ 1 เป็น Manual Setup แต่ถ้าเชื่อมต่อแบบปกติให้เลือกเป็น Automatic Setup จากนั้นกรอก Username และ Password ของ Nvidia Jetson Nano ที่ต้องการใช้งาน แล้วคลิก Flash



SDK Manager จะทำการ Flash OS ให้กับ Nvidia Jetson Nano รอจนกระทั่ง Flash เสร็จสิ้น


หลังจาก Flash สำเร็จ SDK Manager จะแสดงข้อความ Installation Completed Successfully คลิก Finish and Exit


Shutdown Nvidia Jetson Nano จากนั้นติดตั้ง SSD สำหรับเพิ่มหน่วยความจำบริเวณใต้บอร์ดให้เรียบร้อย เนื่องจากการติดตั้ง CUDA จำเป็นต้องใช้พื้นที่หน่วยความจำมากกว่า 16GB ซึ่งมากกว่าขนาดของ eMMC ของ Nvidia Jetson Nano


เปิดการใช้งาน Nvidia Jetson Nano อีกครั้ง จาก Desktop ไปที่เมนู Disks จากนั้นเลือกที่ SSD แล้ว Format Disk...


ตั้งชื่อ SSD ที่ติดตั้งในช่อง Volume Name และเลือก Type เป็น Internal disk for use with Linux systems only (Ext4) จากนั้นคลิก Create


กลับไปที่ Desktop ทำการ Clone rootOnNVMe ด้วยคำสั่ง

git clone https://github.com/limengdu/rootOnNVMe.git

Run Script เพื่อย้ายไฟล์ใน Root Directory ทั้งหมดจาก eMMc มายัง SSD ด้วยคำสั่ง

cd rootOnNVMe/
./copy-rootfs-ssd.sh

Run Script เพื่อย้าย Service rootfs จาก eMMc มายัง SSD ด้วยคำสั่ง

./setup-service.sh




จากนั้น Reboot Nvidia Jetson Nano จะเห็นว่า eMMC จะกลายเป็นหน่วยความจำแบบต่อขยาย ส่วน SSD จะกลายเป็นหน่วยความจำหลักหรือ Root ของ Nvidia Jetson Nano แทน


เมื่อมีหน่วยความจำเพียงพอแล้วก็สามารถติดตั้ง CUDA ต่อได้ โดยการเปิด SDK Manager อีกครั้ง เชื่อมต่อบอร์ดให้เรียบร้อย ใน STEP 02 ให้คลิกเลือก Jetson OS ออก แล้วคลิกที่ Jetson SDK Components แทน และควรเพิ่มหน่วยความจำ dev/sda1 ของ Ubuntu 18.04 LTS บน VMWare ด้วย เพราะต้องดาวน์โหลดไฟล์ขนาดใหญ่หลายไฟล์เพื่อติดตั้ง CUDA


จากนั้นคลิก Continue เพื่อเข้าสู่กระบวนการติดตั้ง CUDA คล้ายกับการ Flash OS ตามปกติ หลังจากติดตั้งสำเร็จ SDK Manager จะแสดงข้อความ Installation Completed Successfully คลิก Finish and Exit