สารบัญ:
วีดีโอ: สร้างตัวแยกประเภทรูปภาพ OpenCV โดยใช้ Python: 7 ขั้นตอน
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ตัวแยกประเภท Haar ใน python และ opencv ค่อนข้างยุ่งยาก แต่ใช้งานง่าย
เรามักประสบปัญหาในการตรวจจับและจำแนกภาพ ทางออกที่ดีที่สุดคือการสร้างตัวแยกประเภทของคุณเอง ที่นี่เราเรียนรู้ที่จะสร้างตัวแยกประเภทรูปภาพของเราเองด้วยคำสั่งไม่กี่คำสั่งและโปรแกรมหลามที่ยาวแต่เรียบง่าย
การจัดประเภทต้องใช้รูปภาพเชิงลบและบวกจำนวนมาก เนกาทีฟไม่มีวัตถุที่ต้องการในขณะที่ค่าบวกคือวัตถุที่มีวัตถุที่จะตรวจพบ
จำเป็นต้องมีค่าลบและค่าบวกประมาณ 2,000 รายการ โปรแกรม python จะแปลงรูปภาพเป็นระดับสีเทาและมีขนาดที่เหมาะสม เพื่อให้ตัวแยกประเภทใช้เวลาที่เหมาะสมที่สุดในการสร้าง
ขั้นตอนที่ 1: ซอฟต์แวร์ที่จำเป็น
คุณต้องใช้ซอฟต์แวร์ต่อไปนี้เพื่อสร้างตัวแยกประเภทของคุณเอง
1) OpenCV: เวอร์ชันที่ฉันใช้คือ 3.4.2 เวอร์ชันนี้ใช้ได้อย่างง่ายดายบนอินเทอร์เน็ต
2) Python: เวอร์ชันที่ใช้คือ 3.6.2 สามารถดาวน์โหลดได้จาก python.org
นอกจากนี้คุณต้องมีเว็บแคม (แน่นอน)
ขั้นตอนที่ 2: ดาวน์โหลดรูปภาพ
ขั้นตอนแรกคือการถ่ายภาพวัตถุที่จะจำแนกให้ชัดเจน
ขนาดไม่ควรใหญ่มากเพราะต้องใช้เวลามากในการประมวลผลคอมพิวเตอร์ ฉันเอาขนาด 50 คูณ 50
ต่อไปเราจะดาวน์โหลดภาพเชิงลบและบวก คุณสามารถค้นหาได้ทางออนไลน์ แต่เราใช้รหัสหลามเพื่อดาวน์โหลดภาพจาก 'https://image-net.org'
ต่อไปเราจะแปลงภาพเป็นระดับสีเทาและขนาดปกติ สิ่งนี้ถูกนำไปใช้ในรหัส รหัสจะลบรูปภาพที่ผิดพลาดออกด้วย
ถึงตอนนี้ไดเร็กทอรีของคุณควรมีภาพวัตถุเช่น watch5050-j.webp
หากไม่ได้สร้างโฟลเดอร์ข้อมูล ให้ทำด้วยตนเอง
รหัสหลามมีอยู่ในไฟล์.py
ขั้นตอนที่ 3: การสร้างตัวอย่างเชิงบวกใน OpenCV
ตอนนี้ไปที่ไดเร็กทอรี opencv_createsamples และเพิ่มเนื้อหาที่กล่าวถึงข้างต้นทั้งหมด
ในพรอมต์คำสั่งให้ไปที่ C:\opencv342\build\x64\vc14\bin เพื่อค้นหาแอป opencv_createsamples และ opencv_traincascade
ตอนนี้รันคำสั่งต่อไปนี้
opencv_createsamples -img watch5050-j.webp
คำสั่งนี้ใช้สำหรับสร้างตัวอย่างเชิงบวกของวัตถุ 1950 ให้ถูกต้อง และไฟล์คำอธิบาย info.lst ของรูปภาพเชิงบวก คำอธิบายควรเป็นเช่นนี้ 0001_0014_0045_0028_0028-j.webp
ตอนนี้โฟลเดอร์มี
ข้อมูล
โฟลเดอร์รูปภาพ neg
bg.txt ไฟล์
โฟลเดอร์ข้อมูลว่าง
ขั้นตอนที่ 4: การสร้างไฟล์เวกเตอร์ที่เป็นบวก
ตอนนี้สร้างไฟล์เวกเตอร์บวกที่ให้พา ธ ไปยังภาพบวกไฟล์ decsription
ใช้คำสั่งต่อไปนี้
opencv_createsamples -info info/info.lst -num 1950 -w 20 -h 20 -vec positives.vec
ถึงตอนนี้เนื้อหาของไดเร็กทอรีจะต้องเป็นดังนี้:
--neg
----negimages.jpg
--opencv
--ข้อมูล
--ข้อมูล
--positives.vec
--bg.txt
--watch5050-j.webp
ขั้นตอนที่ 5: ฝึกลักษณนาม
ตอนนี้มาฝึก haar cascade และสร้างไฟล์ xml กัน
ใช้คำสั่งต่อไปนี้
opencv_traincascade -data data -vec positives.vec -bg bg.txt -numPos 1800 -numNeg 900 -numStages 10 -w 20 -h 20
ขั้นตอนคือ 10 การเพิ่มขั้นตอนต้องใช้การประมวลผลมากขึ้น แต่ตัวแยกประเภทมีประสิทธิภาพมากกว่า
ตอนนี้ haarcascade ถูกสร้างขึ้น ใช้เวลาประมาณสองชั่วโมงจึงจะเสร็จสมบูรณ์ เปิดโฟลเดอร์ข้อมูลที่นั่น คุณจะพบ cascade.xml ซึ่งเป็นตัวแยกประเภทที่สร้างขึ้น
ขั้นตอนที่ 6: การทดสอบลักษณนาม
โฟลเดอร์ data มีไฟล์ต่างๆ ตามที่แสดงในภาพด้านบน
หลังจากสร้างตัวแยกประเภทแล้วเราจะดูว่าตัวแยกประเภททำงานหรือไม่โดยการรันโปรแกรม object_detect.py อย่าลืมวางไฟล์ classifier.xml ไว้ในไดเร็กทอรีหลาม
ขั้นตอนที่ 7: ขอขอบคุณเป็นพิเศษ
ฉันอยากจะขอบคุณ Senddex ที่เป็นโปรแกรมเมอร์หลามที่ยอดเยี่ยม
เขามีชื่อ youtube ด้วยชื่อที่กล่าวถึงข้างต้นและวิดีโอที่ช่วยฉันได้มากมีลิงค์นี้
รหัสส่วนใหญ่ถูกคัดลอกจาก senddex แม้ว่าจะได้รับความช่วยเหลือมากมายจาก senddex แต่ฉันก็ยังประสบปัญหามากมาย ฉันแค่อยากจะแบ่งปันประสบการณ์ของฉัน
ฉันหวังว่าคำแนะนำนี้จะช่วยคุณได้ !!! คอยติดตามข้อมูลเพิ่มเติม
BR
ตาฮีร์ อุลฮัก