Мазмұны:

Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім: 16 қадам (суреттермен)
Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім: 16 қадам (суреттермен)

Бейне: Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім: 16 қадам (суреттермен)

Бейне: Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім: 16 қадам (суреттермен)
Бейне: Вебинар №2. Andy Ruina про координацию роботов и технологии движения. Beyond Robotics 2024, Қараша
Anonim
Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім
Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім
Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім
Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім
Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім
Бұл Қол ма? (Raspberry Pi камерасы + нейрондық желі) 1/2 бөлім

Бірнеше күн бұрын мен жаттығу залында оң қолымнан жарақат алдым. Содан кейін мен компьютерлік тінтуірді қолданған сайын, бұл білектің тік бұрышынан қатты ауырсынуды тудырды.

Дәл сол кезде маған «егер біз кез келген бетті сенсорлық тақтаға айналдырсақ, жақсы болмас еді» және мен неге екенін білмеймін, бірақ мен оны қандай да бір себептермен ойладым, HER фильмі шығу Бұл қызықты ой болды, бірақ мен мұны істей алатынымды білмедім, мен оны сынап көруді шештім.

Бұл мақала одан не шыққанын көрсетеді.

Біз бастамас бұрын менде жауапкершіліктен бас тарту туралы ескерту бар

«Мақаланың соңында мен ешқандай бетті сенсорлық тақтаға айналдыра алмадым, бірақ мен көп нәрсені білмедім және арсеналға үлкен құралдарды қостым. Бұл сізде де болады деп үміттенемін '

Бастайық.

1 -қадам: бейне

Image
Image

Мұнда барлық қадамдарды қамтитын шағын 5 минуттық бейне. Қара.

2 -қадам: Жабдық

Аппараттық құрал
Аппараттық құрал

Мен таңқурай пиін таңқурай pi камерасымен бірге шамамен 45 см биіктікте орнатамын. Бұл бізге камераның астында шамамен 25x25 см бақылау аймағын береді.

Raspberry pi және таңқурай pi камералары оңай қол жетімді, оны google -ге жіберіңіз, сонда сіз жергілікті дүкен таба аласыз.

Бұл сілтемені немесе менің Raspberry pi ойнату тізімімді қараңыз, сіздің бассыз пиіңізді іске қосу үшін.

Осы орнатудан кейін бізге камера бақылайтын аймақта қол бар -жоғын шешетін код керек.

3 -қадам: Код бөлігі

Код бөлігі
Код бөлігі
Код бөлігі
Код бөлігі

Нейрондық желі деп аталатын нәрсені қолдана алатынын анықтауға мүмкіндік беретін код бөлігі. Олар бағдарламалау санатына жатады, онда біз шешім қабылдау үшін ережелерді анықтамаймыз, бірақ біз нейрондық желіде ережелерді өздігінен анықтайтын жеткілікті деректерді көрсетеміз.

Біздің жағдайда, қолдың қандай болатынын кодтаудың орнына, бізде таңқурайдан түсірілген нейрондық желілік суреттер көрсетіледі, оларда қолы бар және қолы жоқ. Бұл кезең нейрондық желіні оқыту деп аталады, ал қолданылған суреттер оқу жиынтығы деп аталады.

4 -қадам: суреттерді алу

Суреттер алу
Суреттер алу

Мен таңқурай пи-ге қашықтан кірдім және келесі пәрменді пайдаланып көптеген суреттерді түсірдім.

sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o кадр%04d.jpg

Мен қолмен 80 және қолында жоқ 80 кескін түсірдім. Нейрондық желіні дұрыс үйрету үшін 160 сурет жеткіліксіз, бірақ тұжырымдаманы дәлелдеу үшін жеткілікті болуы керек.

160 суреттерден басқа, мен үйренгеннен кейін біздің желіні тексеру үшін тағы 20 сурет түсірдім.

Деректер жиынтығы дайын болғаннан кейін мен нейрондық желіге код жаза бастадым.

5 -қадам: Қолданылатын құралдар мен тіл

Қолданылатын құралдар мен тіл
Қолданылатын құралдар мен тіл
Қолданылатын құралдар мен тіл
Қолданылатын құралдар мен тіл

Мен нейрондық желімді Python терең оқу кітапханасына Keras деп жаздым, ал код jupyter блокнотына анаконда навигаторынан жазылған.

6 -қадам: Деректер жиынтығын тренингке дайындау

Деректер жиынтығын тренингке дайындау
Деректер жиынтығын тренингке дайындау
Деректер жиынтығын тренингке дайындау
Деректер жиынтығын тренингке дайындау
Деректер жиынтығын тренингке дайындау
Деректер жиынтығын тренингке дайындау
Деректер жиынтығын тренингке дайындау
Деректер жиынтығын тренингке дайындау

