การตรวจจับการคัดค้านด้วย 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

เป็นผู้นำการปฏิวัติเทคโนโลยีที่ขับเคลื่อนด้วย AI

โปรแกรม PG สำหรับผู้บริหารในการเรียนรู้ของเครื่องและปัญญาประดิษฐ์
ลงทะเบียนเลย