Агуулгын хүснэгт:

Энэ гар уу? (Raspberry Pi камер + мэдрэлийн сүлжээ) 1/2 хэсэг: 16 алхам (зурагтай)
Энэ гар уу? (Raspberry Pi камер + мэдрэлийн сүлжээ) 1/2 хэсэг: 16 алхам (зурагтай)
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 хэсэг

Хэд хоногийн өмнө би биеийн тамирын зааланд баруун гарын бугуйгаа гэмтээсэн. Дараа нь би компьютерийн хулганыг ашиглах бүрт бугуйны өнцөг огцом өвдсөнөөс болж маш их өвддөг.

Тэр үед энэ нь "хэрэв бид ямар ч гадаргууг трекпад болгон хувиргаж чадвал тийм ч сайн биш байх болно" гэж хэлсэн бөгөөд яагаад гэдгийг нь мэдэхгүй ч яагаад ч юм би түүний тухай бодож байсан ЭНЭ кино, би танд үүнийг ойлгуулахыг зөвшөөрөх болно. гадагш Энэ бол сэтгэл хөдөлгөм бодол байсан, гэхдээ би чадах эсэхээ мэдэхгүй байсан тул туршиж үзэхээр шийдлээ.

Энэ нийтлэл нь үүнээс юу гарч ирснийг авч үзэх болно.

Эхлэхээсээ өмнө надад татгалзах зүйл байна.

'Энэ нийтлэлийн төгсгөлд би ямар ч гадаргууг trackpad болгон хувиргаж чадаагүй, гэхдээ би тийм ч сайн сураагүй, арсеналдаа том багаж хэрэгсэл нэмээгүй. Энэ нь танд бас тохиолдоно гэж найдаж байна '

Эхэлцгээе.

Алхам 1: Видео

Image
Image

Бүх алхамуудыг багтаасан жижигхэн 5 минутын видео бичлэг энд байна. Үүнийг хар даа.

Алхам 2: Техник хангамж

Техник хангамж
Техник хангамж

Би 45 см өндөрт бөөрөлзгөнө pi камер, бөөрөлзгөнө pi камерыг тохируулдаг. Энэ нь камерын доор ойролцоогоор 25х25 см хэмжээтэй хяналтын талбайг бидэнд өгдөг.

Бөөрөлзгөнө pi болон бөөрөлзгөнө пи камерыг хялбархан авах боломжтой, үүнийг зүгээр л google -ээр хий, та дотоодын дэлгүүрээ олох боломжтой байх ёстой.

Толгойгүй пи -ээ ажиллуулахын тулд энэ линк эсвэл миний Raspberry pi тоглуулах жагсаалтын нэгийг үзээрэй.

Энэхүү тохиргоог хийсний дараа камер хянаж буй хэсэгт гар байгаа эсэхийг, хэрэв байгаа бол энэ нь хаана байгааг шийдэх код хэрэгтэй болно.

Алхам 3: Кодын хэсэг

Кодын хэсэг
Кодын хэсэг
Кодын хэсэг
Кодын хэсэг

Сонирхолтой талбар байгаа эсэхийг шийдэх боломжийг олгодог кодын хэсэг нь Мэдрэлийн сүлжээ гэж нэрлэгддэг зүйлийг ашигладаг. Тэд програмчлалын ангилалд багтдаг бөгөөд үүнд бид шийдвэр гаргах дүрмийг тодорхойлдоггүй, гэхдээ бид мэдрэлийн сүлжээнд дүрмийг өөрөө тодорхойлдог хангалттай өгөгдлийг харуулдаг.

Манай тохиолдолд гар ямар харагдахыг кодлохын оронд гар агуулсан бөөрөлзгөнө pi -ээс авсан мэдрэлийн сүлжээний зургийг харуулдаг. Энэ үе шатыг мэдрэлийн сүлжээний сургалт гэж нэрлэдэг бөгөөд ашигласан зургийг сургалтын мэдээллийн сан гэж нэрлэдэг.

Алхам 4: Зураг авах

Зураг авах
Зураг авах

Би бөөрөлзгөнө pi руу алсаас нэвтэрч, дараах тушаалыг ашиглан олон тооны зураг авсан.

sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o frame%04d.jpg

Би гараараа 80, гар агуулаагүй 80 зураг авсан. 160 зураг нь мэдрэлийн сүлжээг зөв сургахад хангалтгүй боловч үзэл баримтлалыг батлахад хангалттай байх ёстой.

Манай сүлжээг сургасны дараа туршиж үзэхийн тулд 160 зурагнаас гадна би 20 зураг нэмж авсан.

Өгөгдлийн сан бэлэн болмогц би мэдрэлийн сүлжээнд код бичиж эхлэв.

Алхам 5: Хэрэглэсэн хэрэгсэл, хэл

Хэрэглэсэн хэрэгсэл ба хэл
Хэрэглэсэн хэрэгсэл ба хэл
Хэрэглэсэн хэрэгсэл ба хэл
Хэрэглэсэн хэрэгсэл ба хэл

Би мэдрэлийн сүлжээгээ Python гүнзгийрүүлсэн сургалтын номын санд Keras гэж бичсэн бөгөөд кодыг jupyter дэвтэр дээр anaconda navigator -аас бичсэн болно.

Алхам 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: Мэдрэлийн сүлжээг сургах

Мэдрэлийн сүлжээг сургах
Мэдрэлийн сүлжээг сургах

Арав дахь нүдэнд бид мэдрэлийн сүлжээний оновчлогчийг 'adam' болгож, алдагдлын функцийг 'binary_crossentropy' болгож тохируулдаг. Тэд сүлжээний жинг хэрхэн шинэчлэхэд гол үүрэг гүйцэтгэдэг. Эцэст нь бид арваннэгдүгээр эсийг ажиллуулахад мэдрэлийн сүлжээ сурч эхэлдэг. Сүлжээг сургах явцад алдагдлын функцийг анхаарч, буурч байгаа эсэхийг шалгаарай.

Алхам 9: Мэдрэлийн сүлжээг турших

Мэдрэлийн сүлжээг туршиж байна
Мэдрэлийн сүлжээг туршиж байна

Мэдрэлийн сүлжээг сургасны дараа бид туршилтын өгөгдлийн багцыг бэлтгэх хэрэгтэй. Туршилтын багцыг бий болгохын тулд тестийн өгөгдөл дээр 3, 4, 5, 6 -р нүдэнд бэлтгэх сургалтын процедурыг давтана. Бид мөн туршилтын багцад зориулж шошго бэлддэг боловч энэ удаад бид эдгээр өгөгдлийн багц дээр загварыг ажиллуулж, урьдчилан таамаглахын тулд сургахгүй байна.

Алхам 10: Үр дүн ба дараагийн хэсэг

Үр дүн ба дараагийн хэсэг …
Үр дүн ба дараагийн хэсэг …

Би туршилтын нарийвчлалыг 88% авсан боловч үүнийг бага зэрэг давстай хамт аваарай, учир нь энэ загварыг сургах, туршихад ашигладаг өгөгдлийн сан нь маш жижиг бөгөөд энэ загварыг зөв сургахад хангалтгүй юм.

Ямар ч байсан танд энэ нийтлэл таалагдсан гэж найдаж байна. Энэ дасгалын цаана миний зорилго хараахан дуусаагүй байгаа бөгөөд 2 -р хэсгийг анхаарч үзээрэй. Би үүнийг аль болох хурдан байршуулах болно.

Дараагийн хэсэгт бид гар байршлыг гараар илрүүлсэн зургаар бидэнд хэлэх өөр нэг мэдрэлийн сүлжээг сургах болно.

Бүх асуулгад тавтай морилно уу.

Хэрэв хэн нэгэн миний өчүүхэн жижиг мэдээллийн санг ашиглах сонирхолтой байгаа бол энэ талаар сэтгэгдэл дээр надад мэдэгдээрэй. Би үүнийг боломжтой болгоно.

Уншсанд баярлалаа. Би удахгүй хоёрдахь хэсэгтэй уулзах болно, тэр хүртэл та яагаад мэдрэлийн сүлжээг бий болгож, сургаж болохгүй гэж.

Засварлах:- Дараагийн алхамууд нь хоёр дахь хэсэгт зориулагдсан болно.

Алхам 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 зургийг шошголж чадсан юм бол гэж гайхаж байж магадгүй, би python дээр GUI бичсэн нь надад энэ ажилд тусалсан юм. Зургийг GUI дээр ачаалсны дараа. Би дээд координат дээр зүүн товчлуурыг дарж, гарны эргэн тойронд байгаа хязгаарлагдмал хайрцгийн доод координат дээр дарна уу. Эдгээр координатуудыг дараа нь файл дээр бичээд дараагийн зургийг ачаалахын тулд дараагийн товчлуурыг дарна уу. Би энэ процедурыг бүх 82 галт тэрэг, 4 туршилтын зураг дээр давтсан. Шошго бэлэн болмогц сургалтын цаг болжээ.

Алхам 15: Номын сан хэрэгтэй

Номын сан хэрэгтэй
Номын сан хэрэгтэй
Номын сан хэрэгтэй
Номын сан хэрэгтэй
Номын сан хэрэгтэй
Номын сан хэрэгтэй

Эхлээд бид шаардлагатай бүх номын санг ачаалах хэрэгтэй. Үүнд багтсан болно

  • Зураг удирдах PIL,
  • матплотлиб хийх,
  • матрицын үйл ажиллагаанд зориулсан numpy,
  • OS нь үйлдлийн системээс хамааралтай функц болон
  • мэдрэлийн сүлжээнд зориулсан керас.

Алхам 16: Үлдсэн эсүүд

Үлдсэн эсүүд
Үлдсэн эсүүд
Үлдсэн эсүүд
Үлдсэн эсүүд
Үлдсэн эсүүд
Үлдсэн эсүүд
Үлдсэн эсүүд
Үлдсэн эсүүд

2, 3, 4, 5 -р нүдэнд бид зургуудыг numpy массив дээр ачаалж, csv файлаас дөрвөн хэмжээст массив үүсгэж шошго болно. 6 -р нүдэнд бид мэдрэлийн сүлжээгээ үүсгэдэг. Түүний архитектур нь гаралтын давхаргын хэмжээсийг 4 -ээс бусад ангилалд ашигладаг мэдрэлийн сүлжээтэй ижил байдаг. 1 биш. Өөр нэг ялгаа нь алдагдлын функц юм. 8 -р нүдэнд бид мэдрэлийн сүлжээгээ сургаж эхэлсний дараа би энэ загварыг туршилтын багц дээр ажиллуулж, хязгаарлагдмал хайрцгийн координатыг давхцуулах талаар урьдчилан таамаглах боломжтой болсон.

Уншсанд баярлалаа.

Зөвлөмж болгож буй: