การตรวจจับการคัดค้านด้วย Tensorflow คืออะไร? และวิธีการทำงาน [ตัวอย่าง]
เผยแพร่แล้ว: 2021-06-18สารบัญ
การตรวจจับวัตถุ - หมายความว่าอย่างไร
การตรวจจับวัตถุเป็นกระบวนการที่สามารถระบุหรือระบุตำแหน่งของวัตถุในรูปภาพหรือวิดีโอได้โดยใช้คอมพิวเตอร์วิทัศน์ หากเรามีภาพที่มีแมวและคน และเราต้องจัดประเภทวัตถุภายในภาพ เทคนิคการตรวจจับวัตถุ เช่น การตรวจจับวัตถุ ก็สามารถนำมาใช้ได้ และวัตถุที่จำเป็น เช่น แมวและบุคคล สามารถระบุตำแหน่งได้ ซึ่งสามารถทำได้โดยผ่านกรอบล้อมรอบวัตถุที่ตรวจพบ จึงทราบตำแหน่งของวัตถุที่ต้องการ
คนส่วนใหญ่ยังคงสับสนกับการจดจำวัตถุและการจดจำภาพ ความแตกต่างระหว่างทั้งสองอยู่ที่ข้อเท็จจริงที่ว่าในกรณีของการจดจำภาพ ภาพทั้งหมดจะถูกติดป้ายกำกับในขณะที่ในการจดจำวัตถุ วัตถุภายในภาพจะถูกติดป้ายกำกับ
คลาสของวัตถุ เช่น บุคคล ตาราง ฯลฯ และพิกัดของตำแหน่งของวัตถุในภาพที่กำหนด สามารถระบุได้โดยใช้เทคนิคการตรวจจับวัตถุ ประสิทธิภาพของอัลกอริธึมการตรวจจับวัตถุขึ้นอยู่กับความสามารถในการระบุตำแหน่งวัตถุภายในรูปภาพ ตัวอย่างหนึ่งของการตรวจจับวัตถุคือการตรวจจับใบหน้า
ทำไมต้องตรวจจับวัตถุ?
เนื่องจากความสามารถเฉพาะตัวของการตรวจจับวัตถุ กระบวนการนี้สามารถนำไปใช้ในงานที่สำคัญมากมาย เช่น:
- การนับคนในฝูงชน
- การขับรถในกรณีของรถยนต์ที่ขับเอง
- การเฝ้าระวังวิดีโอ
- การตรวจจับใบหน้า
- การตรวจจับความผิดปกติ
แนวทางการตรวจจับวัตถุ
อัลกอริทึมที่ใช้สำหรับวิธีการตรวจจับวัตถุอาจได้รับการฝึกอบรมก่อนการใช้งานหรือไม่ได้รับการดูแล
สองแนวทางคือวิธีการที่ใช้การเรียนรู้ด้วยเครื่องและการเรียนรู้เชิงลึกสำหรับการตรวจจับวัตถุ
- คุณลักษณะต่างๆ ของภาพ เช่น ฮิสโทแกรมสีหรือขอบ ฯลฯ กำลังถูกมองด้วยวิธีการที่ใช้ ML จากนั้นจึงสร้างแบบจำลองการถดถอยตามคุณสมบัติเหล่านี้และคาดการณ์ตำแหน่งของวัตถุ
- Convolutional neural network (CNNs) ถูกนำมาใช้ในกรณีของวิธีการที่มีพื้นฐานมาจากการเรียนรู้เชิงลึกสำหรับการตรวจจับวัตถุด้วยวิธีการที่ไม่ได้รับการดูแล
การทำงานของวิธีการตรวจจับวัตถุ
งานการตรวจจับวัตถุสามารถทำได้ตามขั้นตอนต่อไปนี้:
- รูปภาพที่ป้อนถูกแบ่งออกเป็นส่วนเล็กๆ หลายส่วน ชุดกล่องที่ผูกเข้าด้วยกันจะถูกสร้างขึ้นโดยครอบคลุมทั้งภาพ
- แต่ละพื้นที่ที่แบ่งส่วนจะขึ้นอยู่กับกระบวนการแยกคุณลักษณะ จากนั้นจะคาดการณ์การมีอยู่ของวัตถุที่ถูกต้องภายในกล่อง กระบวนการจะกำหนดว่ามีคุณสมบัติภาพใดๆ อยู่ในกล่องหรือไม่
- กล่องเดียวถูกสร้างขึ้นสำหรับกล่องที่ทับซ้อนกัน
การตรวจจับวัตถุโดยใช้ TensorFlow
TensorFlow สามารถกำหนดเป็นไลบรารีที่เป็นโอเพ่นซอร์สสำหรับการเรียนรู้ของเครื่องและมีการใช้กันอย่างแพร่หลายในแอพพลิเคชั่นต่างๆ เช่น การจดจำภาพ การค้นหาด้วยเสียง การจดจำวัตถุ ฯลฯ TensorFlow ทั้ง Python และ C++ ให้บริการโดย TensorFlow
- ทั้งอัลกอริธึมการเรียนรู้เชิงลึกและอัลกอริธึมการเรียนรู้ของเครื่องมีอยู่ใน TensorFlow
- Python ถูกใช้เป็นภาษา front-end และยังทำงานอย่างมีประสิทธิภาพใน C++
- นักพัฒนาสร้างกราฟการคำนวณโดยใช้ TensorFlow
- การดำเนินการทางคณิตศาสตร์จะแสดงด้วยโหนดในกราฟและข้อมูลจะแสดงผ่านการเชื่อมต่อ
TensorFlow ได้รับการพัฒนาเพื่อทำการวิจัยเกี่ยวกับแมชชีนเลิร์นนิงและเครือข่ายประสาทเทียมเชิงลึกโดยทีม Google Brain ภายในองค์กร Machine Intelligence Research ของ Google
API (Application Programming Interface) ป้องกันไม่ให้นักพัฒนาเขียนโค้ดตั้งแต่เริ่มต้นผ่านการจัดเตรียมชุดของการดำเนินการทั่วไป มีการใช้ API การตรวจจับวัตถุ TensorFlow เพื่อฝึกโมเดลสำหรับการตรวจจับวัตถุ เฟรมเวิร์กถูกสร้างขึ้นบน TensorFlow คุณสมบัติที่เป็นของการตรวจจับวัตถุ TensorFlow คือ:
- โมเดลที่ได้รับการฝึกอบรมแล้วจะเรียกว่า "สวนสัตว์จำลอง" และมีอยู่ในกรอบการทำงาน
- ชุดข้อมูลที่ใช้สำหรับการฝึกโมเดลที่ผ่านการฝึกอบรมต่างๆ ได้แก่
- ชุดข้อมูล COCO
- ชุดข้อมูล KITTI
- ชุดข้อมูลของรูปภาพที่เปิดอยู่
กรอบงาน TensorFlow ของการตรวจจับวัตถุ ประกอบด้วย แบบจำลองต่างๆ ที่มีสถาปัตยกรรมที่หลากหลาย ดังนั้นจึงมีความแม่นยำในการทำนายต่างกัน ประเภทของสถาปัตยกรรมของแบบจำลองที่ได้รับการฝึกอบรมแล้ว ได้แก่ :
1. MobileNet-SSD
เครือข่ายของ convolution เดียวระบุตำแหน่งของ bounding box ที่รอบเดียว สถาปัตยกรรมประกอบด้วยชั้นฐาน (MobileNet) ที่มีการบิดงอหลายชั้น ตำแหน่งของกรอบล้อมรอบจะถูกคาดการณ์ผ่านการดำเนินการบนแผนที่คุณลักษณะ ข้อมูลที่มีอยู่ในกรอบทุกช่องแสดงอยู่ด้านล่าง:
- ตำแหน่งออฟเซ็ตของกรอบขอบทั้งสี่มุม (cx, cy, w, h)
- ความน่าจะเป็นของคลาส C (c1, c2, …cp)
SSD ไม่ได้ทำนายรูปร่างของกล่อง แต่คาดการณ์ตำแหน่งของกล่อง จำนวนกล่องขอบเขต K ถูกกำหนดไว้สำหรับตำแหน่งแผนที่คุณลักษณะแต่ละแห่ง รูปร่างของ k bounding box ก่อนการฝึกจริง
สมการต่อไปนี้คำนวณการสูญเสีย
L=1/N (คลาส L + กล่อง L)
โดยที่ N: หมายเลขกล่องที่ตรงกัน คลาส L: การสูญเสีย softmax กล่อง L: ข้อผิดพลาดที่เกี่ยวข้องกับกล่องที่ตรงกัน
2. MobileNet
การบิดแบบมาตรฐานจะถูกแยกตัวประกอบเป็น การบิดเบี้ยว และการบิดแบบจุดๆ เช่น การบิดแบบ 1*1 การคำนวณจะลดลงด้วยการลดขนาดโมเดลผ่านการแยกตัวประกอบ
3. การเริ่มต้น-SSD
Inception-SSD มีสถาปัตยกรรมเดียวกันกับ MobileNet-SSD อย่างไรก็ตาม พื้นฐานของสถาปัตยกรรมในกรณีของ MobileNet-SSD คือ MobileNet และนี่คือโมเดล Inception
4. RCNN ที่เร็วขึ้น
การคาดคะเนตำแหน่งของวัตถุจะขึ้นอยู่กับอัลกอริทึมของข้อเสนอภูมิภาค เครือข่ายการตรวจจับได้ลดเวลาการทำงานผ่านความก้าวหน้าใน SSPnet และ Fast R-CNN แผนผังคุณลักษณะแบบบิดเบี้ยวจะถูกสร้างขึ้นเมื่ออิมเมจอินพุตถูกป้อนเข้าสู่โครงข่ายประสาทเทียมในกรณีของ RCNN ที่เร็วกว่า
จากนั้น ข้อเสนอภูมิภาคจะถูกระบุผ่านแผนผังคุณลักษณะที่บิดเบี้ยวและบิดเบี้ยวเป็นสี่เหลี่ยม สี่เหลี่ยมจัตุรัสจะถูกเปลี่ยนรูปร่างเป็นขนาดที่ได้รับการแก้ไขผ่านเลเยอร์การรวม ROL (เลเยอร์ภูมิภาคที่น่าสนใจ) จากนั้นจะใช้เป็นอินพุตไปยังเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์
เลเยอร์ softmax ใช้สำหรับทำนายคลาสข้อเสนอของภูมิภาคจากเวกเตอร์ฟีเจอร์ ROL นอกจากนี้ยังมีการคาดคะเนค่าออฟเซ็ตของขอบกล่อง
การเลือกแบบจำลองเทนเซอร์โฟลว์ของการตรวจจับวัตถุ
คุณสามารถเลือก โมเดล TensorFlow ของการตรวจจับวัตถุ ที่เหมาะสม ได้จาก TensorFlow API ตามความต้องการเฉพาะของผู้ใช้ เครือข่ายการตรวจจับแบบนัดเดียว เช่น เครือข่าย SSD สามารถใช้ได้หากผู้ใช้ต้องการรุ่นความเร็วสูง โมเดลนี้ค่อนข้างเร็วกว่าและสามารถตรวจจับฟีดวิดีโอที่ fps สูงได้
อย่างไรก็ตาม หากต้องการความแม่นยำมากกว่านี้ FasterRCNN อาจเป็นทางเลือกที่ดีกว่า เนื่องจากโมเดลมีความแม่นยำสูง แต่มีความเร็วที่ค่อนข้างช้ากว่า ดังนั้นผู้ใช้สามารถสำรวจโอกาสต่าง ๆ ที่มีอยู่ตามความต้องการของเขา
ตัวอย่างของ TensorFlow สำหรับการตรวจจับวัตถุ
การใช้ TensorFlow API สำหรับการตรวจจับวัตถุ ไม่จำเป็นต้องมีความรู้เกี่ยวกับการเรียนรู้ของเครื่องหรือเครือข่ายประสาท ไฟล์ที่ API ให้มาส่วนใหญ่จะใช้ ข้อกำหนดเพียงอย่างเดียวคือการรู้พื้นฐานของ python
1. กำลังดาวน์โหลด TensorFlow
- สามารถดาวน์โหลด TensorFlow ผ่าน git หรือดาวน์โหลดด้วยตนเอง
- การ ดาวน์โหลด TensorFlow ผ่าน git เป็นหนึ่งในวิธีที่ง่ายที่สุดในการดาวน์โหลด สำหรับการดาวน์โหลดผ่าน git ระบบควรมี git ติดตั้งไว้ล่วงหน้าอยู่แล้ว เมื่อติดตั้ง git แล้ว ควรพิมพ์คำสั่งต่อไปนี้ในเทอร์มินัล
- ต้องเข้าไป ที่ลิงค์ต่อไปนี้ และต้องคลิกปุ่มสีเขียว ไฟล์ซิปจะต้องดาวน์โหลดและแตกไฟล์
- ต้องเปลี่ยนชื่อโฟลเดอร์เป็นโมเดลจาก models-master
- ต้องสร้างสภาพแวดล้อมเสมือนจริง หนึ่งในวัตถุประสงค์หลักของการสร้างสภาพแวดล้อมเสมือนของหลามคือการสร้างสภาพแวดล้อมของหลามที่แยกออกมาต่างหาก ใช้สำหรับโครงการภายใต้ python ดังนั้นการพึ่งพาของทุกโครงการจะแตกต่างกัน
- ต้องใช้คำสั่งต่อไปนี้ในพรอมต์ของอนาคอนดา:
ในกรณีนี้ ชื่อสภาพแวดล้อมเสมือน obj_detection
conda create -n obj_detection -> สำหรับการตั้งค่าสภาพแวดล้อมแทบ
conda เปิดใช้งาน obj_detection -> สำหรับการเปิดใช้งานสภาพแวดล้อมเสมือน
2. การติดตั้งการพึ่งพา
- ต้องติดตั้งการพึ่งพาที่ API ต้องการบนพีซีในพื้นที่
- สามารถติดตั้งการพึ่งพาได้หลังจากเปิดใช้งานสภาพแวดล้อมเสมือน
- ควรพิมพ์คำสั่งต่อไปนี้
pip ติดตั้งเทนเซอร์โฟลว์
- หากมี GPU จำเป็นต้องใช้คำสั่งต่อไปนี้
pip ติดตั้ง tensorflow-gpu
- ต้องติดตั้งการพึ่งพาอื่น ๆ โดยใช้คำสั่งต่อไปนี้
pip ติดตั้งหมอน Cython lxml jupyter matplotlib contextlib2 tf_slim
3. ดาวน์โหลด Protocol Buffers (Protobuff)
- บัฟเฟอร์โปรโตคอลเป็นกลไกบางอย่างสำหรับการจัดโครงสร้างข้อมูลตามลำดับเช่น XML
- ต้องดาวน์โหลด 'Protobuff' จาก ลิงก์
- แตกไฟล์และคัดลอกไฟล์ไปยังโฟลเดอร์ย่อยชื่อ "research" ในโฟลเดอร์ "models" ที่ดาวน์โหลดไว้แล้ว
- โฟลเดอร์ที่มีไฟล์ protobuf จะต้องถูกนำทางไปยังและรันคำสั่งต่อไปนี้
protoc object_detection/protos/*.proto –python_out=.
- การดำเนินการคำสั่งที่ประสบความสำเร็จจะสร้างไฟล์ python เทียบกับไฟล์ proto แต่ละไฟล์ในโฟลเดอร์ protos ภายใต้การตรวจจับวัตถุในโฟลเดอร์ models
บทสรุป
การตรวจจับวัตถุเป็นเทคนิคที่ใช้กันอย่างแพร่หลายในแอปพลิเคชันแบบเรียลไทม์ต่างๆ เราได้เรียนรู้ว่าเทคนิคนี้สามารถทำได้โดยการใช้การเรียนรู้ด้วยเครื่องหรืออัลกอริธึมการเรียนรู้เชิงลึก
นอกจากนี้ ด้วยแอปพลิเคชันของ API เช่น TensorFlow ผู้ใช้จำเป็นต้องมีความรู้เกี่ยวกับแนวคิดการเขียนโปรแกรมหลามก่อน เฉพาะวิธีการตรวจหาวัตถุโดยใช้ TensorFlow API เท่านั้นที่จะเข้าใจได้อย่างถูกต้อง TensorFlow เป็นแพลตฟอร์มโอเพ่นซอร์สสำหรับการเรียนรู้ของเครื่อง ดังนั้น เพื่อให้เข้าใจกลไกการทำงานของ TensorFlow และการนำไปใช้งาน คุณควรได้รับความรู้เกี่ยวกับแนวคิดของแมชชีนเลิร์นนิง
หากคุณเป็นมืออาชีพระดับกลางที่ต้องการเรียนรู้การเขียนโปรแกรมหลาม ปรับใช้โมเดล ML ร่วมกับคลาวด์คอมพิวติ้ง คุณสามารถดูหลักสูตร " วิทยาศาสตรมหาบัณฑิตในการเรียนรู้ของเครื่องและปัญญาประดิษฐ์ " ที่จัดทำโดย upGrad หลักสูตรที่ได้รับการรับรองร่วมกันโดย IIIT Bangalore & LJMU จะปรับเป้าหมายของคุณให้สอดคล้องกับการฝึกอบรมจากผู้เชี่ยวชาญ และช่วยให้คุณเตรียมพร้อมสำหรับการเข้าสู่บริษัทในฝันของคุณ สิ่งที่คุณต้องมีก็คือมีปริญญาตรี ทีมช่วยเหลือของเราจะติดต่อกลับหาคุณหากมีคำถามเกี่ยวกับหลักสูตรโดย upGrad