สารบัญ:

สร้างตัวแยกประเภทรูปภาพ OpenCV โดยใช้ Python: 7 ขั้นตอน
สร้างตัวแยกประเภทรูปภาพ OpenCV โดยใช้ Python: 7 ขั้นตอน

วีดีโอ: สร้างตัวแยกประเภทรูปภาพ OpenCV โดยใช้ Python: 7 ขั้นตอน

วีดีโอ: สร้างตัวแยกประเภทรูปภาพ OpenCV โดยใช้ Python: 7 ขั้นตอน
วีดีโอ: OpenCV & Python | Computer Vision สำหรับผู้เริ่มต้น [FULL COURSE] 2024, กรกฎาคม
Anonim
สร้างตัวแยกประเภทรูปภาพ OpenCV โดยใช้ Python
สร้างตัวแยกประเภทรูปภาพ OpenCV โดยใช้ Python

ตัวแยกประเภท 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
การสร้างตัวอย่างเชิงบวกใน OpenCV
การสร้างตัวอย่างเชิงบวกใน OpenCV
การสร้างตัวอย่างเชิงบวกใน 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

ตาฮีร์ อุลฮัก

แนะนำ: