Orodha ya maudhui:

Mkasi wa Karatasi ya Mwamba AI: Hatua 11
Mkasi wa Karatasi ya Mwamba AI: Hatua 11

Video: Mkasi wa Karatasi ya Mwamba AI: Hatua 11

Video: Mkasi wa Karatasi ya Mwamba AI: Hatua 11
Video: Cheki jama alivyo paa na ndege ya kichawi utashangaa 2024, Novemba
Anonim
Mkasi wa Karatasi ya Mwamba AI
Mkasi wa Karatasi ya Mwamba AI

Umewahi kujisikia kuchoka peke yake? Wacha tucheze mwamba, karatasi, na mkasi dhidi ya mfumo wa maingiliano unaotumiwa na akili.

Hatua ya 1: Vitu vinavyotumiwa katika Mradi huu

Vipengele vya vifaa

  • Raspberry Pi 3 Mfano B + × 1
  • Moduli ya Kamera ya Raspberry Pi V2 × 1
  • SG90 Micro-servo motor × 1

Programu za programu

  • Raspberry Pi Raspbian
  • OpenCV
  • TensorFlow

Hatua ya 2: Wazo?

Image
Image

Baada ya kufanya kazi kwenye miradi anuwai kwenye vikoa tofauti, nilipanga kufanya mradi wa kufurahisha, na niliamua kutengeneza mchezo wa mwamba-mkasi:)

Katika mradi huu, tutafanya mchezo wa kuingiliana na kucheza dhidi ya kompyuta ambayo inaendeshwa na AI kufanya maamuzi. AI hutumia Kamera iliyounganishwa na Raspberry Pi kutambua kile kinachotembea mtumiaji kwa mkono, kuainisha katika kitengo bora (lebo) mwamba, karatasi, au mkasi. Mara tu kompyuta inapohamia, motor ya stepper iliyounganishwa na Raspberry Pi inaelekeza kwa mwelekeo kulingana na hoja yake.

Kanuni ambazo zinapaswa kuzingatiwa kwa mchezo huu:

  • Mwamba unakuna mkasi
  • Karatasi inashughulikia mwamba
  • Mikasi hukata karatasi

Mshindi ataamuliwa kulingana na hali tatu hapo juu. Wacha tuone onyesho la haraka la mradi hapa.

Hatua ya 3: Kuanza?

Kuanza ?
Kuanza ?
Kuanza ?
Kuanza ?

Pi ya Raspberry

Nimetumia Raspberry Pi 3 Model B + ambayo ina nyongeza nzuri na ina Nguvu zaidi kuliko Raspberry Pi 3 Model B.

Raspberry Pi 3 B + imejumuishwa na processor ya 1.4GHz 64-bit quad-core processor, LAN-band wireless LAN, Bluetooth 4.2 / BLE, Ethernet haraka, na Power-over-Ethernet msaada (na PoE HAT tofauti).

Maelezo: Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz, 1GB LPDDR2 SDRAM, 2.4GHz na 5GHz IEEE 802.11.b / g / n / ac LAN isiyo na waya, Bluetooth 4.2, BLE, Gigabit Ethernet juu ya USB 2.0 (upeo wa juu wa 300 Mbps), Kichwa cha GPIO kilichopanuliwa kwa pini 40, saizi kamili ya HDMI4 USB 2.0 bandari, bandari ya kamera ya CSI ya kuunganisha kamera ya Raspberry Pi, bandari ya kuonyesha DSI ya kuunganisha onyesho la skrini ya kugusa ya Raspberry Pi bandari ya video, bandari ya Micro SD ya kupakia mfumo wako wa uendeshaji na kuhifadhi data5V / 2.5A DC pembejeo ya nguvu, Power-over-Ethernet (PoE) msaada (inahitaji PoE HAT tofauti).

Servo Motor

Tunatumia SG-90 servo motor, motor ya muda mrefu ambayo inaweza kushughulikia mzigo hadi 2.5kg (1cm).

Kamera ya USB

Kamera ya USB ili kufanya mchezo uingiliane na usindikaji wa picha

Kamba zingine za Jumper hutumiwa kuweka waya wa stepper na Raspberry Pi.

Hatua ya 4: Choma Raspbian kwenye Kadi ya SD?

Je! Ungependa kuchoma Raspbian kwenye Kadi ya SD?
Je! Ungependa kuchoma Raspbian kwenye Kadi ya SD?
Je! Ungependa kuchoma Raspbian kwenye Kadi ya SD?
Je! Ungependa kuchoma Raspbian kwenye Kadi ya SD?
Je! Ungependa kuchoma Raspbian kwenye Kadi ya SD?
Je! Ungependa kuchoma Raspbian kwenye Kadi ya SD?

Raspbian ni usambazaji wa Linux wa chaguo zinazoendesha kwenye Raspberry Pi. Katika mwongozo huu, tutatumia toleo la Lite, lakini toleo la Desktop (ambalo linakuja na mazingira ya picha) linaweza kutumika pia.

  • Pakua Etcher na usakinishe.
  • Unganisha msomaji wa kadi ya SD na kadi ya SD ndani.
  • Fungua Etcher na uchague kutoka kwa diski yako ngumu Raspberry Pi.img au.zip faili unayotaka kuiandikia kadi ya SD.
  • Chagua kadi ya SD unayotaka kuandika picha yako.
  • Pitia chaguo zako na ubonyeze 'Flash!' kuanza kuandika data kwenye kadi ya SD.

Unganisha kifaa kwenye mtandao wako

  • Wezesha ufikiaji wa SSH kwa kuongeza ssh ya faili tupu, iliyowekwa tena kwenye mzizi wa ujazo wa boot kwenye kadi yako ya SD.
  • Ingiza kadi ya SD kwenye Raspberry Pi. Itaanza kwa takribani sekunde 20. Unapaswa sasa kuwa na ufikiaji wa SSH kwa Raspberry Pi yako. Kwa chaguo-msingi, jina lake la mwenyeji litakuwa raspberrypi.local. Kwenye kompyuta yako, fungua dirisha la terminal na andika yafuatayo:

ssh [email protected]

Nenosiri la msingi ni rasipberry

Hapa nimetumia mfuatiliaji tofauti kusano na Raspberry Pi.

Hatua ya 5: Kukusanya Hifadhidata?

Kukusanya Hifadhidata?
Kukusanya Hifadhidata?
Kukusanya Hifadhidata?
Kukusanya Hifadhidata?

Hatua ya kwanza katika mradi huu ni ukusanyaji wa data. Mfumo lazima utambue ishara ya mkono na utambue kitendo na uifanye isonge ipasavyo.

Sisi kufunga maktaba kadhaa kwa Raspberry Pi kutumia pip install

amri.

Sudo apt-pata sasisho && sudo apt-pata sasisho Sudo apt-get kufunga libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev pip kufunga opencv pip kufunga numpy pip kufunga scikit-jifunze pip kufunga scikit-image pip pip install h5py pip install Keras pip sakinisha bomba la tensorflow sakinisha Werkzeug pip install Keras-Applications pip install Keras-Preprocessing pip install keras-squeezenet pip install astor pip install tensorboard pip install tensorflow-estimator pip install mock pip install grpcio pip install absl -pypip install gast pip install joblib pip install Markdown pip kufunga protobuf pip install PyYAML pip install six

Ikiwa unakabiliwa na shida yoyote na OpenCVpackage, ninapendekeza sana kusanikisha vifurushi hivi.

Sudo apt-get kufunga libhdf5-dev

Sudo apt-get kufunga libhdf5-serial-dev sudo apt-kupata kufunga libatlas-base-dev sudo apt-kupata kufunga libjasper-dev sudo apt-kupata kufunga libqtgui4 sudo apt-kufunga libqt4-mtihani

Tumeweka utegemezi wote unaohitajika kwa mradi huu. Kuweka Takwimu hufanywa na makusanyo na mipangilio ya picha chini ya lebo inayofaa.

Hapa tunaunda picha zilizowekwa za mwamba wa lebo, karatasi na mkasi kwa kutumia kijisehemu kinachofuata.

roi = fremu [100: 500, 100: 500]

save_path = os.path.join (img_class_path, '{}.jpg'.format (count + 1)) cv2.imwrite (save_path, roi)

Picha hiyo imenaswa kwa kila lebo (mwamba, karatasi, mkasi na Hakuna).

Hatua ya 6: Kubuni NN & Mafunzo ya Mfano ⚒️⚙️

Kubuni NN & Mafunzo ya Mfano ⚒️⚙️
Kubuni NN & Mafunzo ya Mfano ⚒️⚙️

Msingi wa mradi huu ni kiainishaji cha picha ambacho huainisha moja ya aina tatu. Ili kutengeneza Kitambulishaji hiki, tunatumia CNN iliyofunzwa mapema (Mtandao wa Mabadiliko) inayoitwa SqueezeNet.

Hapa tunatumia Keras na TensorFlow kutoa mfano wa SqueezeNet ambao unaweza kutambua ishara. Picha ambazo tumezalisha katika hatua ya awali hutumiwa kufundisha mfano. Mtindo huo umefunzwa kwa kutumia Hifadhidata iliyotengenezwa kwa hakuna wakati wowote (Mzunguko) uliotajwa.

Mfano umesanidiwa na vigezo kama ilivyoonyeshwa hapa chini.

mfano = Mlolongo ([SqueezeNet (input_shape = (227, 227, 3), ni pamoja na_ juu juu ya Uongo), Kuacha masomo (0.5), Convolution2D (NUM_CLASSES, (1, 1), padding = 'halali'), Uanzishaji ('relu'), GlobalAveragePooling2D (), Uanzishaji ('softmax')])

Wakati mtindo huo ni mafunzo, unaweza kupata upotezaji na usahihi wa mfano kwa kila Wakati na usahihi huongezeka wakati fulani baada ya Enzi kadhaa.

Ilichukua takriban masaa 2 kutengeneza mfano huo kwa usahihi wa hali ya juu baada ya wakati wa 10. Ikiwa unakabiliwa na makosa yoyote ya ugawaji wa kumbukumbu, fanya hatua zifuatazo (Shukrani kwa Adrian)

Ili kuongeza nafasi yako ya kubadilishana, fungua / nk / dphys-swapfile kisha uhariri ubadilishaji wa CONF_SWAPSIZE:

# CONF_SWAPSIZE = 100

CONF_SWAPSIZE = 1024

Kumbuka kuwa ninaongeza ubadilishaji kutoka 100MB hadi 1024MB. Kutoka hapo, anzisha huduma ya kubadilishana:

$ sudo /etc/init.d/dphys-swapfile stop

$ sudo /etc/init.d/dphys-swapfile kuanza

Kumbuka:

Kuongeza ubadilishaji kawaida ni njia nzuri ya kuchoma kadi yako ya kumbukumbu, kwa hivyo hakikisha kurudisha mabadiliko haya na uanze tena huduma ya kubadilishana ukimaliza. Unaweza kusoma zaidi juu ya saizi kubwa zinazoharibu kadi za kumbukumbu hapa.

Hatua ya 7: Kujaribu Mfano ✅

Kujaribu Mfano ✅
Kujaribu Mfano ✅
Kujaribu Mfano ✅
Kujaribu Mfano ✅
Kujaribu Mfano ✅
Kujaribu Mfano ✅

Mara tu mfano utakapotengenezwa, Inatoa faili ya pato "mwamba-karatasi-mkasi-mfano.h5". Faili hii hutumiwa kama chanzo cha kujaribu ikiwa mfumo unaweza kutambua ishara tofauti za mikono na kuweza kutofautisha vitendo.

Mfano huo umewekwa kwenye hati ya chatu kama ifuatavyo

modeli = mzigo_modeli ("mwamba-karatasi-mkasi-mfano.h5")

Kamera inasoma picha ya jaribio na kubadilisha muundo wa rangi unaohitajika, na kisha ubadilishe picha kuwa pikseli 227 x 227 (Saizi sawa inayotumika kwa kizazi cha mfano). Picha ambazo zilitumika kufundishia mfano zinaweza kutumiwa kujaribu mfano uliotengenezwa.

img = cv2.imread (faili ya njia)

img = cv2.cvtColor (img, cv2. COLOR_BGR2RGB) img = cv2.resize (img, (227, 227))

Mara baada ya modeli kupakiwa na picha imepatikana na kamera, mtindo huo unatabiri picha iliyonaswa ukitumia mfano wa SqueezeNet uliobeba, na utabiri wa harakati za mtumiaji.

mfano = mfano. utabiri (np.array ())

move_code = np.argmax (pred [0]) move_name = mapper (move_code) chapa ("Alitabiriwa: {}". fomati (hoja_jina))

Endesha hati ya test.py ili kujaribu mfano huo na picha anuwai za jaribio.

python3 mtihani.py

Sasa mfano uko tayari kugundua na kuelewa ishara za mikono.

Hatua ya 8: Mchezo wa Mwamba-Karatasi-Mkasi

Mwamba-Karatasi-Mkasi Mchezo
Mwamba-Karatasi-Mkasi Mchezo

Mchezo hutumia kazi ya kizazi cha nambari bila mpangilio kuamua hoja ya kompyuta. Inafuata sheria zilizotajwa hapo juu kuamua mshindi. Mchezo umeundwa na njia mbili: Njia ya Kawaida na Njia ya Akili, ambapo hali ya akili inapingana na harakati za mtumiaji, yaani Kompyuta inashinda harakati zote dhidi ya mtumiaji.

cap = cv2. VideoCapture (0) # Ili kunasa picha kutoka kwa Kamera

Sasa wacha tufanye mchezo kwa hali ya Kawaida ambapo mfumo / Raspberry Pi inachukua picha ya mkono na kuchambua na kubainisha ishara ya mkono. Kisha kutumia jenereta ya nambari isiyo ya kawaida, hoja ya kompyuta inachezwa. Mshindi huchaguliwa kulingana na sheria na kisha kuonyeshwa kwenye skrini. Anza mchezo kwa kutumia amri ifuatayo.

python3 play.py

Hatua ya 9: Ushirikiano wa Servo Motor?

Mwishowe, ongeza injini ya servo kwenye mradi huu. Servo motor ni GPIO pin 17 ya Raspberry Pi, ambayo ina kazi ya PWM kudhibiti pembe ya mzunguko.

Servo Motor inayotumiwa katika mradi huu ni SG-90. Inaweza kufanya mzunguko kwa saa na kupambana na saa hadi 180 °

Uunganisho umepewa kama ifuatavyo.

Servo Motor - Raspberry Pi

Vcc - + 5V

GND - GND

Ishara - GPIO17

Maktaba kama RPi. GPIO na wakati hutumiwa katika mradi huu.

kuagiza RPi. GPIO kama GPIO

muda wa kuagiza

Pini ya GPIO imewekwa kwa PWM kwa kutumia mistari ifuatayo

ServoPIN = 17

GPIO.setmode (GPIO. BCM) GPIO.setup (servoPIN, GPIO. OUT)

GPIO Pin 17 imeundwa kutumiwa kama PWM kwa masafa ya 50Hz. Angle ya servo motor inapatikana kwa kuweka mzunguko wa ushuru (Ton & Toff) wa PWM

wajibu = angle / 18 + 2

Pato la GPIO (servoPIN, Kweli) p. BadilishaDutyCycle (ushuru) wakati. Lala (1) GPIO.pato (servoPIN, Uongo) p. ChangeDutyCycle (0)

Hii itatoa pembe ya hatua inayotakiwa kwa kila mpigo, ambayo itatoa pembe inayotaka ya mzunguko.

Sasa nimechukua chati na kuipasua sehemu tatu, kwa mwamba, karatasi, na mkasi. Magari ya Servo yamewekwa katikati ya chati. Pointer / flap imeunganishwa na shimoni ya servo motor. Shaft hii inaelekeza kwa hoja ya kompyuta kulingana na mantiki iliyohesabiwa katika hati hiyo.

Hatua ya 10: Kufanya kazi kwa Mradi?

Image
Image

Na sasa, ni wakati wa kucheza. Wacha tuone kazi ya mradi huo.

Ikiwa unakabiliwa na shida zozote katika kujenga mradi huu, jisikie huru kuniuliza. Tafadhali pendekeza miradi mpya ambayo unataka nifanye ijayo.

Toa vidole gumba ikiwa kweli ilikusaidia na fuata kituo changu kwa miradi ya kupendeza.:)

Shiriki video hii ukipenda.

Nimefurahi kuwa umejisajili:

Asante kwa kusoma!

Hatua ya 11: Msimbo - Repo ya Mradi

Nambari imeongezwa kwenye Hifadhi ya GitHub ambayo inaweza kupatikana katika sehemu ya nambari.

Rahul24-06 / Mkasi-Karatasi-Mikasi -

Ilipendekeza: