Computer Vision ก่อนเข้าสู่ยุค Deep Learning ค.ศ. 2000–2012

Dr. Winn Voravuthikunchai
botnoi-classroom
Published in
5 min readJan 31, 2021

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

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

Viola–Jones object detection

ในปี 2001 มีนักวิจัยสองคนชื่อ Paul Viola และ Michael Jones ได้คิดค้นวิธีตรวจจับใบหน้าที่มีประสิทธิภาพมาก นั่นคือการรัน filter ซึ่งก็คือกลุ่ม pixel สีดำกับสีขาวรันไปทั่วรูปภาพ โดยที่ส่วนสีขาวของ filter หากเจอกับกลุ่ม pixel ที่สว่างของรูปภาพ ก็จะได้ผลลัพธ์ที่สูง ในขณะที่ส่วนสีดำของ filter ต้องเจอกับกลุ่ม pixel ที่มืดของรูปภาพถึงจะได้ผลลัพธ์ที่สูง พวกเค้าได้สร้าง filter หลาย ๆ แบบที่ล้อกับ pattern ของใบหน้าตามที่ได้บอก และรวมค่าผลลัพธ์ ทั้งหมดออกมาว่าตรงไหนของรูปภาพน่าจะเป็นใบหน้าคน อัลกอริทึ่มนี้เรียกว่า Viola-Jones detector ถึงแม้ว่าในยุคปัจจุบันจะมีอัลกอริทึ่มที่แม่นยำกว่าโดยใช้ deep learning แต่ Viola-Jones detector ก็ยังใช้อย่างแพร่หลายโดยเฉพาะการตรวจจับใบหน้าที่เป็นใบหน้าตรง เพราะถือว่าแม่นยำใช้ได้ แต่ที่สำคัญคือมันง่ายและเร็วมาก เมื่อเทียบกับ deep learning

Histogram Of Oriented Gradient (HOG)

หลังจากนั้นในยุโรปและอเมริกา ก็มีการวิจัยในศาสตร์นี้อย่างมาก งานวิจัยที่โด่งดังอีกอันก็คือ Histogram Of Oriented Gradient (HOG) ผมเข้าใจผิดมาตลอดว่าคิดค้นโดย Navneet Dalal และ Bill Triggs แต่เมื่อมาเขียนบทความนี้ ถึงได้รู้ว่า มีการพูดถึง concept ตั้งแต่ 1986 เพียงแต่ Navneet Dalal และ Bill Triggs มาทำให้โด่งดังจากการประยุกต์ใช้ HOG กับการ detect คน Pedestrain detection

เค้าสังเกตว่าคนที่เดินตามถนนก็จะมี pattern ที่ชัดเจน นั่นคือก็เป็นแท่งตรง ๆ ทรงกระบอก ถ้าเราสามารถที่จะจับขอบของวัตถุ edge ได้ แล้วคำนวณ distribution ของขอบ ว่าในแต่ละตำแหน่งของรูปภาพมีขอบแนวตั้งสองข้างมั้ยที่เป็นแขน มีขอบแนวตั้งข้างล่างเป็นแนวขอบขามั้ย ก็น่าจะเป็นคน สิ่งที่คล้ายคลึงกับของ Viola-Jones ก็คือมีการตั้งสมมติฐานหรือ assumption จากการสังเกต ซึ่งมันก็ทำได้ในสองกรณีนี้ เพราะ pattern มันค่อนข้างชัดเจนมาก ๆ ความแตกต่างของคนในรูปมันน้อยมาก และค่อนข้างชัดเจน ไม่ว่าจะหันซ้าย หันขวา หันหน้าตรง หรือหันหลัง

บริษัทรถยนต์ในยุโรปตื่นตัวกันมาก ไม่ว่าจะเป็น Daimler Benz BMW Volvo ก็มีการวิจัยพัฒนาระบบตรวจจับคนบนถนน ในยุคนั้นเป้าหมายคือการสร้างระบบป้องกันการชนคน ผมเองก็โชคดีที่มีโอกาสไปทำวิจัยในยุคแรก ๆ สมัยปี 2008 ที่ Daimler การที่จะรันหน้าต่าง sliding window (กรอบสีเหลี่ยมผืนผ้าแนวตั้ง ที่รันตามรูปในแต่ละตำแหน่ง) เพื่อดูว่าข้างในมีคนอยู่หรือเปล่า หากต้องรันทุกขนาด ทุกตำแหน่ง ก็จะใช้เวลาคำนวณมาก และเนื่องจากรถยนต์วิ่งด้วยความเร็ว การตรวจจับจะต้องเร็วมาก ๆ เช่นเดียวกัน จึงมีแนวคิดในเรื่องของการลดจำนวนหน้าต่าง ไม่ว่าจะเป็น สัดส่วนกว้าง x สูง ก็อาจจะเป็น 1 x 5 หรือว่า แนวคิดว่าถนนลาด แล้วคนอยู่บนถนนเพราะฉะนั้นถ้าเราใช้ algorithm อื่น ๆ เพื่อ detect พื้นถนน เราก็จะกะขนาดกล่องสี่เหลี่ยมได้หากอยู่ไกล ๆ กรอบก็จะเล็ก หากอยู่ใกล้ ๆ กรอบก็จะใหญ่ แล้วก็จะมีระบบการ track หรือติดตาม หากมีการตรวจพบคนในเฟรม ก็ควรจะเจอกรอบในบริเวณที่ใกล้ ๆ กันในเฟรมถัดไป พวก assumption เหล่านี้พัฒนากันในบริษัทรถยนต์ต่าง ๆ

Markus Enzweiler เป็น supervisor ของผม ปี 2008 ที่ Daimler กำลังติดตั้งระบบคอมพิวเตอร์เป็น PC สองเครื่องที่หลังรถ ต่อกับแบตเตอรี่

นอกจาก pedestrain detection แล้ว ก็มีทีมอื่น ๆ ที่วิจัยการตรวจจับป้ายจราจร โดยใช้ HOG เหมือนกัน เนื่องจากป้ายจราจร ก็มีรูปทรงที่เฉพาะ เช่นเป็น วงกลม สามเหลี่ยม หรือสี่เหลี่ยม

Bag of Words (BoW)

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

หมาแต่ละตัวช่างจะไม่เหมือนกันเลย

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

มีงานวิจัยออกมามากมายต่อยอดแนวคิดเหล่านี้ ไม่ว่าจะเป็นวิธีต่าง ๆ ในการสร้าง visual word อาทิ การ sample patch สี่เหลี่ยมเล็ก ๆ แล้วคำนวณ​ HOG feature จากนั้นนำมา cluster ด้วย k-mean แล้วเอา centroid ของ cluster มาเป็น visual word แล้วทำการ hard assignment ของแต่ละส่วนย่อยของรูป หรือว่า ใช้ Gaussian Mixture และใช้ soft assignment เรียกว่า Fisher Vector ก็ค่อนข้างฮิตมากในช่วงเวลานึง นอกจากเรื่อง visual word ก็จะมีเรื่องของการหาความสัมพันธ์ของ visual word เช่นถ้า กลม ๆ อยู่ ใกล้ ๆ กระบอก ก็อาจจะเป็นส่วนของจักรยานมากขึ้น

Local Binary Pattern (LBP)

ในช่วงเวลานี้ นอกจากจะมีงานวิจัยที่ปรับปรุงวิธีการเข้ารหัสทั้งภาพ Bag of Words ก็ยังมีงานวิจัยในการเข้ารหัสส่วนย่อย ๆ เช่นเดียวกับ HOG ได้แก่ LBP อย่าง HOG จะเหมาะกับวัตถุที่มีเส้นของ edge ที่ชัดเจน แต่สำหรับ LBP ใช้สำหรับตรวจจับเนื้อผิว texture ดังนั้นถ้าอยากจะตรวจจับว่าเป็นขนปุย ๆ หรือว่าลายไม้ หรือว่าวัตถุขนาดเล็ก ๆ LBP ก็จะเหมาะกว่า สำหรับการเข้ารหัส LBP ง่ายมาก ตามในรูปนั่นคือดู 8 pixel รอบข้างว่ามีขนาดความเข้มมากกว่า pixel ตรงกลางหรือไม่ ถ้ามากกว่าก็ให้เป็น 1 น้อยกว่าก็เป็น 0 จากนั้นก็กางตัวเลขออกก็จะได้เป็นรหัส 0 1 ความยาว 8 หลัก จึงแปลงเป็นตัวเลขฐาน 10 ได้ ทำแบบนี้ทุก ๆ pixel แล้วเอาไปเข้ารหัส window โดยคำนวณสถิติ histogram เช่นเดียวกับที่ทำกับ HOG ในช่วงเวลานี้มีการผสม HOG กับ LBP แล้วก็มีการดัดแปลง LBP ใน pattern ต่าง ๆ อีกด้วย

Kernels

ในยุคประมาณ 10 ปีนี้ ตั้งแต่ปี 2000–2012 งานวิจัยทางสาย Computer Vision ก็เน้นในส่วนของการเข้ารหัสภาพ หรือ feature extraction ซะมากกว่าการปรับปรุงในส่วนของ Machine Learning ซึ่งมักจะนิยมใช้ SVM เป็นพื้นฐาน ยกเว้นในส่วนของ Face Detection จะใช้ Adaboost แต่ก็มีนักวิจัยบางกลุ่มที่ก็ดูเรื่องของ kernel metrics เสมือนการแปลง original feature ไปอยู่ใน spaceใหม่ แล้วพบว่าสามารถแยกรูปภาพได้ดีขึ้น เมื่อเทียบกับ Linear SVM โดยจะพบว่าสำหรับ feature ที่เป็น Histogram Chi-squared kernel กับ Intersection kernel จะใช้ได้ดี

ในการสร้าง kernel ก็คือคำนวณ pairwise feature ตามสูตรข้างล่าง สมมติว่า รูป A ที่เป็น histogram คือ [1 0 2 5] แล้วรูป B คือ [2 3 1 4] สำหรับ Histogram intersection kernel I(A,B) จะเท่ากับผลบวกของค่าต่ำสุดในแต่ละ feature ได้แก่ 1 + 0 + 1 + 4 = 6 เราจะคำนวณทุกคู่ของรูปภาพ จนได้ Kernel matrix แล้วนำไปใช้ร่วมกับ SVM

คนในวงการ

งานวิจัยในสาย Computer Vision ออกมาเรื่อย ๆ การแข่งขันค่อนข้างสูง ถือว่า community ในยุโรปกับอเมริกาใหญ่เหมือนกันนะ จะมีงานตีพิมพ์ของ CVPR ICCV ECCV ที่จะเป็น top งานประชุมวิจัยในสายนี้ แล้วก็จะมีรองลงมาก็จะเป็น BMVC กับ ACCV อย่าง CVPR ก็จะมีงานตีพิมพ์สัก 1 พันงาน ถ้าให้ประเมินทั่วโลกในสมัยนั้นก็น่าจะมีนักวิจัยในสายนี้สัก 7–8 พันคน ถ้าพูดถึงตลาดงานก็ไม่น่าจะเยอะมาก เพื่อน ๆ ที่เรียนจบ ก็มีแค่ 20% ที่ได้ทำงานในบริษัทที่ทำ Computer Vision ซึ่งบริษัทเหล่านั้นก็คือบริษัทรถยนต์ ส่วนที่เหลือก็จะทำวิจัยต่อในมหาวิทยาลัย หรือไม่ก็ไปทำงานในสาย Data Scientist

Applications

ในช่วงก่อนจะเข้าสู่ยุคของ Deep learning application ทางด้าน Computer Vision ที่ออกสู่ตลาด ก็เริ่มจะมีเพิ่มขึ้น ที่เห็นชัด ๆ ก็คือ Face detection ในกล้องถ่ายรูปต่าง ๆ หรือว่าใน Social Media ส่วน Face recognition เริ่มที่จะออกมา ใช้โดยตำรวจ โดยช่วงนั้น LBP รอบ keypoint ที่สำคัญของใบหน้า ได้แก่ขอบตา ขอบปาก จะเป็น feature หลัก แล้วก็เริ่มที่จะใช้ object detection บ้างเคยเห็นในซุเปอร์ที่ฝรั่งเศส เค้าใช้กล้องส่องดูว่ากำลังชั่งผลไม้อะไร แล้วก็แนะนำออกมาให้เลือกอีกที ในส่วนของ Pedestrain detection เริ่มมีการโฆษณาทางสื่อ ให้คนรู้ว่ากำลังจะมีรถที่มีระบบป้องกันชนคน

การเข้าสู่ยุคของ Deep Learning

