Mündəricat:
- Addım 1: Video
- Addım 2: Avadanlıq
- Addım 3: Kod parçası
- Addım 4: Şəkillər əldə edin
- Addım 5: İstifadə olunan alətlər və dil
- Addım 6: Təlim üçün Veri Küməsinin Hazırlanması
- Addım 7: Sinir Şəbəkəsi
- Addım 8: Sinir Şəbəkəsinin Təlimi
- Addım 9: Sinir Şəbəkəsinin Testi
- Addım 10: Nəticə və Növbəti Bölmə …
- Addım 11: Obyekt Algılama
- Addım 12: Video
- Addım 13: Etiketləmə
- Addım 14: GUI etiketlənməsi
- Addım 15: Kitabxanalara ehtiyac var
- Addım 16: Qalan hüceyrələr
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bir neçə gün əvvəl idman zalında sağ əlimdən zədə aldım. Daha sonra hər dəfə kompüter siçanını istifadə etdiyim zaman, bilək bucağının dik olması səbəbindən çox ağrılara səbəb oldu.
O zaman mənə "hər hansı bir səthi trackpad -ə çevirə bilsək əla olmazdı" dedi və bunun səbəbini bilmirəm, amma nədənsə onu, HER filmini düşündüm, bunu başa düşməyinizə icazə verəcəyəm. çıxmaq Heyecan verici bir fikir idi, amma edə biləcəyimi bilmirdim, sınamaq qərarına gəldim.
Bu məqalə ondan nə çıxdığını əks etdirir.
Başlamazdan əvvəl bir imtinam var-
Bu yazının sonunda heç bir səthi trackpad -ə çevirə bilmədim, amma çox şey öyrənmədim və arsenalına böyük alətlər əlavə etdim. Ümid edirəm bu sizin də başınıza gələcək '
Gəlin başlayaq.
Addım 1: Video
Burada bütün addımları əhatə edən 5 dəqiqəlik kiçik bir video var. Bax.
Addım 2: Avadanlıq
Təxminən 45 sm yüksəklikdə moruq pi kamerası ilə birlikdə moruq pi qururam. Bu, kameranın altında təxminən 25x25 sm monitorinq sahəsi verir.
Raspberry pi və moruq pi kamerası asanlıqla əldə edilə bilər, sadəcə google -a daxil olun və yerli bir mağaza tapmalısınız.
Başsız başınızı işə salmaq üçün bu linkə və ya mənim Raspberry pi pleylistimdən birinə baxın.
Bu quruluşu izlədikdən sonra kameranın izlədiyi sahədə əlin olub olmadığını və harada olduğunu müəyyən edən bir kod parçasına ehtiyacımız var.
Addım 3: Kod parçası
Neyron Şəbəkəsi adlanan bir şeyin maraq dairəsində bir əl olub olmadığına qərar verməyimizə imkan verən bir kod parçası. Qərar vermə qaydalarını təyin etmədiyimiz proqramlaşdırma kateqoriyasına aiddirlər, ancaq neyron şəbəkəsinə qaydaları özünün həll edə biləcəyi qədər məlumat göstəririk.
Bizim vəziyyətimizdə, əlin necə göründüyünü kodlaşdırmaq əvəzinə, əlini ehtiva edən və əlini olmayan moruq pi -dən çəkilmiş neyron şəbəkə şəkillərini göstəririk. Bu mərhələyə sinir şəbəkəsinin təhsili deyilir və istifadə olunan görüntülərə təlim məlumatları deyilir.
Addım 4: Şəkillər əldə edin
Aşağıdakı əmri istifadə edərək moruq pi-yə uzaqdan daxil oldum və bir çox şəkil çəkdim.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o frame%04d.jpg
Əlimlə 80 şəkil və əlimizdə olmayan 80 şəkil çəkdim. Sinir şəbəkəsini düzgün tərbiyə etmək üçün 160 şəkil kifayət deyil, lakin konsepsiyanı sübut etmək üçün kifayət etməlidir.
160 şəkildən əlavə, təlim keçdikdən sonra şəbəkəmizi sınamaq üçün daha 20 şəkil çəkdim.
Veri dəsti hazır olduqdan sonra neyron şəbəkəsi üçün kod yazmağa başladım.
Addım 5: İstifadə olunan alətlər və dil
Sinir şəbəkəmi Keras adlı python dərin öyrənmə kitabxanasına yazdım və kod anaconda naviqatorundan jupyter notebooka yazıldı.
Addım 6: Təlim üçün Veri Küməsinin Hazırlanması
Birincisi (Şəkil #1) PIL, matplotlib, numpy, os və Keras daxil olmaqla bu layihə üçün lazım olan bütün kitabxanaları daxil etdim. Python dəftərinin ikinci hüceyrəsində (Şəkil #2) Veri toplama yollarını təyin edirəm və nümunə sayını çap edirəm. İndi bütün şəkilləri bir qarışıq diziyə yükləməliyik, buna görə də üçüncü hücrədə (Şəkil #2) 82 (əl nümunəsi sayı) +75 (əl olmayan nümunə sayı) yəni 157x100x100x3 olan bir qarışıq sıra yaratdım. 157, sahib olduğum şəkillərin ümumi sayıdır, 100x100 bizim ölçüsünü dəyişmiş görüntü ölçülərimizdir və 3 şəkildəki qırmızı, yaşıl və mavi rəngli təbəqələr üçündür.
Dördüncü və beşinci hücrədə əlləri olan şəkilləri yükləyirik, ardınca numpy massivində əlləri olmayan şəkilləri yükləyirik. Altıncı hücrədə, hər bir dəyəri 255 -ə bölürük, buna görə də dəyər aralığını 0 ilə 1 arasında məhdudlaşdırırıq (Şəkil #3)
Əlavə edilmiş şəkillər kifayət qədər yaxşı olmadıqda üzr istəyirəm. Koda baxmağınız üçün GITHUB anbarına keçid var. Dizin yolu adlarını yolunuzla əvəz etməyi unutmayın:).
Birlikdə hərəkət edir.
Sonra hər bir görüntünü etiketləməliyik, buna görə uzunluğu 157 olan bir ölçülü numpy sıra yaradırıq. İlk 82 giriş 1 -ə, qalan 75 giriş isə ilk 82 şəkil bir sinifdən, qalan sinif digərindən olan 0 ötürücü sinir şəbəkəsinə qurulub. (Şəkil #4)
İndi neyron şəbəkə yaradaq.
Addım 7: Sinir Şəbəkəsi
Doqquzuncu hüceyrədə neyron şəbəkəmizi təyin edirik. Üç təkrarlama qatının ardıcıl olaraq 8, 12 və 16 bükülmə filtrləri olan maxpool qatlarını ehtiva edir. Bunun ardınca iki sıx sinir şəbəkəsinə sahibik. Bu addım üçün iki şəkil əlavə edin. Birincisi, sinir şəbəkəsi yaradan bir kod parçası, ikincisi, çıxış ölçüsü və əməliyyatları ilə birlikdə sinir şəbəkəsinin şəkil təsviridir.
Addım 8: Sinir Şəbəkəsinin Təlimi
Onuncu hüceyrədə sinir şəbəkəsi optimallaşdırıcısını 'adam' və zərər funksiyasını 'binary_crossentropy' olaraq konfiqurasiya edirik. Şəbəkə çəkilərinin necə yenilənməsində böyük rol oynayırlar. Nəhayət, on birinci hüceyrəni işlədikdə, sinir şəbəkəsi məşq etməyə başlayır. Şəbəkə məşq edərkən zərər funksiyasına baxın və azaldığından əmin olun.
Addım 9: Sinir Şəbəkəsinin Testi
Sinir şəbəkəsi öyrədildikdən sonra test məlumat dəstini hazırlamalıyıq. Test dəsti yaratmaq üçün test məlumatları üzrə 3 -cü, 4 -cü, 5 -ci və 6 -cı hüceyrələrdə təlim dəsti hazırlamaq üçün edilən proseduru təkrar edirik. Test dəsti üçün etiket də hazırlayırıq, ancaq bu dəfə proqnozlar almaq və məşq etməmək üçün bu məlumat dəsti üzərində model işə salırıq.
Addım 10: Nəticə və Növbəti Bölmə …
Test dəqiqliyi 88% -ə çatdı, amma bu modeli öyrətmək və sınamaq üçün istifadə olunan məlumat dəsti çox kiçik olduğundan və bu modeli düzgün şəkildə öyrətmək üçün qeyri -adekvat olduğu üçün bunu bir çimdik duzla götürün.
Hər halda, ümid edirəm bu məqalədən zövq aldınız. Bu məşqin arxasındakı niyyətim hələ tam deyil və ikinci hissəyə diqqət yetirin. Bacardığım qədər yükləyəcəyəm.
Növbəti hissədə, əlimizin yerini əllə aşkarlanan bir görüntü ilə izah edəcək başqa bir sinir şəbəkəsi hazırlayacağıq.
Bütün sorğular qəbul olunur.
Kiçik məlumatlarımdan istifadə etmək istəyən varsa şərhlərdə mənə bildirin. Mən bunu əlçatan edəcəyəm.
Oxuduğunuz üçün təşəkkürlər. Tezliklə ikinci hissə ilə görüşəcəyəm, o vaxta qədər niyə neyron şəbəkəsi yaratmırsan və öyrətmirsən.
Düzenle:- Növbəti addımlar ikinci hissəyə aiddir.
Addım 11: Obyekt Algılama
Əvvəlki addımlarda, test görüntüsünün əlində olub olmadığını bizə bildirən bir NN yaratdıq. Yaxşı, sonra nə? NN, şəkli əl kimi təsnif edərsə, əlin yerini bilmək istərdik. Buna kompüter görmə ədəbiyyatında obyekt aşkarlama deyilir. Gəlin NN -ni eyni şəkildə işlədən məşq edək.
Addım 12: Video
Qalan bütün addımları izah edən 3 dəqiqəlik video. Bax.
Addım 13: Etiketləmə
Bir sinir şəbəkəsinin əlin yerini çıxarmasını istəyirsinizsə, hər bir görüntünün əllə və ya əlsiz olaraq etiketləndiyi əvvəlki sinir şəbəkəsindən fərqli olaraq, bu şəkildə öyrətməliyik. Bu dəfə əl ilə olan bütün şəkillər, həmin görüntüdə ətrafdakı sərhəd qutusunun diaqonal koordinatlarına uyğun dörd etiketə sahib olacaq.
CSV faylının əlavə edilmiş şəkli hər bir şəkil üçün etiketdən ibarətdir. Unutmayın ki, koordinatlar görüntü ölçüsü ilə normallaşdırılır, yəni yuxarı X koordinatı 640 piksel enində 320 -ci pikseldirsə, onu 0,5 olaraq etiketləyəcəyik.
Addım 14: GUI etiketlənməsi
82 görüntünün hamısını necə etiketləyə bildiyimi düşünürsünüz, bu işdə mənə kömək edən pythonda bir GUI yazdım. Şəkil GUI -yə yükləndikdən sonra. Əlimizdəki ehtimal olunan məhdudlaşdırma qutusunun yuxarı koordinatında sol klik və aşağı koordinatında sağ vurun. Bu koordinatlar sonrakı faylı yükləmək üçün növbəti düyməni basdığım bir fayla yazılır. Bütün 82 qatar və 4 test şəkli üçün bu proseduru təkrarladım. Etiketlər hazır olduqdan sonra məşq zamanı idi.
Addım 15: Kitabxanalara ehtiyac var
Əvvəlcə bütün lazımi kitabxanaları yükləməliyik. Hansı daxildir
- Şəkil manipulyasiyası üçün PIL,
- plan qurmaq üçün matplotlib,
- matris əməliyyat üçün numpy,
- Əməliyyat sistemindən asılı funksiyalar üçün os və
- sinir şəbəkəsi üçün keras.
Addım 16: Qalan hüceyrələr
2 -ci, 3 -cü, 4 -cü və 5 -ci hüceyrələrdə şəkilləri numpy massivinə yükləyirik və etiket kimi çıxış etmək üçün csv faylından dörd ölçülü bir sıra yaradırıq. 6 nömrəli hüceyrədə neyron şəbəkəmizi yaradırıq. Arxitekturası 1 deyil, 4 olan çıxış qat ölçüsü istisna olmaqla, təsnifat üçün istifadə olunan sinir şəbəkəsi ilə eynidir. 8 nömrəli hüceyrədə, sinir şəbəkəmizin təliminə başlayırıq, bir dəfə təlim keçdikdən sonra bu modeli test dəsti üzərində işlədim, məhdudlaşdırıcı qutunun üst -üstə qoyulan koordinatları ilə bağlı proqnozlar almaq üçün olduqca dəqiq görünürdülər.
Oxuduğunuz üçün təşəkkürlər.