Posts

ปัญหาอุปสรรคและแนวทางแก้ไข

1) รูปภาพมีขนาดเล็กทำให้มีความ blur มากจนไม่สามารถปรับความละเอียดได้เพียงพอกับความต้องการ ซึ่งแนวทางแก้ไขคือต้องถ่ายรูปใบหน้าสุนัขใหม่เท่านั้น  2) กระบวนการดึงคุณสมบัติของรูปภาพในแต่ละรูปใช้พลังในการประมวลผลสูงและใช้เวลานาน ทาให้รองรับงานในเวลาเดียวกันได้น้อย ส่งผลให้ผู้ใช้ต้องรอเป็นเวลานานเมื่อมีการใช้งานพร้อมกันเป็นจานวนมาก โดยแนวทางแก้ไขคือการทา scale up ให้กับเซิร์ฟเวอร์ที่ให้บริการ และการปรับปรุงโปรแกรมให้มีการทางานเป็นแบบคู่ขนานเพื่อรองรับการทา scale out ซึ่งจะสามารถนาเซิร์ฟเวอร์หลายเครื่องมาช่วยในการประมวลผลและลดระยะเวลาการประมวลผลลงได้  3) อาจมีรูปภาพสุนัขที่หน้าไม่ตรงและมีส่วนประกอบไม่ครบถ้วน ซึ่งแนวทางแก้ไขคือต้องถ่ายรูปใบหน้าสุนัขใหม่เท่านั้น  4) Android Studio ประมวลผลช้าและใช้เวลาในการทดสอบด้วย emulator เป็นเวลานาน แนวทางแก้ไขที่เป็นไปได้คือการทางานบน cross-platform framework เช่น Ionic Xamarin หรือ Phonegap ซึ่งมีความรวดเร็วกว่าเนื่องจากทางานบนเว็บเทคโนโลยี แต่ต้องคานึงถึงเรื่องของการใช้งาน API ระดับลึก 

บทสรุปและข้อเสนอแนะ

  DogFinder เป็นแอปพลิเคชันสำหรับค้นหาสุนัขสูญหายซึ่งประกอบด้วยหลายขั้นตอนของกระบวนการทำงาน ได้แก่ การดึงคุณสมบัติที่สำคัญจากรูปภาพเพื่อนำมาประมวลผล การคัดเลือกคุณสมบัติที่ไม่มีนัยสำคัญต่อการทำงานออกเพื่อลดเวลาในการประมวลผลและเพิ่มประสิทธิภาพการทำงาน การจัดกลุ่มใบหน้าสุนัขตามลักษณะความใกล้เคียงของใบหน้าโดยอาศัยคุณสมบัติที่ได้จากรูปภาพเพื่อให้สะดวกต่อการค้นหาเฉพาะกลุ่มแทนการค้นหาทั้งระบบ และการค้นหาเพื่อนบ้านใกล้เคียงหรือการค้นหาตามความคล้ายเพื่อให้ได้ใบหน้าที่มีความใกล้เคียงมากที่สุด ซึ่งนำมาประยุกต์ใช้งานเพื่อให้สามารถลดเวลาสำหรับใช้ในการค้นหาด้วยวิธีการแบบเดิม เช่น การประกาศตามที่สาธารณะ ซึ่งจะช่วยอำนวยความสะดวกให้แก่ผู้ใช้งานและลดจำนวนประชากรสุนัขไร้บ้าน  เนื่องจากแอปพลิเคชันประกอบไปด้วยการทำงานหลายกระบวนการดังที่กล่าวมา แต่ละกระบวนการจึงต้องมีการทดลองเพื่อคัดเลือกวิธีการและอัลกอริทึมที่มีการทำงานเหมาะสมที่สุด ได้แก่ การคัดเลือกอัลกอริทึมเพื่อลดจำนวนคุณสมบัติของรูปภาพซึ่งสามารถลดไปได้จากคุณสมบัติจำนวน 4096 คุณสมบัติ เหลือ 35 คุณสมบัติ หรือลดไปได้ร้อยละ 99.15 การคัดเลือกอัลกอริ

ER diagram

Image
ระบบแบ่งออกเป็น 5 entity ได้แก่  1) User Entity เป็น entity ที่แสดงข้อมูลที่จำป็นทั้งหมดของผู้ใช้ เช่น ระดับของผู้ใช้ (role) โทเคนสำหรับติดต่อเครื่องมือสื่อสารของผู้ใช้ (fcm_token) นอกจากนี้ยังมีข้อมูลบางส่วนซึ่งมีการเชื่อมโยงกับข้อมูลของผู้ใช้บนสื่อสังคมออนไลน์ Facebook เช่น ไอดี ชื่อ หรืออีเมลที่แสดงบน Facebook  2) Dog Entity เป็น entity ที่แสดงข้อมูลของสุนัข 1 ตัว เช่น ชื่อ จุดสังเกตบนลำตัว (noticeable) สายพันธุ์ (breed) ละติจูด ลองจิจูด อายุ และสถานะของสุนัขตัวดังกล่าว เช่น ยังอยู่กับเจ้าของ หรือสูญหาย  3) Instance Entity เป็น entity ที่แสดงข้อมูลของรูปภาพใบหน้าสุนัข โดยจะเก็บคุณสมบัติปกติ (raw features) คุณสมบัติที่ผ่านกระบวนการลดคุณสมบัติแล้ว (reduced features) กลุ่มของสุนัขที่มีลักษณะใกล้เคียง (label)  4) Image Entity เป็น entity ที่แสดงข้อมูลของรูปภาพ เช่น ชื่อ เวลาที่สร้าง และไดเรคทอรีที่บ่งบอกถึงที่อยู่ของภาพ  5) Lost and Found Entity เป็น entity ที่แสดงข้อมูลของประกาศพบสุนัขและประกาศสุนัขหาย ซึ่งจะถูกระบุด้วยชนิดของการประกาศ (type) และเก็บคำประกาศ (note) 

การออกแบบอัลกอริทึมสำหรับคัดแยกและค้นหาใบหน้าสุนัข

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

เทคโนโลยีที่ใช้

Image
SQL Database  เป็นเทคโนโลยีการจัดการฐานข้อมูลชนิดหนึ่งที่ใช้ในการเรียกและเก็บข้อมูลในเชิงความสัมพันธ์ (relational database management system: RDBMS) ผ่านภาษา SQL ซึ่งเป็นภาษาที่เข้าใจง่ายไม่ซับซ้อน แต่มีประสิทธิภาพในการทำงานสูง จัดการง่าย รวมถึงมีระยะเวลาในการตอบสนองต่อคำสั่งที่รวดเร็ว จึงทำให้เป็นที่นิยมและได้รับการรับรองให้เป็นมาตรฐานหนึ่งของสถาบันมาตรฐานสหรัฐอเมริกา (American National Standards Institute - ANSI) และองค์การมาตรฐานสากล (International Standards Organization - ISO) ซึ่งในโครงงานนี้จะใช้ MySQL ซึ่งเป็น SQL Database ชนิดหนึ่งที่เป็นที่นิยมกันมาก เนื่องจากเป็นฟรีแวร์ทางด้านฐานข้อมูลที่มีประสิทธิภาพสูง ผู้ใช้ต่างยอมรับในความรวดเร็วและการรองรับจำนวนผู้ใช้และขนาดของข้อมูลจำนวนมาก  Django Framework  สัญลักษณ์ของ Django  เป็นชุดเครื่องมือ Framework สำหรับ การพัฒนาเว็บไซต์ด้วยภาษา Python ซึ่งมี Framework สำหรับการเขียนเว็บไซต์ด้วยภาษา Python จำนวนมาก โดย Django Framework เป็นหนึ่งใน Framework สำหรับการพัฒนาเว็บไซต์ด้วยภาษา Python โดยปัจจุบันภาษา

ทฤษฏีที่เกี่ยวข้อง

Image
  การปรับปรุงคุณภาพของรูปภาพ (Image Enhancement)  เป็นกระบวนการในการแปลงข้อมูลภาพตัวเลข เพื่อที่จะสร้างภาพที่เน้นรายละเอียดหรือปรับโทนแสงของภาพที่ต้องการ โดยอาจจะต้องพิจารณาใช้เทคนิคปรับปรุงภาพหลายเทคนิคและนำมาประมวลผลเพื่อให้ได้ภาพที่ต้องการ ซึ่งแต่ละเทคนิคจะมีการปรับปรุงภาพในแง่มุมที่แตกต่างกัน เทคนิคที่ใช้การปรับปรุงภาพวิธีหนึ่งที่เป็นที่นิยมคือ การปรับปรุงภาพเชิงพื้นที่ (Spatial Enhancement) ซึ่งเป็นการเน้นภาพที่ใช้ค่าจากจุดภาพที่อยู่รอบ ๆ จุดภาพใด ๆ มาคำนวณ โดยการปรับภาพเชิงพื้นที่จะเกี่ยวข้องกับความถี่เชิงพื้นที่ หมายถึง ความแตกต่างระหว่างค่าสูงสุดและต่ำสุดของกลุ่มจุดบนภาพที่อยู่ติดกันหรือใกล้เคียงกัน เทคนิคที่นิยมใช้งานกัน ได้แก่ การเน้นขอบของวัตถุในภาพ (Edge Enhancement) และการกรองภาพแบบคอนโวลูชัน (Convolution Filtering) 1) การเน้นขอบภาพ (Edge Enhancement) เป็นการเน้นขอบโดยทำให้จุดภาพตรงรอยต่อระหว่างพื้นที่ที่มีกลุ่มจุดภาพมีค่าเพิ่มสูงขึ้นหรือลดลง ขึ้นกับความสว่างและความมืดของขอบ หากไม่มีการเปลี่ยนแปลง ตัวกรองภาพจะคงสภาพรูปภาพในพื้นที่นั้นไว้เช่นเดิม ซึ่งการปรับคุณภาพโด