Orodha ya maudhui:
- Hatua ya 1: Vitu vinavyotumiwa katika Mradi huu
- Hatua ya 2: Wazo?
- Hatua ya 3: Kuanza?
- Hatua ya 4: Choma Raspbian kwenye Kadi ya SD?
- Hatua ya 5: Kukusanya Hifadhidata?
- Hatua ya 6: Kubuni NN & Mafunzo ya Mfano ⚒️⚙️
- Hatua ya 7: Kujaribu Mfano ✅
- Hatua ya 8: Mchezo wa Mwamba-Karatasi-Mkasi
- Hatua ya 9: Ushirikiano wa Servo Motor?
- Hatua ya 10: Kufanya kazi kwa Mradi?
- Hatua ya 11: Msimbo - Repo ya Mradi
Video: Mkasi wa Karatasi ya Mwamba AI: Hatua 11
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
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?
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?
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?
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:
Nenosiri la msingi ni rasipberry
Hapa nimetumia mfuatiliaji tofauti kusano na Raspberry Pi.
Hatua ya 5: 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 ⚒️⚙️
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 ✅
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
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?
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:
Mchezo wa Mkasi wa Karatasi ya Jiwe: Hatua 6
Mchezo wa Mkasi wa Karatasi ya Jiwe: Huu ndio mafunzo yangu ya kwanza. Nilitaka kuandika moja kwa muda mrefu lakini sikuwa na mradi wowote ambao ningeweza kuchapisha hapa. Kwa hivyo nilipopata wazo la mradi huu, niliamua kuwa hii ndio moja. Kwa hivyo nilikuwa nikivinjari tovuti ya tensorflow.js, ni i
Mtunzaji wa Karatasi: Hifadhi Karatasi ya choo na Tiba ya mshtuko: Hatua 4
Mtunzaji wa Karatasi: Hifadhi Karatasi ya choo na Tiba ya mshtuko: Sote tumeona rafu tupu kwenye duka la vyakula na inaonekana kama kutakuwa na uhaba wa karatasi ya choo kwa muda. Ikiwa hukujiweka akiba mapema labda uko katika hali niliyo nayo. Nina nyumba ya 6 na mistari michache tu ya kudumu
Mikasi ya Karatasi ya Mwamba: Hatua 10
Mikasi ya Karatasi ya Mwamba: Kusudi: Baada ya kumaliza hii, utajifunza jinsi ya kutengeneza mchezo rahisi wa Rock, Mikasi ya Karatasi kutoka mwanzoni ukitumia Code.org. Vifaa / Mahitaji yanahitajika: Uelewa wa kimsingi wa sintaksia ya Javascript, kompyuta, akaunti ya Code.org
Karatasi na Bati ya Kuingiza karatasi ya Bati: Hatua 5
Karatasi na Kifaa cha Uingizaji wa karatasi ya Bati: Mwongozo huu utakuonyesha jinsi ya kutengeneza kifaa cha bei rahisi, kibaya cha kuingiza kompyuta yako. Katika hili ninatumia bodi ya mantiki ya monome 40h kutuma ishara kwa kompyuta kutoka gridi ya nane na nane ya vifungo, lakini mipango hii inaweza kubadilishwa kwa urahisi
Karatasi ya Karatasi ya Karatasi: 5 Hatua
Sanduku la Karatasi la Karatasi: hii ni sanduku dhabiti linalotumia karatasi 6