ในยุคปัจจุบัน deep learning ทำให้ประสิทธิภาพในการมองเห็นของคอมพิวเตอร์แม่นยำขึ้นเยอะ จึงก่อให้เกิด application ที่หลากหลายมากขึ้น และเชื่อว่าเราจะได้เห็นมากกว่านี้อีกเยอะในอนาคตอันใกล้ ตอนนี้บอทน้อยกำลังทำหลากหลายแอพลิเคชั่น ที่ใช้ Computer Vision ไม่ว่าจะเป็นพยาบาล AI หรือว่าระบบตรวจจับสินค้า ซึ่งอาจจะเอาไปต่อกับเครื่อง POS หรือว่าแชทบอท

ตัวต้นแบบ POS ที่ทีม BOTNOI กำลังพัฒนา

ในก่อนยุค deep learning สถานการณ์ในสาย Computer Vision ทั้งงานวิจัยที่เน้น feature engineering หนัก ๆ รวมทั้งแอพลิเคชั่น กับตลาดงาน ดำเนินการมาอย่างเรื่อย ๆ จนถึงปี 2012 ปีที่ Deep Learning CNN ของ Alex Krizhevsky และทีม ชนะการแข่งขัน ImageNet Large Scale Visual Recognition Challenge ในการแยกรูปภาพอย่างท่วมท้น ต้องบอกว่างานวิจัยก่อน ๆ ก็อาจจะต่อยอดกันไป และเพิ่มความแม่นยำ 1% ก็หรูมากแล้ว แต่ CNN เข้ามาเพิ่มความแม่นยำถึง 7% เป็นสิ่งที่ฮือฮากันมาก ๆ ผมยังจำสีหน้าเพื่อน ๆ ในแลป เค้าส่งเข้าประกวดแข่งขันกันด้วย เอามือกุมหัว ร้อง f*** ออกมา s*** man เป็นไปได้ยังไง หลังจากนั้นเราก็เข้าสู่ยุคของ Deep Learning ซึ่งจะมาเล่าต่อในบทความหน้าครับ ก็คงหนีไม่พ้น CNN Transfer learning GAN แล้วก็แอพลิเคชั่นใหม่ ๆ

ทิ้งท้าย

สุดท้ายส่วนตัวคิดว่า Computer Vision มันสนุกดีนะ คือมันเห็นภาพ เรามองเห็นได้ แล้วก็เอาไปประยุกต์ต่อยอดได้มากมาย คิดว่าในอนาคตอันใกล้คนที่ทำ model Computer Vision เป็นน่าจะมีคนต้องการตัวสูง ก็แนะนำ ก็เชียร์ให้ศึกษากันต่อครับ หากใครอ่านบทความนี้แล้วสนใจ และตอนนี้พวกเราบอทน้อย กำลังจะเปิดคลาสสอน Computer Vision Essential รุ่นแรก สอนสดออนไลน์ ผ่านซูม คิดว่าน่าสนใจสำหรับใครที่อยากจะเริ่มต้นศึกษาในสายนี้ จะพยายามสอนโดยเล่าเรื่องคล้าย ๆ ในบทความนี้โดยจะพยายามให้เห็นภาพมากที่สุด และแชร์ประสบการณ์ ที่สำคัญจะเน้นให้ทำแอพลิเคชั่นให้เป็น แต่คลาสนี้อาจจะไม่ได้ลงไปถึงสมการคณิตศาสตร์ เนื้อหาดังภาพข้างล่าง หากสนใจสมัครก็สามารถ สมัครดูรายละเอียดเพิ่มเติม และสมัครได้โดยกรอกฟอร์มนี้ครับ https://forms.gle/wWQBV4MsqSmBKE5r8 แล้วเจอกันตอนต่อไปครับ

— — — — — — — — — — — — — — — — — — — — — — — — -

สำหรับใครที่สนใจ AI สนใจ Data science สามารถ join group Botnoi Classroom ตอนนี้มีสมาชิก 7 พันคน จะคอยอัพเดทเทรนด์ ความรู้ ทางด้าน AI และ Data science แล้วก็คอยประกาศอีเวนท์ หรือเปิดคลาสสอนด้วย

ส่วนหากใครสนใจใช้บริการ BOTNOI ในสร้างแชทบอท หรือให้คำปรึกษาเกี่ยวกับ AI & Data science ติดต่อได้ผ่านเวป -> Botnoi และ FB Page Botnoi Consulting นะครับ

--

--

Dr. Winn Voravuthikunchai
botnoi-classroom

obtained his PhD in AI from Caen University, France. He was Chief Data Scientist at Telenor. Currently, he is Founder & CEO of Botnoi Group, and LINE API Expert