Біріншіден (№1 сурет) Мен бұл жобаға қажет барлық кітапханаларды қостым, оған PIL, matplotlib, numpy, os және Keras кіреді. Питон жазу кітапшасының екінші ұяшығында (№2 сурет) мен деректер жиынының жолдарын анықтаймын және үлгі санын есепте шығарамын. Енді біз барлық кескіндерді массивтік массивке жүктеуіміз керек, сондықтан үшінші ұяшықта (№2 сурет) Мен 82 (қолмен алынған үлгі саны) +75 (қолмен емес үлгі саны), яғни 157x100x100x3 болатын массивті массив құрдым. 157 - менде бар суреттердің жалпы саны, 100x100 - бұл біздің өлшемді кескін өлшемі, 3 - суреттегі қызыл, жасыл және көк түстерге арналған.

Төртінші және бесінші ұяшыққа біз қолдары бар суреттерді жүктейміз, содан кейін numpy массивінде қолдары жоқ суреттерді жүктейміз. Алтыншы ұяшықта біз әр мәнді 255 -ке бөлеміз, сондықтан 0 -ден 1 -ге дейінгі мәнді шектейміз (Сурет #3)

Тіркелген суреттер жеткіліксіз болса, кешіріңіз. Бұл кодты қарау үшін GITHUB репозиторийіне сілтеме. Каталог жолдарының атауын сіздің жолыңызбен алмастыруды ұмытпаңыз:).

Бірге жүру.

Содан кейін біз әр суретті белгілеуіміз керек, сондықтан біз ұзындығы 157 болатын бір өлшемді сансыз массив жасаймыз. Алғашқы 82 жазбалар 1 -ге, ал қалған 75 жазбалар 0 -ге жеткізетін нейрондық желіге орнатылады, оларда бірінші 82 кескін бір сыныптан, ал қалған сынып басқа. (Сурет #4)

Енді нейрондық желі құрайық.

7 -қадам: Нейрондық желі

Нейрондық желі
Нейрондық желі
Нейрондық желі
Нейрондық желі

Тоғызыншы ұяшықта біз нейрондық желіні анықтаймыз. Онда конвульсиялық қабаттың үш қайталануы бар, содан кейін сәйкесінше 8, 12 және 16 конвульсиялық сүзгілері бар maxpool қабаттары бар. Осыдан кейін бізде екі тығыз нейрондық тор бар. Бұл қадамға екі суретті тіркеңіз. Біріншісі - нейрондық желіні құратын код, ал екіншісі - нейрондық желінің бейнеленген өлшемі мен операциялары аннотацияланған.

8 -қадам: Нейрондық желіні оқыту

Нейрондық желіні оқыту
Нейрондық желіні оқыту

Оныншы ұяшықта біз нейрондық желі оптимизаторын «адам» күйіне, ал жоғалту функциясын «екілік_кроссентропияға» теңшейміз. Олар желінің салмағын қалай жаңартуда маңызды рөл атқарады. Ақырында, біз он бірінші ұяшықты іске қосқанда, нейрондық желі жаттығуды бастайды. Желі жаттығу кезінде жоғалту функциясына назар аударыңыз және оның төмендегеніне көз жеткізіңіз.

9 -қадам: Нейрондық желіні тестілеу

Нейрондық желіні тестілеу
Нейрондық желіні тестілеу

Нейрондық желіні үйреткеннен кейін, біз тестілеу деректер жинағын дайындауымыз керек. Біз тест жиынтығын құру үшін тест мәліметтері бойынша 3, 4, 5 және 6 ұяшықтардағы жаттығулар жиынтығын дайындау процедурасын қайталаймыз. Біз сондай -ақ тест жинағына жапсырманы дайындаймыз, бірақ бұл жолы біз бұл деректер жиынтығында болжамды алу үшін және жаттығу үшін емес, модельді іске қосамыз.

10 -қадам: Нәтиже және келесі бөлім …

Нәтиже және келесі бөлім …
Нәтиже және келесі бөлім …

Мен тестілеу дәлдігін 88% алдым, бірақ оны бір шымшым тұзбен аламын, себебі бұл модельді үйрету және тестілеу үшін пайдаланылатын деректер жиынтығы өте кішкентай және бұл модельді дұрыс үйрету үшін жеткіліксіз.

Қалай болғанда да, сізге бұл мақала ұнады деп сенемін. Бұл жаттығудың мақсаты менің әлі аяқталмаған және екінші бөлімге назар аударыңыз. Мен оны мүмкіндігінше тезірек жүктеймін.

Келесі бөлімде біз басқа нейрондық желіні үйрететін боламыз, ол бізге қолмен анықталған суретте қолдың орналасқан жерін көрсетеді.

Барлық сұраулар қабылданады.

Егер менің кішкентай деректер жиынтығымды пайдаланғысы келетіндер болса, түсініктемелерде маған хабарлаңыз. Мен оны қолжетімді етемін.

Оқығаныңыз үшін рахмет. Мен сізді жақында екінші бөліммен көремін, оған дейін сіз нейрондық желіні құрмайсыз ба?

Өңдеу:- Келесі қадамдар екінші бөлімге арналған.

11 -қадам: Объектілерді анықтау

Объектілерді анықтау
Объектілерді анықтау

Алдыңғы қадамдарда біз тест суретінде қолдың бар -жоғын көрсететін NN құрдық. Ал, енді не? Егер NN кескінді қолында деп жіктесе, біз қолдың орналасқан жерін білгіміз келеді. Бұл компьютерлік көру әдебиетінде объектілерді анықтау деп аталады. Сонымен, NN -ді дәл осылай дайындайық.

12 -қадам: бейне

Image
Image

Барлық қалған қадамдарды түсіндіретін 3 минуттық бейне. Қара.

13 -қадам: Таңбалау

Таңбалау
Таңбалау
Таңбалау
Таңбалау
Таңбалау
Таңбалау

Егер сіз нейрондық желінің қолдың орналасқан жерін шығаруын қаласаңыз, біз оны дәл осылай үйретуіміз керек, яғни бұрынғы нейрондық желіден айырмашылығы, онда әр сурет қолмен және қолсыз деп белгіленген. Бұл жолы қолмен түсірілген барлық суреттерде сол суреттің айналасындағы қоршаудың диагональды координаталарына сәйкес келетін төрт белгі болады.

Қосылған csv файлының суреті әр суреттің белгісін қамтиды. Назар аударыңыз, координаттар кескін өлшемімен нормаланған, яғни егер жоғарғы X координаты 640 пиксель ені 320 -пиксельде болса, біз оны 0,5 деп белгілейміз.

14 -қадам: GUI таңбалау

GUI таңбалау
GUI таңбалау
GUI таңбалау
GUI таңбалау
GUI таңбалау
GUI таңбалау
GUI таңбалау
GUI таңбалау

Сіз 82 суреттің барлығын қалай белгілегенімді білгіңіз келуі мүмкін, мен бұл тапсырманы орындауға көмектесетін питонда GUI жаздым. Кескін GUI -ге жүктелгеннен кейін. Мен жоғарғы координатаның сол жақ батырмасын, ал төменгі координатында ықтимал шектеу терезесінің оң жақ батырмасын шертемін. Содан кейін бұл координаттар келесі суретті жүктеу үшін келесі батырманы басатын файлға жазылады. Мен бұл процедураны барлық 82 пойыз бен 4 сынақ суреті үшін қайталадым. Жапсырмалар дайын болғаннан кейін жаттығу уақыты келді.

15 -қадам: Кітапханалар қажет

Кітапханалар қажет
Кітапханалар қажет
Кітапханалар қажет
Кітапханалар қажет
Кітапханалар қажет
Кітапханалар қажет

Алдымен біз барлық қажетті кітапханаларды жүктеуіміз керек. Оның ішінде

  • PIL суретті өңдеуге арналған
  • сюжетке арналған matplotlib,
  • матрицалық жұмыс үшін numpy,
  • os операциялық жүйеге тәуелді функцияларға арналған және
  • нейрондық желіге арналған керас.

16 -қадам: Қалған жасушалар

Қалған жасушалар
Қалған жасушалар
Қалған жасушалар
Қалған жасушалар
Қалған жасушалар
Қалған жасушалар
Қалған жасушалар
Қалған жасушалар

2 -ші, 3 -ші, 4 -ші және 5 -ші ұяшықтарда біз суреттерді numpy массивіне жүктейміз және csv файлынан жапсырма ретінде әрекет ету үшін төрт өлшемді массив жасаймыз. №6 ұяшықта біз нейрондық желіні құрамыз. Оның архитектурасы жіктеу үшін қолданылатын нейрондық желіге ұқсас, шығыс деңгейінің өлшемі 4 емес, 1 емес. Тағы бір айырмашылық жоғалту функциясының орташа квадраттық қателігі болып табылады. №8 ұяшықта біз нейрондық желіні оқытуды бастаймыз, мен бұл модельді тест жиынтығында өткіздім, олар қоршаудың координаттарын жабу туралы болжамды алу үшін тест жиынтығында жүгірді, олар өте дәл көрінді.

Оқығаныңыз үшін рахмет.

Ұсынылған: