สารบัญ:
- ขั้นตอนที่ 1: แนวคิดพื้นฐานและส่วนประกอบที่จำเป็น
- ขั้นตอนที่ 2: ติดตั้งโมดูล OpenCV !
- ขั้นตอนที่ 3: การพิมพ์ตัวยึดกล้อง
- ขั้นตอนที่ 4: เสร็จสิ้นการติดตั้งกล้อง
- ขั้นตอนที่ 5: โมเดลการเรียนรู้ของเครื่องที่ผ่านการฝึกอบรม
- ขั้นตอนที่ 6: รหัสที่ทำให้ทุกอย่างเกิดขึ้น !
- ขั้นตอนที่ 7: กลไกการเปิดกล่อง
- ขั้นตอนที่ 8: สร้างกล่องธีมแฮร์รี่ พอตเตอร์
วีดีโอ: ไม้กายสิทธิ์ Harry Potter ที่ใช้งานได้จริงโดยใช้ Computer Vision: 8 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
"เทคโนโลยีขั้นสูงใด ๆ ที่พอเพียงก็แยกไม่ออกจากเวทมนตร์" - 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: กลไกการเปิดกล่อง
ฉันมีกล่องสีแดงเก่าๆ วางอยู่รอบๆ ซึ่งฉันใช้สำหรับโครงการนี้
สำหรับกลไกการเปิดกล่อง:
- ฉันติดกาวเซอร์โวใกล้กับส่วนท้ายของกล่องบนแผ่นกระดาษแข็งใกล้กับขอบกล่อง
- จากนั้นฉันก็เอาซี่ล้อออกจากวงล้อและติดกาวร้อนที่แขนของเซอร์โว
- ปลายอีกด้านของซี่ล้อติดกับฝากล่องโดยใช้ลวด
- บวกของเซอร์โวเชื่อมต่อกับ +5V Pin 2 บน Raspberry Pi
- ค่าลบของเซอร์โวเชื่อมต่อกับ GND Pin 39
- สัญญาณของเซอร์โวเชื่อมต่อกับพิน 12
ขั้นตอนที่ 8: สร้างกล่องธีมแฮร์รี่ พอตเตอร์
ในการทำกล่องตามธีมแฮร์รี่ พอตเตอร์ ฉันพิมพ์ภาพสีต่างๆ ออกมา เช่น โลโก้ Harry Potter, The Hogwarts Crest, The Crest ของบ้านทั้งสี่หลัง ฯลฯ บนแผ่นกระดาษขนาด A4 แบบมันวาวแล้วแปะลงบนกล่องตามจุดต่างๆ สถานที่.
ฉันยังใช้แผ่นกำมะหยี่สีเหลืองตัดแถบและวางบนฝาเพื่อให้กล่องมีสีเดียวกับบ้านกริฟฟินดอร์ ฉันปิดฝาด้านในและกระดาษแข็งสำหรับเซอร์โวด้วยแผ่นกำมะหยี่สีเขียว ที่ด้านในของฝา ฉันติดสัญลักษณ์เพิ่มเติมและสัญลักษณ์แสดงสัตว์ต่างๆ ซึ่งเป็นตัวแทนของบ้านแต่ละหลังของโรงเรียนฮอกวอตส์
ในที่สุดฉันก็ยัดของที่เกี่ยวข้องกับแฮร์รี่ พอตเตอร์ทั้งหมดลงในกล่อง ซึ่งรวมถึงผ้าพันคอกริฟฟินดอร์ ไดอารี่พร้อมชุดฮอกวอตส์ และไม้กายสิทธิ์เอลเดอร์ที่ใช้ในโครงการนี้:D
แนะนำ:
ภาพที่เคลื่อนไหวในชีวิตจริงจาก Harry Potter!: 11 ขั้นตอน (พร้อมรูปภาพ)
ภาพเหมือนเคลื่อนไหวในชีวิตจริงจากแฮร์รี่ พอตเตอร์!: "น่าทึ่ง! อัศจรรย์! นี่เป็นเหมือนเวทมนตร์!" - กิลเดอรอย ล็อกฮาร์ตฉันเป็นแฟนตัวยงของแฮร์รี่ พอตเตอร์ และสิ่งหนึ่งที่ฉันรักเสมอจากโลกเวทมนตร์คือภาพบุคคลที่เคลื่อนไหว ฉันสะดุดกับภาพเคลื่อนไหวของ Kyle Stewart-Frantz
ไม้กายสิทธิ์ LED: 8 ขั้นตอน
ไม้กายสิทธิ์ LED: สำหรับโครงการนี้ คุณจะต้อง: ชิ้นส่วนที่พิมพ์ 3 มิติ (แนบไฟล์ .stl) ไฟ LED พร้อมตัวต้านทานและสายไฟ เทปทองแดง แบตเตอรี่ AAA 2 ก้อน กรรไกร
Harry Potter Rotating RGB Display: 10 ขั้นตอน (พร้อมรูปภาพ)
จอแสดงผล RGB แบบหมุนของ Harry Potter: หลังจากตัดสินใจทำบางอย่างสำหรับวันเกิดลูกสาวของฉัน ฉันคิดว่าการสร้างจอแสดงผล RGB แบบอะคริลิกสักชิ้นหนึ่งน่าจะเจ๋ง เธอเป็นแฟนตัวยงของภาพยนตร์แฮร์รี่ พอตเตอร์ ดังนั้นการเลือกธีมจึงเป็นเรื่องง่าย ตัดสินใจว่าจะใช้ภาพใดไม่ใช่! ของฉัน wi
ไม้กายสิทธิ์. เทสลาคอยล์: 3 ขั้นตอน
ไม้กายสิทธิ์. เทสลาคอยล์: สวัสดีทุกคน ฉันเริ่มสร้างขดลวดเทสลาตามวงจรคลาสสิกที่คุณพบได้ทุกที่บนอินเทอร์เน็ตและจบลงด้วยทรานซิสเตอร์ที่มีความร้อนสูงเกินไปซึ่งทำให้วงจรของฉันหยุดทำงานหลังจากผ่านไป 1 วินาที ฉันได้แก้ไขวงจรโดยใช้
โครงการ DIY Harry Potter Moving Portrait: 9 ขั้นตอน (พร้อมรูปภาพ)
โครงการ DIY Harry Potter Moving Portrait: ต่อไปนี้เป็นคำแนะนำสำหรับพ่อมดเลือดบริสุทธิ์เท่านั้น หากคุณไม่ใช่เลือดบริสุทธิ์ โดยเฉพาะสลิธีริน คุณได้รับคำเตือนถึงความล้มเหลวที่หลีกเลี่ยงไม่ได้และความพ่ายแพ้ที่คุณจะต้องเผชิญในฐานะสควิบ มักเกิ้ล ฮัฟเฟิลพัฟ หรือเลือดสีโคลน