หนึ่งในแนวคิดที่เรียบง่ายแต่น่าสนใจที่สุดในการเรียนรู้เชิงลึกคือการตรวจจับวัตถุ แนวคิดพื้นฐานคือการแบ่งแต่ละรายการออกเป็นคลาสที่ต่อเนื่องกันซึ่งแสดงถึงลักษณะที่เปรียบเทียบได้ แล้ววาดกล่องรอบๆ
ลักษณะเด่นเหล่านี้สามารถทำได้ง่ายพอๆ กับรูปแบบหรือสี ซึ่งช่วยให้เราสามารถจัดหมวดหมู่คุณลักษณะเหล่านี้ได้
แอพพลิเคชั่นของ การตรวจจับวัตถุ มีการใช้กันอย่างแพร่หลายในด้านวิทยาศาสตร์การแพทย์ การขับขี่อัตโนมัติ การป้องกันประเทศและการทหาร การบริหารรัฐกิจ และสาขาอื่น ๆ อีกมากมาย ต้องขอบคุณการปรับปรุงที่สำคัญใน Computer Vision และการประมวลผลภาพ
ที่นี่เรามี MMDetection ซึ่งเป็นชุดเครื่องมือตรวจจับวัตถุโอเพนซอร์ซที่ยอดเยี่ยมที่สร้างขึ้นบน Pytorch ในบทความนี้ เราจะตรวจสอบ MMDetection โดยละเอียด ลงมือปฏิบัติจริง อภิปรายคุณสมบัติ และอื่นๆ อีกมากมาย
ความหมายของ การตรวจจับ MMD?
พื้นที่ การตรวจจับ MMD กล่องเครื่องมือถูกสร้างขึ้นเป็นฐานรหัส Python โดยเฉพาะสำหรับปัญหาที่เกี่ยวข้องกับการระบุวัตถุและการแบ่งส่วนอินสแตนซ์
มีการใช้การนำ PyTorch ไปใช้และสร้างขึ้นในรูปแบบโมดูลาร์ สำหรับการรู้จำวัตถุและการแบ่งส่วนอินสแตนซ์ มีการรวบรวมแบบจำลองที่มีประสิทธิภาพจำนวนมากไว้ในวิธีการที่หลากหลาย
อนุญาตให้อนุมานที่มีประสิทธิภาพและการฝึกอบรมอย่างรวดเร็ว ในอีกทางหนึ่ง กล่องเครื่องมือมีน้ำหนักสำหรับเครือข่ายที่ฝึกไว้ล่วงหน้ามากกว่า 200 เครือข่าย ทำให้แก้ไขได้อย่างรวดเร็วในช่องการระบุวัตถุ
ด้วยความสามารถในการปรับเทคนิคปัจจุบันหรือสร้างตัวตรวจจับใหม่โดยใช้โมดูลที่มีอยู่ MMDetection ทำหน้าที่เป็นเกณฑ์มาตรฐาน
คุณลักษณะสำคัญของกล่องเครื่องมือคือการรวมชิ้นส่วนโมดูลาร์ที่ตรงไปตรงมาจากปกติ การตรวจจับวัตถุ เฟรมเวิร์กที่สามารถใช้เพื่อสร้างไปป์ไลน์เฉพาะหรือโมเดลเฉพาะ
ความสามารถในการเปรียบเทียบของชุดเครื่องมือนี้ทำให้ง่ายต่อการสร้างเฟรมเวิร์กตัวตรวจจับใหม่บนเฟรมเวิร์กที่มีอยู่และเปรียบเทียบประสิทธิภาพ
คุณสมบัติ
- ชุดเครื่องมือนี้รองรับเฟรมเวิร์กการตรวจจับที่ได้รับความนิยมและทันสมัย เช่น Faster RCNN, Mask RCNN, RetinaNet เป็นต้น
- การใช้โมเดลที่ผ่านการฝึกอบรมมาแล้วกว่า 360+ แบบเพื่อการปรับแต่งอย่างละเอียด (หรือฝึกฝนใหม่อีกครั้ง)
- สำหรับชุดข้อมูลการมองเห็นที่รู้จักกันดี ได้แก่ COCO, Cityscapes, LVIS และ PASCAL VOC
- บน GPU การดำเนินการ bbox และมาสก์พื้นฐานทั้งหมดจะถูกดำเนินการ codebase อื่นๆ เช่น Detectron2, maskrcnn-benchmark และ SimpleDet สามารถฝึกได้เร็วกว่าหรือเท่าเทียมกับโค้ดเบสนี้
- นักวิจัยทำลายลง การตรวจจับวัตถุ เฟรมเวิร์กออกเป็นหลายโมดูล ซึ่งสามารถรวมเข้าด้วยกันเพื่อสร้างระบบตรวจจับวัตถุที่ไม่เหมือนใคร
สถาปัตยกรรม MMDetection
MMDetection ระบุการออกแบบทั่วไปที่สามารถนำไปใช้กับโมเดลใดก็ได้ เนื่องจากเป็นกล่องเครื่องมือที่มีโมเดลที่สร้างไว้ล่วงหน้ามากมาย ซึ่งแต่ละแบบมีสถาปัตยกรรมของตัวเอง ส่วนประกอบต่อไปนี้ประกอบขึ้นเป็นสถาปัตยกรรมโดยรวมนี้:
- กระดูกสันหลัง: Backbone เช่น ResNet-50 ที่ไม่มีเลเยอร์ที่เชื่อมต่ออย่างสมบูรณ์เป็นองค์ประกอบที่แปลงรูปภาพเป็นแผนที่คุณลักษณะ
- คอ: คอเป็นส่วนที่เชื่อมกระดูกสันหลังกับศีรษะ ในแผนที่คุณสมบัติดิบของแกนหลัก จะทำการปรับเปลี่ยนหรือกำหนดค่าใหม่บางอย่าง คุณลักษณะ Pyramid Network เป็นภาพประกอบเดียว (FPN)
- หัวหนาแน่น (AnchorHead/AnchorFreeHead): เป็นส่วนประกอบที่ทำงานในพื้นที่หนาแน่นของแผนที่คุณลักษณะ เช่น AnchorHead และ AnchorFreeHead เช่น RPNHead, RetinaHead และ FCOSHead
- RoIExtractor: ด้วยการใช้โอเปอเรเตอร์ที่คล้ายกับ RoIPooling ซึ่งเป็นส่วนที่ดึงคุณสมบัติ RoIwise จากแผนที่คุณลักษณะเดียวหรือชุดรวม ตัวอย่าง SingleRoIExtractor จะแยกคุณลักษณะ RoI จากระดับที่ตรงกันของปิรามิดคุณลักษณะ
- RoIHead (BBoxHead/MaskHead): เป็นส่วนหนึ่งของระบบที่ใช้คุณลักษณะ RoI เป็นอินพุตและสร้างการคาดการณ์เฉพาะงานตาม RoI เช่น bounding box จำแนก/ถดถอยและการทำนายมาสก์
การสร้างเครื่องตรวจจับแบบขั้นตอนเดียวและแบบสองขั้นตอนจะแสดงโดยใช้แนวคิดดังกล่าว เราสามารถพัฒนาขั้นตอนของเราเองได้ง่ายๆ โดยการสร้างชิ้นส่วนใหม่สองสามชิ้นและรวมชิ้นส่วนที่มีอยู่บางส่วนเข้าด้วยกัน
รายชื่อรุ่นที่รวมอยู่ในMMDetection
MMDetection มอบฐานโค้ดระดับแนวหน้าสำหรับโมเดลที่มีชื่อเสียงหลายรุ่นและโมดูลที่เน้นงาน รุ่นต่างๆ ที่เคยทำมาแล้วและวิธีการที่ปรับเปลี่ยนได้ซึ่งอาจใช้กับกล่องเครื่องมือ MMDetection ได้แสดงไว้ด้านล่าง รายการนี้เติบโตขึ้นเรื่อยๆ เนื่องจากมีการเพิ่มโมเดลและวิธีการต่างๆ มากขึ้น
- R-CNN . เร็ว
- R-CNN ที่เร็วขึ้น
- หน้ากาก R-CNN
- เรติน่าเน็ต
- ดีซีเอ็น
- DCNv2
- แคสเคด R-CNN
- เอ็มทูเด็ต
- ธอส
- ScratchDet
- R-CNN สองหัว
- กริด R-CNN
- เอฟเอสเอเอฟ
- ราศีตุลย์ R-CNN
- จีซีเน็ต
- ชม.เน็ท
- หน้ากากให้คะแนน R-CNN
- เอฟซีโอเอส
- SSD
- R-FCN
- การฝึกอบรมความแม่นยำแบบผสม
- มาตรฐานน้ำหนัก
- ไฮบริดภารกิจ Cascade
- การทอดสมอแบบมีไกด์
- ความสนใจทั่วไป
การสร้างแบบจำลองการตรวจจับวัตถุโดยใช้ MMDetection
ในบทช่วยสอนนี้ เราจะเป็นสมุดบันทึกการทำงานร่วมกันของ Google เนื่องจากตั้งค่าและใช้งานง่าย
การติดตั้ง
ในการติดตั้งทุกสิ่งที่เราต้องการ ก่อนอื่นเราจะติดตั้งไลบรารีที่จำเป็นและโคลนโปรเจ็กต์ MMdetection GitHub
การนำเข้า env
สภาพแวดล้อมสำหรับโครงการของเราจะถูกนำเข้าจากที่เก็บ
การนำเข้าไลบรารีและ MMdetection
ตอนนี้เราจะนำเข้าไลบรารีที่จำเป็นพร้อมกับ MMdetection แน่นอน
ดาวน์โหลดด่านฝึกหัด
ตอนนี้ควรดาวน์โหลดจุดตรวจสอบโมเดลที่ได้รับการฝึกอบรมล่วงหน้าจาก MMdetection เพื่อการปรับและการอนุมานเพิ่มเติม
โมเดลอาคาร
ตอนนี้เราจะสร้างแบบจำลองและใช้จุดตรวจสอบกับชุดข้อมูล
อนุมานเครื่องตรวจจับ
เมื่อโมเดลได้รับการสร้างและโหลดอย่างถูกต้องแล้ว มาดูกันดีกว่าว่ามันยอดเยี่ยมแค่ไหน เราใช้ตัวตรวจจับการอนุมาน API ระดับสูงของ MMDetection API นี้ได้รับการออกแบบมาเพื่อให้กระบวนการอนุมานง่ายขึ้น
ผล
มาดูผลลัพธ์กัน
สรุป
โดยสรุป กล่องเครื่องมือ MMDetection มีประสิทธิภาพดีกว่าฐานโค้ดที่เพิ่งเปิดตัว เช่น SimpleDet, Detectron และ Maskrcnn-benchmark ด้วยคอลเลกชั่นโมเดลขนาดใหญ่
MMDetection เป็นเทคโนโลยีที่ล้ำสมัย MMDetection มีประสิทธิภาพเหนือกว่า codebase อื่น ๆ ทั้งหมดในแง่ของประสิทธิภาพและประสิทธิภาพ
สิ่งหนึ่งที่อร่อยที่สุดเกี่ยวกับ MMdetection คือตอนนี้คุณสามารถชี้ไปที่ไฟล์การกำหนดค่าอื่น ดาวน์โหลดจุดตรวจสอบอื่น และเรียกใช้โค้ดเดียวกันได้หากต้องการเปลี่ยนโมเดล
ฉันแนะนำให้ดูของพวกเขา คำแนะนำการใช้ หากคุณประสบปัญหากับขั้นตอนใด ๆ หรือต้องการดำเนินการบางอย่างแตกต่างออกไป
เขียนความเห็น