Theory - noonsup1919/FaceDetection_CPE_KU_SRC GitHub Wiki

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

1.TensorFlow


เป็นไลบรารีที่ใช้ในการพัฒนา Machine Learning ได้รับการพัฒนาโดยบริษัท Google ได้ทำการเปิดตัวเมื่อวันที่ 11 กุมภาพันธ์ 2017 ซึ่ง TensorFlow นั้นจะเป็น Open source ที่จะใช้ python ในการเขียน รองรับเวอร์ชั่นทั้ง python2 และ Python3 โดย TensorFlow สามารถทำงานบน CPU และ GPUs รองรับระบบปฎิบัติการ Linux, macOS, Windows และ Android

2.NumPy


เป็นโมดูลส่วนเสริมของภาษา Python สำหรับใช้คำนวณทางคณิตศาสตร์และวิทยาศาสตร์ โดยมีคำสั่งพร้อมใช้งานจำนวนมากมาย และโมดูลนี้สามารถสร้างข้อมูลชนิดอาร์เรย์ (ที่ภาษา Python ไม่มี) และคำนวณอาร์เรย์ของตัวเลข สตริงและวัตถุได้ โมดูล NumPy รองรับทั้ง Python 2 , Python 3 และใช้ License: BSD

3.Pillow


ซึ่งเป็นด้าน image processing and graphics capabilities หรือโมดูลจัดการและประมวลผลรูปภาพบน Python ใน Python มีโมดูลด้านนี้ที่ชื่อว่า Python Imaging Library (PIL) ซึ่งรองรับแต่ Python 2 ในเวลานี้ครับ จึงมีคนได้ Fork PIL มาพัฒนาเป็นโมดูล Pillow ครับ รองรับทั้ง Python 2 และ Python 3 เหตุผลที่ Fork ทางนักพัฒนาได้บอกว่า PIL ไม่สนับสนุน setuptools และมีกำหนดการออกเวชั่นใหม่สองปีหรือมากกว่านั้น โมดูล Pillow ทำอะไรได้บ้าง จัดเก็บรูปภาพ (Image Archives) แสดงรูปภาพ (Image Display) ประมวลผลรูปภาพ (Image Processing) เช่น ปรับขนาดรูปภาพ แปลงไฟล์รูปภาพ ใส่ตัวอักษรลงในภาพ และอื่น ๆ เป็นต้น

4.Matplotlib


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

5.OpenCV


(Open source Computer Vision) เป็นไลบรารีฟังก์ชันการเขียนโปรแกรม (Library of Programming Functions) โดยส่วนใหญ่จะมุ่งเป้าไปที่การแสดงผลด้วยคอมพิวเตอร์แบบเรียลไทม์ (Real-Time Computer Vision) เดิมทีแล้วถูกพัฒนาโดย Intel แต่ภายหลังได้รับการสนับสนุนโดย Willow Garage ตามมาด้วย Itseez (ซึ่งต่อมาถูกเข้าซื้อโดย Intel) OpenCV เป็นไลบรารีแบบข้ามแพลตฟอร์ม (Cross-Platform) และใช้งานได้ฟรีภายใต้ลิขสิทธิ์ของ BSD แบบโอเพ่นซอร์ส (Open-Source BSD License) OpenCV ยังสนับสนุนเฟรมเวิร์กการเรียนรู้เชิงลึก (Deep Learning Frameworks) ได้แก่ TensorFlow, Torch/PyTorch และ Caffe ตัวอย่างการประยุกต์ใช้งาน OpenCV มีดังนี้ ชุดเครื่องมือคุณลักษณะ 2 มิติและ 3 มิติ (2D and 3D feature toolkits) การประมาณระยะในขณะเคลื่อนที่ (Egomotion Estimation) ระบบรู้จำใบหน้า (Facial recognition system) การจดจำท่าทาง (Gesture recognition) ปฏิสัมพันธ์ระหว่างมนุษย์และคอมพิวเตอร์ (Human-Computer interaction; HCI)

6.SciPy


เครื่องมือทางคณิตศาสตร์ วิทยาศาสตร์ วิศวกรรมที่เขียนบนภาษา Python เป็นชุดรวมเครื่องมือทางด้านนี้เลยครับ ประกอบไปด้วย NumPy SciPy library Matplotlib pandas ให้โครงสร้างข้อมูลที่มี ประสิทธิภาพสูง ใช้งานง่าย SymPy สำหรับพีชคณิตสัญลักษณ์คณิตศาสตร์และคอมพิวเตอร์ IPython nose เป็น framework สำหรับทดสอบโค้ดในภาษา Python

7.h5py


ใช้ h5py เพื่อบันทึกอาเรย์ numpy เป็นไฟล์ hdf5 hdf คือรูปแบบการจัดเก็บไฟล์แบบไบนารีชนิดหนึ่ง ปัจจุบันใช้รุ่นที่เรียกว่า hdf5 ชื่อสกุลไฟล์มักเขียนเป็น .h5 มอดูลนี้ที่จริงนอกจากเรื่องบันทึกและเปิดไฟล์แล้วก็ยังใช้ทำอะไรอย่างอื่นได้อีก

8.Haar Cascade crassifier


คือการตรวจหา สแกนหลายๆ ครั้งบนภาพเดิม แต่ด้วยขนาดที่แตกต่างกัน ถึงแม้ว่าจะมีใบหน้ามากกว่าหนึ่งหน้า ผลลัพธ์ของ sub-window จำนวนมากยังคงเป็นลบ (negative non-faces) ซึ่งปัญหานี้แก้ได้โดยใช้หลักการ “ปฏิเสธสิ่งที่ไม่ใช่ใบหน้า แทนการค้นหาใบหน้า” เพราะการตัดสินใจว่าบริเวณใดๆ ไม่ใช่ใบหน้านั้น ทำได้เร็วกว่าการค้นหาใบหน้า และได้มีการสร้างตัวจำแนกประเภทแบบ cascaded (Cascaded classifier)คือเป็น Classifier หลายตัวต่อกัน เมื่อ sub-window ถูกจัดประเภทเป็น ไม่ใช่ใบหน้า (non-face) จะถูกปฏิเสธทันที แต่ในทางตรงกันข้าม ถ้า sub-window นั้น ถูกจำแนกเป็น มีโอกาสเป็นใบหน้า (maybe-face) จะถูกส่งต่อไปยัง Classifier ตัวถัดไปตามลำดับ และกล่าวได้ว่ายิ่งมีจำนวนชั้น ของ Classifier มากเท่าใด โอกาสที่ sub-window จะเป็นใบหน้าจะยิ่งมีมากขึ้น