โปรแกรมจำแนกรุ่นรถยนต์โครงสร้างแบบ Relative bag of words (รุ่นสอง) นายรัชภูมิ เกื้อภักดิ์ รหัสนักศึกษา 5010110422 อาจารย์ที่ปรึกษา ดร. อนันท์ ชกสุริวงค์ ภาควิชาวิศวกรรมคอมพิวเตอร์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยสงขลานครินทร์
OUTLINE . ความสำคัญและที่มาของโครงงาน วัตถุประสงค์ของโครงงาน ขอบเขตของโครงงาน ประโยชน์ที่คาดว่าจะได้รับ โครงสร้างของระบบ ความสัมพันธ์ของถุงคำ ความก้าวหน้า สรุปผลการทำงาน 1
ความสำคัญและที่มาของโครงงาน . ความสำคัญและที่มาของโครงงาน จากการที่ได้ศึกษาโครงงานโปรแกรมจำแนกรุ่นรถยนต์(รุ่นแรก) โครงสร้างแบบถุงคำ (bag of words) ทำให้ทราบปัญหาว่าวิธีนี้ยังมีปัญหาอยู่หากจำนวนรถยนต์ในภาพมีจำนวนมากกว่าหนึ่งคัน วิธีการนี้จะจำแนกรุ่นรถยนต์ได้ไม่ดีเท่าที่ควร จึงต้องมีการศึกษาวิธีการที่มีประสิทธิภาพดีกว่าคือโครงสร้างแบบเชิงความสัมพันธ์ (relative bag of words) ซึ่งวิธีการนี้จะทำให้สามารถแก้ปัญหาดังกล่าวได้ จะทำให้การระบุรุ่นและยี่ห้อรถได้อย่างแม่นยำ ต้องบอกก่อนว่าตอนแรกมีปัญหาอะไร ถึงได้นำวิฑีการ Bag of words มาใช้ ในการแก้ปัญหา แต่ปัญหาก็ไม่ได้หมดไป ยังมีอะไรที่เป็นปัญหาอีก และจำทำการแก้ไขได้ด้วยวิธีการใด แล้วต้องบอกด้วยว่า คำว่า relative คืออะไร ใช้คนและโครงสร้างแบบ bag of words มาช่วยในการจำแนกรุ่นรถยนต์นั้นมีข้อจำกัดหลายอย่างไม่ว่าจะเป็นเรื่องของเวลา จำนวนรถยนต์ในภาพ หรือแม้กระทั้งความแม่นยำในการจำแนก จากข้อจำกัดดังกล่าวทำให้มีการศึกษาโครงสร้างแบบ relative bag of words วิธีการนี้นอกจากจะใช้เอกลักษณ์แล้วยังคำนึงถึงความสัมพันธ์อื่นๆมาช่วยจำแนกอีกด้วย 2
ความสำคัญและที่มาของโครงงาน . ความสำคัญและที่มาของโครงงาน Car A Relative bag of words Car A Car B Car C 3
วัตถุประสงค์ของโครงงาน . วัตถุประสงค์ของโครงงาน เพื่อพัฒนาโปรแกรมระบุรุ่นและยี่ห้อรถหลายคันในภาพแบบอัตโนมัติ เพื่อพัฒนาวิธีการระบุรุ่นและยี่ห้อรถที่มีความแม่นยำและแก้ปัญหาจากโครงงานในรุ่นที่ 1 เพื่อพัฒนาวิธีการระบุรุ่นและยี่ห้อรถแบบ relative bag of words หาข้อมูล เรียนรู้ศึกษาและทำความเข้าใจ Artificial Intelligence Image Processing โครงสร้างที่เป็นเอกลักษณ์ของรถยนต์ Microsoft Visual C++ 2005 OpenCV bag of word ประยุกต์ใช้ relative bag of words พัฒนา โปรแกรมจำแนกรุ่นรถยนต์ 4
. ขอบเขตของโครงงาน ออกแบบโครงสร้างที่เป็นเอกลักษณ์ของรุ่นรถที่ใช้กับเทคนิคrelative bag of words ใช้โครงสร้างแบบ relative bag of words ในการระบุรุ่นและยี่ห้อรถ โปรแกรมสามารถระบุรุ่นและยี่ห้อรถในภาพที่มีจำนวนรถ 2 คันขึ้นไปแบบอัตโนมัติได้ โดยเป็นรถที่มีในฐานข้อมูล ใช้โปรแกรม Microsoft Visual C++ 2005 และ OpenCV ในการพัฒนาโครงงาน ภาพรถยนต์ที่จะนำมาประมวลผลต้องเป็นภาพที่มีคุณภาพดี รถยนต์ที่สนใจต้องเป็นรถที่มีเอกลักษณ์ครบสมบูรณ์ ออกแบบโครงสร้างที่เป็นเอกลักษณ์ของรุ่นรถยนต์ที่ใช้กับเทคนิด relative bag of word ใช้โครงสร้างแบบ relative bag of word ใจการจำแนกรุ่นรถยนต์หลายคันจากภาพ โปรแกรมสมารถบอกรุ่นรถยนต์หลายคันจากภาพได้ 5
ประโยชน์ที่คาดว่าจะได้รับ . ประโยชน์ที่คาดว่าจะได้รับ โปรแกรมช่วยให้การระบุรุ่นและยี่ห้อมีความสะดวกและรวดเร็วมากขึ้น โปรแกรมสามารถระบุยี่ห้อและรุ่นรถที่มีจำนวนมากกว่าหนึ่งคันได้ โปรแกรมระบุรุ่นและยี่ห้อรถได้อย่างแม่นยำ โปรแกรมสามารถจำแนกรุ่นรถยนต์หลายคันจากภาพได้อย่างรวดเร็วและมีความผิดพลาดน้อย โปรแกรมสามารถจำแนกรุ่นรถยนต์ได้แม้จะไม่เห็นส่วนของรถยนต์ทั้งหมด สามารถนำมาใช้กับการจำแนกรุ่นรถยนต์ได้โดยไม่ต้องใช้คน 6
Recognition (MATCHING) . โครงสร้างของระบบ RECOGNITION INPUT IMAGE (จำแนก) Feature Extraction (SIFT) DB Recognition (MATCHING) Bag of Words Relative OUTPUT Feature Extraction (SIFT) TRAINING RALATIVE INPUT IMAGE (model) 7
ความสัมพันธ์ของถุงคำ : ภาพที่เป็นเอกลักษณ์ของรถยนต์ . ความสัมพันธ์ของถุงคำ : ภาพที่เป็นเอกลักษณ์ของรถยนต์ เช่น รถยนต์รุ่น A มีการเก็บชิ้นส่วนเอกลักษณ์ในฐานข้อมูลไว้ 5 ภาพ เป็นภาพ โลโก้ ไฟหน้าซ้าย-ขวา และไฟหลังซ้าย-ขวา เมื่อตรวจสอบแล้วจำนวนภาพที่ใช้ match กับภาพอินพุดมีน้อยกว่าน้อยมากแค่ 1 หรือ 2 ภาพ โปรแกรมจะไม่จำแนกว่าเป็นรถยนต์รุ่น A หรืออาจกล่าวได้ว่าการทีโปรแกรมจะจำแนกได้ว่าเป็นรถยนต์รุ่นได้ต้องมีการตรวจสอบจำนวนภาพที่เป็นเอกลักษณ์ของรถยนต์คันนั้นว่ามีครบตามที่กำหนดหรือไม่ ยี่ห้อ A นอกจากความสัมพันธ์ของถุงคำที่เป็นอัตราส่วนของระยะห่างแล้ว เพื่อให้โปรแกรมสามารถ จำแนกยี่ห้อและรุ่นรถได้แม่นยำมากยิ่งขึ้นต้องมีการตรวจสอบจำนวนภาพที่ถูกนำมา match ว่ามีจำนวนครบตามที่กำหนดไว้ในถุงคำของรถแต่ละยี่ห้อหรือไม่ เช่น 8
ความก้าวหน้า : ออกแบบฐานข้อมูล . ความก้าวหน้า : ออกแบบฐานข้อมูล COLUMN NAME DATATYPE NOTNULL FLAGS DEFAULT VALUE id INT(10) / UNSIGNED NULL brand VARCHAR(45) model angle pic_file LONGBLOBL pic_name pic_type Image Enhancement คือ การปรับปรุงคุณภาพของภาพเพื่อแสดงผลผ่านจอโดยไม่เปลี่ยนแปลงข้อมูลภายใน Image Restoration คือ การปรับปรุงคุณภาพของภาพโดยใช้ข้อมูลที่ทราบสาเหตุ (Minimize or remove known degradations ) เช่น Noise filtering หรือ Correction of Geometric Distrotion เป็นต้น 9
ความก้าวหน้า : สร้างฐานข้อมูลด้วย MySQL . ความก้าวหน้า : สร้างฐานข้อมูลด้วย MySQL ส่วนของการตรวจหา Key point ออกมาจากภาพอินพุต (Key point Detection) ซึ่งในส่วนนี้เราจะได้ชุดของพิกัด x, y ของจุดที่จะเป็น Key point ซึ่งจะใช้ในการให้คำอธิบายของ Key point นั้นๆในขั้นตอนถัดไป ส่วนของการให้คำอธิยายแก่ Key point หนึ่งๆ (Key point Description) ในส่วนนี้อัลกอริทึมจะคำนวณหาเวกเตอร์อธิยาย (Descriptor Vector) ซึ่งคำนวณมาจากค่าความสว่างของพิกเซลในอาณาบริเวณรอบๆ Keypoint เวกเตอร์อธิบายเหล่านี้จะใช้ในการเปรียนเที่ยบเพื่อวัตถุประสงค์ของการรู้จำอัตลักษณ์(Identity) เมื่อมันไปปรากฏอยู่ในภาพอื่น ทำการหา SIFT Key point และ Descriptor Vector จากภาพต้นแบบของวัตถุ (Template Image) ขั้นตอนนี้โดยทั่วไปนิยมเรียกว่า ขั้นตอนการเรียนรู้ (Learning Phase) จากขั้นตอนที่แล้วเมื่อเราต้องการจะรู้จำวัตถุที่ปารกฏอยู่นภาพอินพุตหนึ่ง ๆ ที่ไม่ใช้ต้นแบบ เราสามารถทำได้โดยหา Key point ในภาพอินพุตนั้นๆ ไปเปรียบเที่ยบ Key point หนึ่ง ๆ ใน โมเดลของวัตถุ โดยการเปรียบเทียบจะใช้การคำณวนหา Euclidean Distance ระหว่างเวกเตอร์อธิบายที่ประกอบกับ Key point โดยที่ถ้าค่าระยะทางยิ่งน้อยแสดงว่า Key point ทั้งสองที่นำมาเปรียบเทียบกันยิ่งเหมือนกัน จากชุดของการจับคู่ (Matches) ระหว่าง Key point ในภาพอินพุตกับ Key point ของโมเดลของวัตถุ เราสามารถประยุกต์ใช้ อัลกอริทึมที่ใช้ในการพิสูจน์ว่าเป็นวัตถุนั้นจริงได้ 10
ความก้าวหน้า : สร้างการติดต่อฐานข้อมูล . ความก้าวหน้า : สร้างการติดต่อฐานข้อมูล row = mysql_fetch_row(result); 11
ความก้าวหน้า : Match ภาพ(SIFT) . ความก้าวหน้า : Match ภาพ(SIFT) Input Image Processing Feature Extraction Classifications Nearest Neighbor Classification 12
ความก้าวหน้า : Match ภาพ(SIFT) . ความก้าวหน้า : Match ภาพ(SIFT) พันาต่อ 13
. สรุปผลการทำงาน นำโครงสร้างที่เป็นเอกลักษณ์ของรถยนต์มาใช้ในการออกแบบฐานข้อมูลที่จะใช้เก็บภาพรถยนต์ของระบบ นำฐานข้อมูลที่ออกแบบไว้มาสร้างเป็นฐานข้อมูล และได้เก็บภาพชิ้นส่วนรถยนต์ลงในฐานข้อมูลเพื่อนำมาใช้ในกา match กับภาพอินพุต สร้างการเชื่อมต่อกับฐานข้อมูลที่สร้างขึ้นกับโปรแกรมเพื่อให้โปรแกรมนำค่าที่อยู่ในฐานข้อมูลไปใช้ match และแสดงผลได้ เปลี่ยนภาษาที่ใช้ในการ match ภาพ จากที่ก่อนหน้านี้ได้ใช้ framework ที่เป็นของ emguCV มาเป็นภาษา C++ และ SIFT เขียนโปรแกรมให้สามารถแสดงผลจำนวนตำแหน่ง match point ของภาพระหว่างอินพุตกับภาพในฐานข้อมูลได้ 14
. ปัญหาและข้อเสนอแนะ ไม่สามารทำงานได้ตามตารางการดำเนินงานที่กำหนดได้ เนื่องจากได้เปลี่ยนภาษาที่ใช้เขียนโปรแกรมการ match ภาพจากเดิมที่ใช้ emguCV มาเป็น C++ และ SIFT ทำให้งานในส่วนของการ match ภาพแบบ One to Many ยังไม่สามารถใช้งานได้ การใช้งานส่วนของ UI ยังไม่สามารถแสดงผลการทำงานของโปรแกรมได้เนื่องจาก การเขียนโค้ดนั้นเปลี่ยนแปลงอยู่เรื่อยทำให้ไม่สามารถทำการกำหนดค่าในการนำไปใช้งานได้ ไม่สามารทำงานได้ตามตารางการดำเนินงานที่กำหนดได้ เนื่องจากได้เปลี่ยนภาษาที่ใช้เขียนโปรแกรมการ match ภาพจากเดิมที่ใช้ emguCV มาเป็น C++ และ SIFT ทำให้งานในส่วนของการ match ภาพแบบ Ont to Many ยังไม่สามารถใช้งานได้ 15
ตารางการดำเนินงาน : ตารางการดำเนินงาน เทอม 1/2553 . ตารางการดำเนินงาน : ตารางการดำเนินงาน เทอม 1/2553 16
ตารางการดำเนินงาน : ตารางการดำเนินงาน โครงงาน relative bag of words . ตารางการดำเนินงาน : ตารางการดำเนินงาน โครงงาน relative bag of words ดำเนินการแล้ว ดำเนินการในขั้นต่อไป 17
. Relative bag of words …THANK YOU… 18