สารบัญ:

ถ่ายโอนการเรียนรู้ด้วย NVIDIA JetBot - สนุกกับกรวยจราจร: 6 ขั้นตอน
ถ่ายโอนการเรียนรู้ด้วย NVIDIA JetBot - สนุกกับกรวยจราจร: 6 ขั้นตอน

วีดีโอ: ถ่ายโอนการเรียนรู้ด้วย NVIDIA JetBot - สนุกกับกรวยจราจร: 6 ขั้นตอน

วีดีโอ: ถ่ายโอนการเรียนรู้ด้วย NVIDIA JetBot - สนุกกับกรวยจราจร: 6 ขั้นตอน
วีดีโอ: สร้าง edge AI Computing บน Nvidia Jetson Nano | GeekSloth Vlog 2024, กรกฎาคม
Anonim

โดย dvillevaldMy Githubติดตามเกี่ยวกับ: ฉันชอบแอปพลิเคชัน AI และการเรียนรู้ของเครื่อง โดยเฉพาะในวิทยาการหุ่นยนต์ ข้อมูลเพิ่มเติมเกี่ยวกับ dvillevald »

สอนหุ่นยนต์ของคุณให้ค้นหาเส้นทางในเขาวงกตของกรวยจราจรโดยใช้กล้องและโมเดลการเรียนรู้เชิงลึกล้ำสมัย

เสบียง

  • NVIDIA JetBot

    หน้า Bill of Materials ของ NVIDIA JetBot Wiki แสดงรายการทุกสิ่งที่คุณต้องการเพื่อสร้าง JetBot พร้อมกับการซื้อลิงก์จากผู้ขายยอดนิยม

  • คอมพิวเตอร์ที่มี NVIDIA GPU

    จำเป็นต้องฝึกโมเดล

  • BlueDot Trading 4” RC Racing Agility Cones, สีส้ม – ชุด 20

ขั้นตอนที่ 1: แรงจูงใจ

Image
Image

ทุกครั้งที่ฉันขับรถในพื้นที่หดตัว ฉันคิดว่าการที่รถที่ขับด้วยตนเองจะขับผ่านกรวยจราจรนั้นท้าทายเพียงใด ปรากฎว่ามันไม่ใช่เรื่องยากสำหรับ JetBot ใหม่ของ NVIDIA - ด้วยภาพเพียงไม่กี่ร้อยภาพ คุณสามารถฝึกโมเดลการเรียนรู้เชิงลึกที่ล้ำสมัยเพื่อสอนหุ่นยนต์ของคุณถึงวิธีค้นหาเส้นทางในเขาวงกตของกรวยจราจรของเล่น โดยใช้กล้องออนบอร์ดเท่านั้นและไม่มีเซ็นเซอร์อื่นๆ

ขั้นตอนที่ 2: NVIDIA JetBot & ภาพรวมโครงการ

NVIDIA JetBot & ภาพรวมโครงการ
NVIDIA JetBot & ภาพรวมโครงการ

JetBot เป็นหุ่นยนต์โอเพ่นซอร์สที่ใช้ NVIDIA Jetson Nano kit คุณสามารถดูคำแนะนำโดยละเอียดเกี่ยวกับวิธีสร้างและตั้งค่าได้ที่นี่

โปรเจ็กต์นี้เป็นตัวอย่างการหลีกเลี่ยง Collision ที่แก้ไขแล้วจาก NVIDIA JetBot Wiki ประกอบด้วยสามขั้นตอนหลัก แต่ละขั้นตอนอธิบายไว้ในสมุดบันทึก Jupyter ที่แยกจากกัน:

  • รวบรวมข้อมูลบน JetBot - สมุดบันทึก data_collection_cones.ipynb
  • ฝึกโมเดลบนเครื่อง GPU อื่น - โน้ตบุ๊ก train_model_cones.ipynb
  • เรียกใช้การสาธิตสดบน JetBot - โน้ตบุ๊ก live_demo_cones.ipynb

คุณสามารถค้นหาสมุดบันทึก Jupyter ทั้งสามเครื่องได้ที่นี่

ขั้นตอนที่ 3: สร้าง JetBot และอัปโหลด Jupyter Notebooks

  1. สร้างและตั้งค่า JetBot ตามที่อธิบายไว้ที่นี่
  2. เชื่อมต่อกับหุ่นยนต์ของคุณโดยไปที่ https://:8888ลงชื่อเข้าใช้ด้วยรหัสผ่านเริ่มต้น jetbot
  3. ปิดโน้ตบุ๊กที่ทำงานอยู่อื่น ๆ ทั้งหมดโดยเลือกเคอร์เนล -> ปิดเครื่องเคอร์เนลทั้งหมด…
  4. ไปที่ ~/Notebooks/
  5. สร้างโฟลเดอร์ย่อยใหม่ ~/Notebooks/traffic_cones_driving/
  6. อัปโหลด data_collection_cones.ipynb และ live_demo_cones.ipynb ไปที่ ~/Notebooks/traffic_cones_driving/

สำคัญ: โน้ตบุ๊ก Jupyter data_collection_cones.ipynb และ live_demo_cones.ipynb ที่อ้างอิงในคำแนะนำนี้ควรรันบน JetBot ในขณะที่ train_model_cones.ipynb - บนคอมพิวเตอร์ที่มี GPU

ดังนั้นเราต้องอัปโหลด data_collection_cones.ipynb และ live_demo_cones.ipynb ไปยัง JetBot และวางไว้ใน ~/Notebooks/traffic_cones_driving/

ขั้นตอนที่ 4: รวบรวมข้อมูลการฝึกบน JetBot

เราจะรวบรวมชุดข้อมูลการจำแนกรูปภาพที่จะใช้เพื่อช่วยให้ JetBot ทำงานบนเขาวงกตของกรวยจราจร JetBot จะเรียนรู้วิธีประมาณความน่าจะเป็นของสี่สถานการณ์ (คลาส):

  • ฟรี - เมื่อปลอดภัยที่จะก้าวไปข้างหน้า
  • บล็อค - เมื่อมีสิ่งกีดขวางหน้าหุ่นยนต์
  • ซ้าย - เมื่อหุ่นยนต์ควรหมุนไปทางซ้าย
  • ขวา - เมื่อหุ่นยนต์ควรหมุนไปทางขวา

ในการรวบรวมข้อมูลการฝึกอบรมบน JetBot เราจะใช้สมุดบันทึก Jupyter data_collection_cones.ipynb ซึ่งมีคำแนะนำโดยละเอียดเกี่ยวกับวิธีการดำเนินการ เมื่อต้องการเรียกใช้สมุดบันทึกนี้บน JetBot ให้ทำตามขั้นตอนถัดไป:

  1. เชื่อมต่อกับหุ่นยนต์ของคุณโดยไปที่ https://:jetbot-ip-address::8888
  2. ลงชื่อเข้าใช้ด้วยรหัสผ่านเริ่มต้น jetbot
  3. ปิดโน้ตบุ๊กที่ทำงานอยู่อื่น ๆ ทั้งหมดโดยเลือกเคอร์เนล -> ปิดเครื่องเคอร์เนลทั้งหมด…
  4. ไปที่ ~/Notebooks/traffic_cones_driving/
  5. เปิดและทำตาม data_collection_cones.ipynb notebook

ขั้นตอนที่ 5: ฝึก Neural Network บนเครื่อง GPU

ต่อไป เราจะใช้ข้อมูลที่เก็บรวบรวมเพื่อฝึกโมเดลการเรียนรู้เชิงลึก AlexNet อีกครั้งบนเครื่อง GPU (โฮสต์) โดยเรียกใช้ train_model_cones.ipynb

โปรดทราบว่า train_model_cones.ipynb เป็นโน้ตบุ๊ก Jupyter ตัวเดียวในบทช่วยสอนนี้ซึ่งไม่ได้รันบน JetBot

  1. เชื่อมต่อกับเครื่อง GPU ที่ติดตั้ง PyTorch และเซิร์ฟเวอร์ Jupyter Lab ทำงานอยู่
  2. อัปโหลดสมุดบันทึก train_model_cones.ipynb ไปยังเครื่องนี้
  3. อัปโหลดไฟล์ dataset_cones.zip ที่คุณสร้างในสมุดบันทึก data_collection_cones.ipynb และแตกชุดข้อมูลนี้ (หลังจากขั้นตอนนี้ คุณจะเห็นโฟลเดอร์ชื่อ dataset_cones ปรากฏในไฟล์เบราว์เซอร์)
  4. เปิดและทำตามสมุดบันทึก train_model_cones.ipynb เมื่อสิ้นสุดขั้นตอนนี้ คุณจะสร้างแบบจำลอง - ไฟล์ best_model_cones.pth ซึ่งจะต้องอัปโหลดไปยัง JetBot เพื่อเรียกใช้การสาธิตสด

ขั้นตอนที่ 6: เรียกใช้การสาธิตสดบน JetBot

เรียกใช้การสาธิตสดบน JetBot
เรียกใช้การสาธิตสดบน JetBot

ขั้นตอนสุดท้ายนี้คือการอัปโหลด model best_model_cones.pth ไปยัง JetBot และเรียกใช้

  1. ขับเคลื่อนหุ่นยนต์ของคุณจากชุดแบตเตอรี่ USB
  2. เชื่อมต่อกลับไปยังหุ่นยนต์ของคุณโดยไปที่ https://:jetbot-ip-address::8888
  3. ลงชื่อเข้าใช้ด้วยรหัสผ่านเริ่มต้น jetbot
  4. ปิดโน้ตบุ๊กที่ทำงานอยู่อื่น ๆ ทั้งหมดโดยเลือกเคอร์เนล -> ปิดเครื่องเคอร์เนลทั้งหมด…
  5. ไปที่ ~/Notebooks/traffic_cones_driving
  6. เปิดและทำตาม live_demo_cones.ipynb notebook

เริ่มด้วยความระมัดระวังและให้ JetBot มีพื้นที่เพียงพอที่จะเคลื่อนที่ไปรอบๆ ลองใช้การกำหนดค่ากรวยที่แตกต่างกันและดูว่าหุ่นยนต์ทำงานได้ดีเพียงใดในสภาพแวดล้อมต่างๆ แสง ฯลฯ ในขณะที่โน้ตบุ๊ก live_demo_cones.ipynb จะอธิบายรายละเอียดทุกขั้นตอนอย่างละเอียด แผนภูมิต่อไปนี้แสดงตรรกะของการเคลื่อนที่ของหุ่นยนต์ตามความน่าจะเป็นที่คาดการณ์โดยรุ่นต่างๆ

โน้ตบุ๊กยังอธิบายวิธีจัดเก็บประวัติการเคลื่อนที่ของหุ่นยนต์ด้วยความน่าจะเป็นอิสระ/ซ้าย/ขวา/บล็อกที่คาดการณ์โดยรุ่น และวิธีการสร้างวิดีโอ FPV (มุมมองบุคคลที่หนึ่ง) สองรายการ (ที่อัตรา 1 เฟรมต่อวินาทีและ 15 เฟรมต่อวินาที) พร้อมระบบตรวจวัดระยะไกลและ ข้อมูลการกระทำของ JetBot สิ่งเหล่านี้มีประโยชน์สำหรับการดีบัก การปรับแต่งคอนโทรลเลอร์ PID และการปรับปรุงโมเดล

ขอให้สนุกและแจ้งให้เราทราบหากคุณมีคำถาม!:-)

รหัสมีอยู่ใน Github

แนะนำ: