สารบัญ:

ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision: 8 ขั้นตอน (พร้อมรูปภาพ)
ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ใช้ชีวิต 1 วันด้วยคาถาแฮรี่พอตเตอร์ 🤓🐍 #hogwartslegacy #harrypotter 2024, กรกฎาคม
Anonim
Image
Image
ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision
ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision
ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision
ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision
ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision
ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision

"เทคโนโลยีขั้นสูงใด ๆ ที่พอเพียงก็แยกไม่ออกจากเวทมนตร์" - Arthur C. Clarke

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

ที่ Wizarding World of Harry Potter ใน Universal Studios นักท่องเที่ยวสามารถแสดง "เวทมนตร์ที่แท้จริง" ได้ในบางสถานที่ (ซึ่งติดตั้งระบบจับภาพการเคลื่อนไหว) โดยใช้ไม้กายสิทธิ์ที่ทำขึ้นเป็นพิเศษพร้อมลูกปัดสะท้อนแสงย้อนยุคที่ปลาย สามารถซื้อไม้กายสิทธิ์ได้จากร้าน Ollivander's Shop ของจริง ซึ่งเหมือนกับที่แสดงในภาพยนตร์ Harry Potter แต่อย่าลืมว่า "ไม้กายสิทธิ์เลือกพ่อมด":P

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

ดังนั้นในคำแนะนำนี้ ฉันจะแสดงวิธีที่คุณสามารถสร้างระบบจับภาพการเคลื่อนไหวราคาถูกและมีประสิทธิภาพที่บ้านเพื่อแสดง "เวทมนตร์ที่แท้จริง" โดยเปิดกล่องด้วยการสะบัดไม้กายสิทธิ์ของคุณ:D โดยใช้เพียงกล้อง Night Vision ธรรมดา อุปกรณ์อิเล็กทรอนิกส์บางตัว และโค้ดหลามบางส่วนโดยใช้ไลบรารี OpenCV Computer Vision และ Machine Learning !!!

ขั้นตอนที่ 1: แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น

แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น

ไม้กายสิทธิ์ที่ซื้อมาจากโลกเวทมนตร์ของแฮร์รี่ พอตเตอร์ในยูนิเวอร์แซล สตูดิโอ มีลูกปัดสะท้อนแสงอยู่ที่ปลายไม้ เม็ดบีดสะท้อนแสงสะท้อนเหล่านี้สะท้อนแสงอินฟราเรดจำนวนมากซึ่งส่งออกมาจากกล้องในระบบจับภาพการเคลื่อนไหว ดังนั้น สิ่งที่เรามองว่าเป็นปลายไม้กายสิทธิ์ที่ไม่โดดเด่นนักที่เคลื่อนที่ในอากาศ ระบบจับการเคลื่อนไหวจะรับรู้ เป็นหยดสีสว่างซึ่งสามารถแยกออกได้ง่ายในสตรีมวิดีโอและติดตามเพื่อจดจำรูปแบบที่บุคคลวาดขึ้นและดำเนินการตามที่ต้องการ การประมวลผลทั้งหมดนี้เกิดขึ้นแบบเรียลไทม์และใช้ประโยชน์จาก Computer Vision และ Machine Learning

กล้อง Night Vision แบบธรรมดาสามารถใช้เป็นกล้องของเราในการจับภาพการเคลื่อนไหว เนื่องจากพวกมันยังปล่อยแสงอินฟราเรดซึ่งมนุษย์ไม่สามารถมองเห็นได้ แต่สามารถมองเห็นได้ชัดเจนด้วยกล้องที่ไม่มีตัวกรองอินฟราเรด ดังนั้น สตรีมวิดีโอจากกล้องจึงถูกป้อนเข้าไปใน raspberry pi ซึ่งมีโปรแกรม python ที่รัน OpenCV ซึ่งใช้สำหรับตรวจจับ แยก และติดตามปลายไม้กายสิทธิ์ จากนั้นเราใช้อัลกอริธึม SVM (Simple Vector Machine) ของ Machine Learning เพื่อจดจำรูปแบบที่วาดและควบคุม GPIO ของ Raspberry Pi เพื่อทำกิจกรรมบางอย่าง

วัสดุที่จำเป็น:

1) A Raspberry Pi 3 รุ่น B และอุปกรณ์เสริมที่จำเป็น เช่น แป้นพิมพ์และเมาส์

2) Raspberry Pi NoIR (ไม่มีอินฟราเรด) โมดูลกล้อง

3) ไม้กายสิทธิ์ Harry Potter ที่มีแผ่นสะท้อนแสงที่ปลาย: ไม่ต้องกังวลหากคุณไม่มี คุณสามารถใช้อะไรก็ได้ที่มีรีเฟล็กเตอร์ ดังนั้น คุณสามารถใช้แท่งคล้ายไม้กายสิทธิ์ใดๆ ก็ได้ แล้วติดเทปสะท้อนแสง สีหรือลูกปัดที่ส่วนปลาย และควรทำงานตามที่แสดงในวิดีโอโดย William Osman: ดูวิดีโอ

4) 10 ไฟ LED อินฟราเรด

5) เครื่องพิมพ์ 3 มิติและเส้นใย PLA ที่คุณเลือก

6) อะแดปเตอร์ติดผนัง 12V - 1A และแจ็ค DC

7) เซอร์โวมอเตอร์

8) กล่องเก่าและพูดจากวงล้อของวงจร

9) ปืนกาวร้อน

10) งานพิมพ์โลโก้และรูปภาพที่เกี่ยวข้องกับ Harry Potter บนกระดาษเคลือบเงา

11) แผ่นกำมะหยี่สีเขียวและสีเหลือง

หมายเหตุ: ฉันยังลองใช้เว็บแคมแบบเก่าสำหรับการมองเห็นตอนกลางคืนด้วยการถอด Infrared Filter ออก แต่สุดท้ายก็สร้างความเสียหาย/เปลี่ยนเลนส์ ซึ่งส่งผลต่อคุณภาพวิดีโออย่างมาก และฉันใช้งานไม่ได้ แต่ถ้าคุณต้องการที่จะลองดูคุณสามารถผ่านคำแนะนำที่ยอดเยี่ยมนี้ คลิกที่นี่

ขั้นตอนที่ 2: ติดตั้งโมดูล OpenCV !

ตอนนี้ถึงเวลาสำหรับขั้นตอนแรกและอาจเป็นขั้นตอนที่ยาวที่สุดของโครงการทั้งหมด: การติดตั้งและสร้างโมดูล OpenCV ใน Raspberry Pi ของคุณ

การติดตั้งการพึ่งพาสำหรับโมดูล OpenCV ใช้เวลาไม่นาน แต่กระบวนการสร้างอาจใช้เวลานานถึง 2 ถึง 3 ชั่วโมง!! ดังนั้นหัวเข็มขัดขึ้น!!:NS

มีบทเรียนออนไลน์มากมายที่คุณสามารถติดตามเพื่อติดตั้งโมดูล OpenCV 4.1.0 นี่คือลิงค์ของอันที่ฉันติดตาม: คลิกที่นี่

หมายเหตุ: ฉันขอแนะนำอย่างยิ่งให้ติดตั้งโมดูล OpenCV ในสภาพแวดล้อมเสมือนตามที่แสดงในบทช่วยสอน เนื่องจากจะป้องกันความขัดแย้งประเภทต่างๆ ที่อาจเกิดขึ้นจากการติดตั้งการพึ่งพาโมดูลต่างๆ หรือในขณะที่ทำงานกับ python เวอร์ชันต่างๆ

ขั้นตอนที่ 3: การพิมพ์ตัวยึดกล้อง

การพิมพ์แท่นยึดกล้อง
การพิมพ์แท่นยึดกล้อง
การพิมพ์แท่นยึดกล้อง
การพิมพ์แท่นยึดกล้อง
การพิมพ์แท่นยึดกล้อง
การพิมพ์แท่นยึดกล้อง

NoIR picamera ไม่มีฟิลเตอร์อินฟราเรด จึงสามารถใช้เป็นกล้องมองกลางคืนได้ แต่ยังขาดแหล่งกำเนิดแสงอินฟราเรด กล้องมองภาพกลางคืนทั้งหมดมีแหล่งกำเนิดแสงอินฟราเรดของตัวเองซึ่งฉายรังสีอินฟราเรดในที่มืดซึ่งมองไม่เห็นด้วยตาเปล่า แต่กล้องสามารถเห็นรังสีได้โดยไม่มีฟิลเตอร์อินฟราเรดหลังจากที่สะท้อนจากวัตถุใดๆ

โดยพื้นฐานแล้วเราต้องการแหล่งกำเนิดแสงอินฟราเรดและบางอย่างเพื่อติดตั้งกล้อง สำหรับสิ่งนี้ ฉันออกแบบโมเดล 3 มิติอย่างง่ายของวัตถุที่เราสามารถติดตั้งกล้องได้ โดยเราจะล้อมรอบด้วยไฟ LED IR 10 ดวงในวงกลม โมเดลนี้สร้างด้วย SketchUp และพิมพ์ด้วย Black PLA ในเวลาประมาณ 40 นาที

ขั้นตอนที่ 4: เสร็จสิ้นการติดตั้งกล้อง

เสร็จสิ้นการติดตั้งกล้อง
เสร็จสิ้นการติดตั้งกล้อง
เสร็จสิ้นการติดตั้งกล้อง
เสร็จสิ้นการติดตั้งกล้อง
เสร็จสิ้นการติดตั้งกล้อง
เสร็จสิ้นการติดตั้งกล้อง

หลังจากพิมพ์แบบจำลองแล้ว ฉันขัดมันด้วยกระดาษทรายเบอร์ 80 ก่อนแล้วจึงเริ่มวางไฟ LED IR ลงในรูตามแผนภาพด้านบน

ฉันยึดไฟ LED เข้าที่ด้วยกาวร้อนแล้วต่อขั้วบวกและขั้วลบของไฟ LED สองดวงติดต่อกันเข้าด้วยกันแล้วบัดกรีเพื่อสร้างการเชื่อมต่อแบบอนุกรมของไฟ LED

ตะกั่วบวกของหนึ่ง led และลบของ led ถัดจากนั้นในด้านล่างถูกปล่อยไม่บัดกรีเพื่อเชื่อมต่อปลายบวกและลบจากอะแดปเตอร์ติดผนัง 12 โวลต์

ขั้นตอนที่ 5: โมเดลการเรียนรู้ของเครื่องที่ผ่านการฝึกอบรม

เพื่อจุดประสงค์ในการจดจำจดหมายที่วาดโดยบุคคล ฉันได้ฝึกโมเดลการเรียนรู้ของเครื่องโดยใช้อัลกอริธึม Support Vector Machine (SVM) โดยใช้ชุดข้อมูลของตัวอักษรภาษาอังกฤษที่เขียนด้วยลายมือที่ฉันพบที่นี่ SVM เป็นอัลกอริธึมการเรียนรู้ของเครื่องที่มีประสิทธิภาพมาก ซึ่งสามารถให้ความแม่นยำสูง ในกรณีนี้ประมาณ 99.2%!! อ่านเพิ่มเติมเกี่ยวกับ SVM

ชุดข้อมูลอยู่ในรูปแบบไฟล์.csv ซึ่งมี 785 คอลัมน์และมากกว่า 300,000 แถว โดยแต่ละแถวแสดงรูปภาพขนาด 28 x 28 และแต่ละคอลัมน์ในแถวนั้นมีค่าของพิกเซลสำหรับรูปภาพนั้นโดยมีคอลัมน์เพิ่มเติมใน จุดเริ่มต้นที่มีฉลาก ตัวเลขตั้งแต่ 0 ถึง 25 แต่ละอันตรงกับตัวอักษรภาษาอังกฤษ ด้วยรหัสหลามธรรมดา ฉันแบ่งข้อมูลเพื่อให้ได้ภาพทั้งหมดด้วยตัวอักษร 2 ตัวเท่านั้น (A และ C) ที่ฉันต้องการและฝึกแบบจำลองสำหรับพวกเขา

ฉันได้แนบโมเดลการฝึกอบรม (alphabet_classifier.pkl) และรหัสการฝึกอบรม คุณสามารถทำตามหรือทำการเปลี่ยนแปลงใด ๆ สำหรับการฝึกโมเดลด้วยตัวอักษรที่แตกต่างกันหรือลองใช้อัลกอริธึมอื่น หลังจากรันโปรแกรม โปรแกรมจะบันทึกโมเดลที่ได้รับการฝึกไว้โดยอัตโนมัติในไดเร็กทอรีเดียวกันกับที่บันทึกโค้ดของคุณ

ขั้นตอนที่ 6: รหัสที่ทำให้ทุกอย่างเกิดขึ้น !

โค้ดที่ทำให้ทุกอย่างเกิดขึ้น!!
โค้ดที่ทำให้ทุกอย่างเกิดขึ้น!!

หลังจากสร้างโมเดลที่ผ่านการฝึกอบรมแล้ว ขั้นตอนสุดท้ายคือการเขียนโปรแกรมหลามสำหรับ Raspberry Pi ของเรา ซึ่งช่วยให้เราทำสิ่งต่อไปนี้ได้:

  • เข้าถึงวิดีโอจาก picamera แบบเรียลไทม์
  • ตรวจจับและติดตามจุดสีขาว (ในกรณีนี้คือปลายด้ามไม้ที่ส่องสว่างในตอนกลางคืน) ในวิดีโอ
  • เริ่มติดตามเส้นทางของ Blob ที่เคลื่อนไหวในวิดีโอหลังจากเหตุการณ์ทริกเกอร์ (อธิบายไว้ด้านล่าง)
  • หยุดการติดตามหลังจากเหตุการณ์ทริกเกอร์อื่น (อธิบายไว้ด้านล่าง)
  • ส่งคืนเฟรมสุดท้ายด้วยรูปแบบที่ผู้ใช้วาด
  • ประมวลผลล่วงหน้าบนเฟรม เช่น การกำหนดธรณีประตู การกำจัดสัญญาณรบกวน การปรับขนาด ฯลฯ
  • ใช้เฟรมสุดท้ายที่ประมวลผลสำหรับการทำนาย
  • ใช้เวทมนตร์บางอย่างโดยควบคุม GPIO ของ Raspberry Pi ตามการคาดการณ์

สำหรับโครงการนี้ ฉันได้สร้างกล่องธีมแฮร์รี่ พอตเตอร์ ซึ่งฉันสามารถเปิดและปิดโดยใช้เซอร์โวมอเตอร์ที่ควบคุมโดย GPIO ของ Raspberry Pi เนื่องจากตัวอักษร 'A' ย่อมาจาก 'Alohamora' (หนึ่งในคาถาที่มีชื่อเสียงที่สุดจากภาพยนตร์ Harry Potter ที่ช่วยให้พ่อมดสามารถเปิดล็อคได้ !!) หากมีคนดึงตัวอักษร A ด้วยไม้กายสิทธิ์ pi จะสั่งให้เซอร์โวไปที่ เปิดกล่อง หากบุคคลนั้นวาดตัวอักษร 'C' ซึ่งย่อมาจากคำว่าปิด (เนื่องจากฉันไม่สามารถนึกถึงการสะกดที่เหมาะสมสำหรับการปิดหรือล็อค:P) pi จะสั่งให้เซอร์โวปิดกล่อง

งานทั้งหมดที่เกี่ยวข้องกับการประมวลผลภาพ/วิดีโอ เช่น การตรวจจับ Blob การติดตามเส้นทางของ Blob การประมวลผลล่วงหน้าของเฟรมสุดท้าย ฯลฯ ดำเนินการผ่านโมดูล OpenCV

สำหรับเหตุการณ์ทริกเกอร์ที่กล่าวถึงข้างต้น จะมีการสร้างวงกลมสองวงในวิดีโอแบบเรียลไทม์ วงกลมสีเขียวและสีแดง เมื่อ Blob เข้าสู่พื้นที่ภายในวงกลมสีเขียว โปรแกรมจะเริ่มติดตามเส้นทางที่ Blob ใช้หลังจากนั้นจึงปล่อยให้บุคคลนั้นเริ่มสร้างจดหมาย เมื่อหยดมาถึงวงกลมสีแดง วิดีโอจะหยุดและเฟรมสุดท้ายจะถูกส่งไปยังฟังก์ชันที่ดำเนินการประมวลผลล่วงหน้าบนเฟรมเพื่อให้พร้อมสำหรับการคาดการณ์

ฉันได้แนบไฟล์รหัสในขั้นตอนนี้ อย่าลังเลที่จะผ่านมันและทำการเปลี่ยนแปลงตามที่คุณต้องการ

หมายเหตุ: ฉันต้องสร้างไฟล์ python แยกกันสองไฟล์ซึ่งทำงานกับ python เวอร์ชันต่างๆ ซึ่งนำเข้าโมดูล OpenCV (Python 2.7) และไฟล์อื่นๆ ที่นำเข้าโมดูล sklearn (Python 3.5) สำหรับการคาดคะเนหลังจากโหลดโมเดลที่ผ่านการฝึกอบรม เนื่องจาก OpenCV ของฉันได้รับการติดตั้งไว้ เวอร์ชัน Python 2.7 ขณะติดตั้ง sklearn สำหรับ python 3.5 ดังนั้นฉันจึงใช้โมดูลกระบวนการย่อยเพื่อเรียกใช้ไฟล์ HarryPotterWandsklearn.py (สำหรับการทำนาย) จาก HarryPotterWandcv.py (สำหรับงาน opencv ทั้งหมดและการบันทึกวิดีโอแบบเรียลไทม์) และรับผลลัพธ์ วิธีนี้ฉันต้องเรียกใช้ไฟล์ HarryPotterWandcv.py เท่านั้น

ขั้นตอนที่ 7: กลไกการเปิดกล่อง

กลไกการเปิดกล่อง
กลไกการเปิดกล่อง
กลไกการเปิดกล่อง
กลไกการเปิดกล่อง
กลไกการเปิดกล่อง
กลไกการเปิดกล่อง

ฉันมีกล่องสีแดงเก่าๆ วางอยู่รอบๆ ซึ่งฉันใช้สำหรับโครงการนี้

สำหรับกลไกการเปิดกล่อง:

  1. ฉันติดกาวเซอร์โวใกล้กับส่วนท้ายของกล่องบนแผ่นกระดาษแข็งใกล้กับขอบกล่อง
  2. จากนั้นฉันก็เอาซี่ล้อออกจากวงล้อและติดกาวร้อนที่แขนของเซอร์โว
  3. ปลายอีกด้านของซี่ล้อติดกับฝากล่องโดยใช้ลวด
  4. บวกของเซอร์โวเชื่อมต่อกับ +5V Pin 2 บน Raspberry Pi
  5. ค่าลบของเซอร์โวเชื่อมต่อกับ GND Pin 39
  6. สัญญาณของเซอร์โวเชื่อมต่อกับพิน 12

ขั้นตอนที่ 8: สร้างกล่องธีมแฮร์รี่ พอตเตอร์

ทำกล่องตามธีมแฮร์รี่ พอตเตอร์
ทำกล่องตามธีมแฮร์รี่ พอตเตอร์
ทำกล่องตามธีมแฮร์รี่ พอตเตอร์
ทำกล่องตามธีมแฮร์รี่ พอตเตอร์
ทำกล่องตามธีมแฮร์รี่ พอตเตอร์
ทำกล่องตามธีมแฮร์รี่ พอตเตอร์

ในการทำกล่องตามธีมแฮร์รี่ พอตเตอร์ ฉันพิมพ์ภาพสีต่างๆ ออกมา เช่น โลโก้ Harry Potter, The Hogwarts Crest, The Crest ของบ้านทั้งสี่หลัง ฯลฯ บนแผ่นกระดาษขนาด A4 แบบมันวาวแล้วแปะลงบนกล่องตามจุดต่างๆ สถานที่.

ฉันยังใช้แผ่นกำมะหยี่สีเหลืองตัดแถบและวางบนฝาเพื่อให้กล่องมีสีเดียวกับบ้านกริฟฟินดอร์ ฉันปิดฝาด้านในและกระดาษแข็งสำหรับเซอร์โวด้วยแผ่นกำมะหยี่สีเขียว ที่ด้านในของฝา ฉันติดสัญลักษณ์เพิ่มเติมและสัญลักษณ์แสดงสัตว์ต่างๆ ซึ่งเป็นตัวแทนของบ้านแต่ละหลังของโรงเรียนฮอกวอตส์

ในที่สุดฉันก็ยัดของที่เกี่ยวข้องกับแฮร์รี่ พอตเตอร์ทั้งหมดลงในกล่อง ซึ่งรวมถึงผ้าพันคอกริฟฟินดอร์ ไดอารี่พร้อมชุดฮอกวอตส์ และไม้กายสิทธิ์เอลเดอร์ที่ใช้ในโครงการนี้:D

แนะนำ: