Mundarija:
Video: Python yordamida OpenCV tasvir tasniflagichlarini yarating: 7 qadam
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Python va opencv -da Haar klassifikatorlari juda murakkab, ammo oson ish.
Biz ko'pincha tasvirni aniqlash va tasniflashda muammolarga duch kelamiz. eng yaxshi echim - bu o'z tasniflagichingizni yaratish. Bu erda biz bir nechta buyruqlar va uzoq, lekin oddiy python dasturlari yordamida o'z rasm tasniflagichlarimizni yaratishni o'rganamiz
Tasniflash uchun ko'p miqdordagi salbiy va ijobiy tasvirlar kerak, negativlar kerakli ob'ektni o'z ichiga olmaydi, musbatlar esa aniqlanadigan ob'ektni o'z ichiga oladi.
2000 ga yaqin salbiy va ijobiy talab qilinadi. Python dasturi tasvirni kulrang va mos hajmga o'zgartiradi, shuning uchun tasniflagichlar yaratish uchun eng maqbul vaqtni oladi.
1 -qadam: dasturiy ta'minot talab qilinadi
O'zingizning tasniflagichingizni yaratish uchun sizga quyidagi dasturlar kerak bo'ladi
1) OpenCV: men ishlatgan versiya 3.4.2. versiya Internetda osongina mavjud.
2) Python: 3.6.2 versiyasi ishlatiladi. Python.org saytidan yuklab olish mumkin
Bundan tashqari, sizga veb -kamera kerak (albatta).
2 -qadam: Rasmlarni yuklab olish
Birinchi qadam - tasniflanadigan ob'ektning aniq rasmini olish.
Hajmi juda katta bo'lmasligi kerak, chunki kompyuterni qayta ishlash uchun ko'proq vaqt kerak bo'ladi. Men 50 dan 50 gacha o'lchamni oldim.
Keyin biz salbiy va ijobiy rasmlarni yuklab olamiz. Siz ularni Internetda topishingiz mumkin. Lekin biz "https://image-net.org" saytidan rasmlarni yuklab olish uchun piton kodidan foydalanamiz.
Keyin biz tasvirlarni kulrang va normal o'lchamlarga o'tkazamiz. Bu kodda alohida amalga oshiriladi. Kod, shuningdek, har qanday noto'g'ri tasvirni olib tashlaydi
Hozircha sizning katalogingizda ob'ekt tasviri bo'lishi kerak, masalan watch5050-j.webp
Agar ma'lumotlar papkasi yaratilmagan bo'lsa, uni qo'lda bajaring
Python kodi.py faylida berilgan
3 -qadam: OpenCV -da ijobiy namunalar yaratish
Endi opencv_createsamples katalogiga o'ting va yuqorida ko'rsatilgan tarkibni qo'shing
buyruq satrida opencv_createsamples va opencv_traincascade ilovalarini topish uchun C: / opencv342 / build / x64 / vc14 / bin ga o'ting.
Endi quyidagi buyruqlarni bajaring
opencv_createsamples -img watch5050-j.webp
Bu buyruq 1950 ob'ektining ijobiy namunalarini yaratish uchun, aniqrog'i va tavsif fayli info.lst ijobiy tasvirlardan shunday bo'lishi kerak 0001_0014_0045_0028_0028-j.webp
Endi papka o'z ichiga oladi
ma'lumot
neg rasmlar papkasi
bg.txt fayli
bo'sh ma'lumotlar papkasi
4 -qadam: Ijobiy vektorli faylni yaratish
Endi ijobiy tasvirlarga dekription faylga yo'lni ta'minlaydigan musbat vektorli faylni yarating
Quyidagi buyruqdan foydalaning
opencv_createsamples -info info/info.lst -raqami 1950 -w 20 -h 20 -vec musbats.vec
Hozircha katalog mazmuni quyidagicha bo'lishi kerak:
-yo'q
---- negimages.jpg
-ochish
-axborot
-ma'lumotlar
-ijobiy.vec
--bg.txt
--watch5050-j.webp
5 -qadam: klassifikatorni o'qitish
Keling, haar kaskadini o'rgatamiz va xml faylini yaratamiz
Quyidagi buyruqdan foydalaning
opencv_traincascade -data ma'lumotlari -vec positives.vec -bg bg.txt -numPos 1800 -numNeg 900 -numStages 10 -w 20 -h 20
Bosqichlar 10 bosqichlarni ko'paytirish ko'proq ishlov berishni talab qiladi, lekin tasniflagich ancha samarali.
Endi haarcascade yaratildi Ma'lumotlar papkasini ochish uchun taxminan ikki soat vaqt ketadi, u erda kaskad.xml topiladi Bu yaratilgan klassifikator.
6 -qadam: Tasniflagichni sinovdan o'tkazish
Ma'lumotlar papkasi yuqoridagi rasmda ko'rsatilgan fayllarni o'z ichiga oladi.
Tasniflagich yaratilgandan so'ng, klassifikator ishlayaptimi yoki yo'qligini object_detect.py dasturini ishga tushirish orqali ko'ramiz. Classifier.xml faylini python katalogiga joylashtirishni unutmang.
7 -qadam: alohida rahmat
Men buyuk piton dasturchisi bo'lgan Sentdexga minnatdorchilik bildirmoqchiman.
Uning yuqorida ko'rsatilgan ismli youtube nomi bor va menga ko'p yordam bergan videoda bu havola bor
Kodning ko'p qismi sentdex -dan ko'chirilgan. Sentdexdan ko'p yordam olgan bo'lsam -da, men hali ko'p muammolarga duch keldim. Men faqat o'z tajribam bilan bo'lishmoqchi edim.
Umid qilamanki, bu sizga yordam berdi !!! Ko'proq ma'lumotni kuzatishda davom eting.
BR
Tohir Ul Haq