NVIDIA Jetson Nano AI inferenceโดยใช้รูปภาพ สตรีมวิดีโอ RTSP

เมื่อเดือนที่แล้วฉันได้รับชุดนักพัฒนา NVIDIA Jetson Nano ร่วมกับ 52Pi ICE Tower Cooling Fan และเป้าหมายหลักคือการเปรียบเทียบประสิทธิภาพของบอร์ดกับฮีทซิงค์สต็อกหรือฮีทซิงค์ 52Pi + พัดลมแบบคอมโบ

แต่ฮีทซิงค์ในสต็อกสามารถระบายความร้อนให้กับบอร์ดได้ดีมาก และการทดสอบ stress ของ CPU ทั่วไปไม่ได้ทำให้โปรเซสเซอร์เร่งความเร็วเลย ดังนั้นฉันจึงต้องเน้น GPU ด้วยเช่นกัน เนื่องจากต้องใช้ความพยายามในการตั้งค่าทั้งหมด ดังนั้นฉันจะรายงานประสบการณ์ของฉันในการกำหนดค่าบอร์ด และใช้งานโปรแกรมทดสอบ AI รวมถึงการเรียกใช้การตรวจจับวัตถุบนสตรีมวิดีโอ RTSP

การตั้งค่าบอร์ด NVIDIA Jetson Nano

การเตรียมบอร์ดเหมือนกับที่คุณทำกับ SBC อื่นๆ เช่น Raspberry Pi และ NVIDIA มีคู่มือการเริ่มต้นใช้งาน ดังนั้นฉันจะสรุปดังนี้ :

  1. ดาวน์โหลดอิมเมจเฟิร์มแวร์ล่าสุด (nv-jetson-nano-sd-card-image-r32.2.3.zip ในขณะที่ตรวจสอบ)
  2. แฟลชด้วย balenaEtcher ไปยังการ์ด MicroSD เนื่องจากชุดพัฒนา Jetson Nanoไม่มีที่เก็บข้อมูลในตัว
  3. ใส่การ์ด MicroSD ในช่องใต้โมดูล เชื่อมต่อ HDMI แป้นพิมพ์ และเมาส์ ก่อนเปิดเครื่องในที่สุด

โดยค่าเริ่มต้น บอร์ดคาดว่าจะได้รับพลังงานจากแหล่งจ่ายไฟ 5V ผ่านพอร์ต micro USB แต่เพื่อหลีกเลี่ยงปัญหาด้านพลังงานที่อาจเกิดขึ้น ฉันเชื่อมต่อแหล่งจ่ายไฟ 5V/3A เข้ากับแจ็ค DC และติดตั้งจัมเปอร์บนส่วนหัว J48 เพื่อเปลี่ยนแหล่งพลังงาน

Jetson-Nano-DC-Jack-Power-Large

มันบูตเข้าสู่ Ubuntu อย่างรวดเร็ว และหลังจากผ่านวิซาร์ดการตั้งค่าเพื่อยอมรับข้อตกลงผู้ใช้ เลือกภาษา เค้าโครงแป้นพิมพ์ เขตเวลา และตั้งค่าผู้ใช้ ระบบทำการกำหนดค่าบางอย่าง และภายในไม่กี่นาที เราก็ทำได้ดี

Jetson-Nano-Ubuntu-18.04-Screenshot-1

ข้อมูลระบบ Jetson Nano และ เครื่องมือ NVIDIA

นี่คือข้อมูลระบบบางส่วนหลังจากอัปเดต Ubuntu ด้วย dist-upgrade:


โมดูลที่โหลด:


GPIO ดูเหมือนจะได้รับการกำหนดค่าอย่างถูกต้อง :


Nvidia Power Model Tool ช่วยให้เราสามารถตรวจสอบโหมดพลังงาน:


MAXN คือโหมดพลังงาน 10W และเราสามารถเปลี่ยนเป็น 5W และตรวจสอบได้ดังนี้:


NVIDIA ยังจัดเตรียม tegrastats utility เพื่อรายงานการใช้งานแบบเรียลไทม์ อุณหภูมิ และการใช้พลังงานของส่วนต่างๆ ของโปรเซสเซอร์:


มันค่อนข้างคลุมเครือ ดังนั้นคุณอาจต้องการตรวจสอบเอกสาร ตัวอย่างเช่น เมื่อไม่ได้ใช้งานดังที่แสดงด้านบน เรามีสองคอร์ที่ใช้ที่ความถี่ต่ำถึง 102 MHz อุณหภูมิของ CPU อยู่ที่ประมาณ 35°C โดยพื้นฐานแล้ว GPU นั้นไม่ได้ใช้งาน และการใช้พลังงานของบอร์ดอยู่ที่ 1.1 วัตต์

AI สวัสดีชาวโลก

วิธีที่ดีที่สุดในการเริ่มต้น AI inference คือการใช้ตัวอย่าง Hello Worldซึ่งสามารถติดตั้งได้ดังนี้:


คำสั่งสุดท้ายจะแสดงกล่องโต้ตอบ Hello AI World เพื่อเลือกรุ่นที่คุณต้องการใช้ ฉันเพิ่งไปกับค่าเริ่มต้น

Jetson-Nano-Model-Downloader

เมื่อดาวน์โหลดรุ่นที่เลือกแล้ว ระบบจะถามว่าคุณต้องการติดตั้ง PyTorch หรือไม่:

Jetson-Nano-PyTorch-Installer

หากคุณกำลังจะเล่นกับโมเดลที่ได้รับใช้มาก่อนหน้านี้ ไม่จำเป็นต้องติดตั้ง แต่ฉันเลือก PyTorch v1.1.10 สำหรับ Python 2.7 เผื่อว่าฉันจะมีเวลาเล่นกับการฝึกในภายหลัง

ตอนนี้เราสามารถสร้างตัวอย่างได้:


จากนั้นทดสอบ inference ภาพด้วยตัวอย่างภาพโดยใช้ ImageNet:


นี่คือผลลัพธ์ของคำสั่งสุดท้าย:


นอกจากนี้ยังสร้าง output_0.jpg โดยมีข้อมูลอนุมาน “97.858 สีส้ม” วางซ้อนอยู่ด้านบนของภาพ

Tiny YOLO-v3

ตัวอย่าง imageNet ใช้เวลาไม่นาน ดังนั้นฉันจึงลองใช้ตัวอย่าง Tiny-Yolo3 ซึ่งใช้ภาพ 500 ภาพตามที่อธิบายไว้ใน ฟอรัม โพสต์:


หลังจากที่เราสร้างตัวอย่างแล้ว เราก็มีอีกหลายอย่างมราต้องทำ ก่อนอื่นฉันดาวน์โหลด 5 ภาพจากเน็ตพร้อมวัตถุทั่วไป:


แก้ไขแล้ว/deepstream_reference_apps/ yolo data/ test_images.txt เพื่อทำซ้ำ 5 บรรทัดด้านล่าง 100 ครั้งเพื่อให้มี 500 รายการ:


และในที่สุดก็แก้ไข ~/deepstream_reference_apps/yolo/config/yolov3 -tiny.txt เพื่อใช้ความแม่นยำ kHALF:


ตอนนี้เราสามารถเรียกใช้ Tiny YOLO inferenceได้แล้ว


นั่นคือผลลัพธ์ (ไม่ใช่ครั้งแรก):


ตัวอย่างนั้นใช้สำหรับการเปรียบเทียบเท่านั้น และใช้เวลา 30.70 ms สำหรับการ inference แต่ละครั้ง ดังนั้นเราจึงมีความเร็วใน inference ประมาณ 32 fps ตัวอย่างนั้นไม่ได้รายงานข้อมูล inference และไม่แสดงสิ่งใดบนจอแสดงผล

การตรวจจับวัตถุจากสตรีม RTSP

ในทางทฤษฎี ฉันสามารถวนลูปตัวอย่าง Tiny Yolov3 สำหรับการทดสอบความเครียดได้ แต่การเน้น GPU อย่างต่อเนื่องอย่างต่อเนื่อง วิธีที่ดีที่สุดคือ inferenceใ นสตรีมวิดีโอ ส่วนตัวอย่าง detectnet-camera ของ Jetson Inference (aka AI Hello World) สามารถทำงานได้ เมื่อคุณมีกล้อง USB ที่ใช้งานร่วมกันได้

USB-Cameras-640x427

ฉันมีเว็บแคมรุ่นเก่าสองตัวที่ฉันซื้อเมื่อ 10 ถึง 15 ปีที่แล้ว ฉันไม่เคยทำให้ Logitech Quickcam ทำงานได้ใน Linux หรือ Android แต่ก่อนหน้านี้ฉันสามารถใช้อันที่เล็กกว่าที่เรียกว่า “Venus 2.0” ในระบบปฏิบัติการทั้งสองได้ แต่คราวนี้ ฉันไม่เคยทำให้เครื่องหลังนี้ทำงานได้ทั้งใน Jetson Nano หรือแล็ปท็อป Ubuntu 18.04 ของฉัน หากคุณต้องการที่จะได้รับ MIPI หรือกล้อง USB ที่ทำงานร่วมกับคบอร์ด เพื่อตรวจสอบว่าได้ตรวจสอบรายชื่อของกล้องที่เข้ากันได้

แต่แล้วฉันก็คิดว่า…ฉันมีกล้องตัวเดียวที่ใช้งานได้! เว็บแคมบนแล็ปท็อปของฉัน แน่นอน ฉันไม่สามารถเชื่อมต่อกับบอร์ด NVIDIA ได้ แต่ฉันเริ่มสตรีม H.264 โดยใช้ VLC แทน:


cvlc เป็นคำสั่ง line utility สำหรับ VLC ฉันสามารถเล่นสตรีมบนแล็ปท็อปของฉันเองได้ด้วย:


มีความล่าช้าประมาณ 4 วินาทีและฉันคิดว่าการตั้งค่าตัวเลือกการแคชเครือข่ายเป็น 200 ms อาจช่วยได้ แต่วิดีโอด้านล่างการสับแทน ปัญหาอยู่ที่อื่น และฉันไม่มีเวลาตรวจสอบรีวิวนี้ ส่วนสำคัญคือฉันสามารถทำให้สตรีมทำงานได้:

VLC-RTSP-Stream-602x480

เมื่อฉันพยายามเล่นสตรีมใน Jetson Nano ด้วย VLC มันจะเกิดข้อผิดพลาด แต่อย่าไปสนใจเรื่องนั้นเลย และลองดูว่าเราสามารถสร้างตัวอย่างกล้อง detectnet เพื่อทำงานกับสตรีม RTSP ของเราได้หรือไม่

มีคนทำอย่างนั้นเมื่อไม่กี่เดือนที่ผ่านมาจึงช่วยได้มาก เราจำเป็นต้องแก้ไขซอร์สโค้ด ~/jetson-inference/build/utils/camera/ gstCamera.cppในไฟล์สองส่วน:

    1. ปิดใช้งานการตรวจจับกล้อง CSI ในฟังก์ชัน gstCamera::ConvertRGBA:
    2. ฮาร์ด-โค้ดสตรีม RTSP ในฟังก์ชัน gstCamera::buildLaunchStr:

ตอนนี้ เราสามารถสร้างตัวอย่างใหม่ และรันโปรแกรมได้:


และประสบความสำเร็จ! หากคุณยอมรับว่าฉันกำลังถือโดนัทชิ้นใหญ่ไว้บนหัว และซานตาคลอสก็เป็นตุ๊กตาหมี…

Jetson-Nano-RTSP-Stream-Inference-640x427

คอนโซลได้รับการปรับปรุงอย่างต่อเนื่องโดยมีการตรวจพบวัตถุและรายงานเวลา


ตัวอย่างนี้จะเป็นวิธีที่ดีในการเริ่มต้นเชื่อมต่อกล้อง IP อย่างน้อยหนึ่งตัวกับ Jetson Nano เพื่อใช้ประโยชน์จาก AI เพื่อลดการแจ้งเตือนที่ผิดพลาด แทนที่จะใช้การตรวจจับ PIR แบบดั้งเดิมที่มักใช้ในกล้องวงจรปิด เราจะพูดถึงการใช้งาน CPU และ GPU รวมถึงการระบายความร้อนในโพสต์ถัดไป

ฉันอยากจะขอบคุณ Seeed Studio ที่ส่งชุดพัฒนา NVIDIA Jetson Nano สำหรับการประเมิน ขายในราคา $ 99.00 (~3,150฿) หรือคุณยังจะได้พบใน Amazon หรือ Lazada หรือ Shopee thailand หรือโดยตรงจาก NVIDIA 

แปลจากบทความภาษาอังกฤษ : AI inference using Images, RTSP Video Stream on NVIDIA Jetson Nano Devkit

FacebookTwitterLineEmailShare

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

โฆษณา
โฆษณา