Мазмуну:
- 1 -кадам: CNN жана Transfer Learning: Кээ бир теория
- 2 -кадам: Айланаңызды даярдаңыз
- 3 -кадам: AXeleRate орнотуу жана Тесттерди иштетүү
- 4-кадам: Моделди кайра машыктыруу, Keras моделин.kmodelге айландыруу
- 5 -кадам: Моделди Sipeed Maix Bitте иштетиңиз
- 6 -кадам: Жыйынтыктар
Video: K210 такталары жана Arduino IDE/Micropython менен сүрөт таануу: 6 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:38
Мен буга чейин Sipeed Maix Bitте OpenMV демолорун кантип иштетүү боюнча бир макала жазгам, ошондой эле бул такта менен объекттерди аныктоо демосунун видеосун тарткам. Адамдар берген көптөгөн суроолордун бири - нейрон тармагы үйрөтүлбөгөн нерсени кантип тааныйм? Башкача айтканда, өзүңүздүн сүрөт классификаторун кантип түзүп, аны аппараттык ылдамдатуу менен иштетүү керек.
Бул түшүнүктүү суроо, анткени сиздин долбоор үчүн мышыктар, иттер жана учактар сыяктуу кээ бир жалпы объекттерди таануунун кажети жок. Сиз конкреттүү нерсени билгиңиз келет, мисалы, үй жаныбарларынын автоматтык эшиги үчүн иттин тукуму, же сорттоо үчүн өсүмдүктөрдүн түрү, же сиз ойлогон башка чыгуучу колдонмолор!
Мен сени түшүндүм! Бул макалада мен сизге Керас тилинде өткөрүп берүү менен жеке сүрөт классификаторун түзүүнү, үйрөтүлгөн моделди.kmodel форматына айландырууну жана аны Sipeed тактасында иштетүүнү үйрөтөм (каалаган такта, Bit/Dock же Go болушу мүмкүн) Micropython же Arduino IDE. Жана бул билим менен кыла турган иштердин чеги сиздин кыялыңыз гана болот.
2020-ЖЫЛДЫН МАЙЫН КАБАРЛАҢЫЗ: K210 такталары менен сүрөт таануу боюнча менин макалам менен видеом дагы эле абдан популярдуу экенин көрүп, YouTube менен Google'дун эң мыкты жыйынтыктарынын катарында макалды жаңыртууну чечтим aXeleRate, AI үчүн Keras негизделген AI Мен иштеп чыгам.
aXeleRate, негизинен, мен сүрөттү таануу/объекттерди аныктоо моделдерин үйрөтүү үчүн колдонгон скрипттердин жыйындысына негизделген - бир алкакка бириктирилген жана Google Colabдагы жумуш процесси үчүн оптималдаштырылган. Колдонууга ыңгайлуу жана дагы заманбап.
Макаланын эски версиясы үчүн дагы эле steemit.com сайтынан көрө аласыз.
1 -кадам: CNN жана Transfer Learning: Кээ бир теория
Convolutional Neural Networks же CNN - бул терең нейрон тармактарынын класс, көбүнчө визуалдык сүрөттөрдү талдоо үчүн колдонулат. Бул темада интернетте көптөгөн адабияттар бар жана мен макаланын акыркы бөлүгүндө кээ бир шилтемелерди берем. Кыскача айтканда, сиз CNNди сүрөттө колдонулган бир катар чыпкалар катары элестете аласыз, ар бир чыпка сүрөттөгү белгилүү бир өзгөчөлүктү издейт - төмөнкү конвульсиялык катмарларда өзгөчөлүктөр адатта сызыктар жана жөнөкөй фигуралар жана жогорку катмарларда өзгөчөлүктөр конкреттүү болушу мүмкүн, мисалы дене бөлүктөрү, конкреттүү текстуралар, жаныбарлардын же өсүмдүктөрдүн бөлүктөрү ж. Муруту, эки көзү жана кара мурду? Мышык болуш керек! Жашыл жалбырактар, дарактын сабагы? Даракка окшош!
Сиз азыр CNNдин иштөө принциби жөнүндө түшүнүккө ээ болосуз деп үмүттөнөм. Адатта терең нейрон тармагына керектүү объектилердин түрлөрүн таануу үчүн пайдалуу болгон чыпкаларды "иштеп чыгуу" үчүн миңдеген сүрөттөргө жана машыгуу сааттарына (машыгуу үчүн колдонуп жаткан жабдуулардан көз каранды) муктаж. Бирок кыска жол бар.
Ар кандай жалпы объекттерди (мышыктар, иттер, тиричилик техникасы, транспорт ж. объекттердин кайра. Биз жөн эле тармактын акыркы бир нече катмарын биз үчүн маанилүү болгон объекттердин белгилүү класстарын таанууга кайра үйрөтө алабыз. Бул "трансфердик окуу" деп аталат. Сизге бир кыйла азыраак тренинг маалыматы жана которуу менен убакытты эсептөө керек, анткени сиз бир нече жүз нейрондордон турган тармактын акыркы бир нече катмарын гана окутуп жатасыз.
Укмуш угулат, туурабы? Аны кантип ишке ашыруу керек экенин карап көрөлү.
2 -кадам: Айланаңызды даярдаңыз
AXeleRate колдонуунун эки жолу бар: Ubuntu машинасында же Google Colabда локалдык түрдө иштөө. Google Colabда иштөө үчүн бул мисалды карап көрүңүз:
Сүрөттүн классификациясы Colab Notebook
Моделиңизди жергиликтүү деңгээлде үйрөтүү жана аны экспорттоо аппараттык ылдамдатуу менен азыр да оңой болуп калды.
Менин иштөө чөйрөм Ubuntu 16.04, 64bit. Виртуалдык машинаны Ubuntu сүрөтүн иштетүү үчүн колдонсоңуз болот, анткени биз GPUну окутуу үчүн колдонбойбуз. Кээ бир өзгөртүүлөр менен Windows тренинг сценарийин иштетсеңиз болот, бирок моделди өзгөртүү үчүн Linux системасын колдонуу керек болот. Демек, бул үйрөткүчтү аткаруу үчүн эң ыңгайлуу чөйрө Ubuntu 16.04, жергиликтүү же виртуалдык машинада иштейт.
Python үчүн айлана -чөйрөнү башкаруучу Miniconda орнотуудан баштайлы. Биз обочолонгон чөйрөнү түзөбүз, андыктан кокусунан сиздин системаңыздагы Python чөйрөсүндө эч нерсени өзгөртпөйбүз.
Орнотуучуну бул жерден жүктөп алыңыз
Орнотуу аяктагандан кийин, жаңы чөйрөнү түзүңүз:
conda түзүү -n ml python = 3.7
Жаңы чөйрөнү иштетели
мл активдештирүү
Баш кабыгыңыздын алдындагы префикс айлана -чөйрөнүн аталышы менен пайда болот, бул сиз азыр ошол чөйрөдө иштеп жатканыңызды көрсөтөт.
3 -кадам: AXeleRate орнотуу жана Тесттерди иштетүү
Жергиликтүү машинаңызга aXeleRate орнотуңуз
pip орнотуу git+https://github.com/AIWintermuteAI/aXeleRate
Мисалдарды жүктөө үчүн:
git clone
Сиз aXeleRate папкасында tests_training.py менен тез тесттерди иштете аласыз. Ал ар бир моделдин түрү боюнча тренингдерди жана жыйынтыктарды чыгарат, үйрөтүлгөн моделдерди сактап калат. Бул 5 доор үчүн гана машыгуу болгондуктан, маалымат топтому өтө кичине, сиз пайдалуу моделдерди ала албайсыз, бирок бул скрипт каталардын жоктугун текшерүү үчүн гана арналган.
4-кадам: Моделди кайра машыктыруу, Keras моделин.kmodelге айландыруу
Бул оюнчуктун мисалы үчүн биз моделди Аяз ата менен Ардуино Унону таанууга үйрөтөбүз. Албетте, башка класстарды тандай аласыз. Маалымат топтомун бул жерден жүктөп алыңыз. Conf-g.webp
AXeleRate папкасынан төмөнкү буйрукту аткарыңыз:
python axelerate/train.py - c configs/santa_uno.json
Тренинг башталат. Эгерде текшерүүнүн тактыгы (биздин текшерүү метрикасы) 20 доордо жакшырбаса, анда окуу мөөнөтүнөн мурда токтойт. Текшерүүнүн тактыгы жакшырган сайын модель долбоор папкасында сакталат. Окутуу аяктагандан кийин, aXeleRate автоматтык түрдө эң жакшы моделди көрсөтүлгөн форматтарга айлантат - сиз азырынча "tflite", "k210" же "edgetpu" тандай аласыз.
5 -кадам: Моделди Sipeed Maix Bitте иштетиңиз
Учурда Sipeed Maix жабдууларында болгон моделди иштетүүнүн эки жолу бар: micropython камтылган программасы жана Arduino IDE. Micropython жабдууларын колдонуу оңой, бирок ал жеткиликтүү эс тутумдун олуттуу бөлүгүн ээлейт, андыктан моделге азыраак орун калды. Arduino IDE негизинен C коду, ал алда канча эффективдүү жана эс тутуму кичине. Менин моделим болгону 1,9Мб, андыктан эки вариант тең ал үчүн иштейт. Сиз Micropython менен 2,9 Мб чоңдуктагы моделдерди колдоно аласыз, чоңураак нерселер үчүн Arduino IDEди колдонууну ойлонушуңуз керек.
OpenMV IDEди бул жерден жана минималдуу micropython программасын бул жерден жүктөп алыңыз.
Программаны kflash_gui куралы менен өрттөңүз. Сиз ошондой эле скриншотто көрсөтүлгөндөй, үйрөтүлгөн моделди да жаркырап күйгүзүүнү тандай аласыз. Же аны SD картага көчүрүңүз (мындай учурда.kmodelди SD картасынын тамырына көчүрүп, SD картаны Sipeed Maix Bitке салыңыз)
OpenMV IDE ачыңыз жана туташуу баскычын басыңыз. Santa_uno.py скриптин example_scripts папкасынан ачыңыз жана Баштоо баскычын басыңыз. Сиз камерадан жандуу агымды көрүп турушуңуз керек жана эгер Сериялык Терминалды ачсаңыз, анда ишеним упайы менен сүрөттү таануунун эң жогорку натыйжасына ээ болосуз!
Arduino IDE менен колдонуу үчүн, адегенде бул жерде документтештирилген Arduino IDEге Sipeed такталарын кошуу процедурасын аткарышыңыз керек. Сиздин Arduino IDE версияңыз жок дегенде 1.8.12 болушу керек. Тактайларды кошкондон кийин, mobilenet_v1_transfer_learning.ino эскизин ачып, аны Sipeed Maix Bitке жүктөңүз. SD картадагы моделдин атын "модель" кылып өзгөртүңүз (же ушул ат менен көчүрмөсүн жасаңыз). Сиз names.cppтеги энбелгинин аталыштарын өзгөртө аласыз. Бул Sipeed Maix экранында камеранын түз агымын жана жогорку сүрөттү таануу натыйжасын көрсөтөт.
6 -кадам: Жыйынтыктар
Бул жерде CNN жана трансфердик окуу темасы боюнча окуу үчүн дагы бир нече материалдар бар:
Mobilenet жана Keras аркылуу Transfer Learning Трансфердик окутуунун эң сонун түшүндүрмөсү, бул окуу куралы ошол макаланын кодунун өзгөртүлгөн версиясын колдонот.
Мышыктар жана иттер жана конволюциялык нейрон тармактары CNNдин артындагы негиздерди түшүндүрөт жана кээ бир чыпкаларды элестетет. Мышыктар менен!
Sipeed MaixPy жана MaixDuino боюнча MobileNetти машыктырыңыз, айлантыңыз, иштетиңиз! Sipeed командасынын үйрөткүчү Mobilenet 1000 класстарын нөлдөн баштап кантип үйрөтүү керек (эч кандай трансфердик окуу). Алардын алдын ала даярдалган моделин жүктөп алып, сынап көрсөңүз болот!
Машинанын көрүнүшү менен укмуштуудай долбоорлорду куруу үчүн азыр алган билимиңизди колдоно аласыз деп үмүттөнөбүз! Бул жерден Sipeed такталарын сатып алсаңыз болот, алар камтылган системалардагы ML үчүн эң арзан варианттардын бири.
Сунушталууда:
Sipeed MaiX такталары менен объекттерди аныктоо (Kendryte K210): 6 кадам
Sipeed MaiX такталары менен объекттерди аныктоо (Kendryte K210): Sipeed MaiX такталары менен сүрөт таануу жөнүндө мурунку макаламдын уландысы катары мен объекттерди табууга басым жасап, башка окуу куралын жазууну чечтим. Жакында Kendryte K210 чипи менен кызыктуу жабдыктар пайда болду, анын ичинде S
Сүрөт иштетүүгө негизделген өрт таануу жана өчүрүү системасы: 3 кадам
Сүрөт иштетүүгө негизделген өрт таануу жана өчүрүү тутуму: Салам достор бул Arduino колдонулган сүрөттү иштетүүгө негизделген өрт аныктоо жана өчүрүү системасы
Жүздү таануу жана идентификация - OpenCV Python жана Arduino аркылуу Arduino Face ID: 6 кадам
Жүздү таануу жана идентификация | OpenCV Python жана Arduino аркылуу Arduino Face ID: жүздү таануу AKA жүзүнүн идентификатору - азыркы учурда уюлдук телефондордогу эң маанилүү өзгөчөлүктөрдүн бири. Ошентип, менде " менин Arduino проектим үчүн жүз ID барбы " жана жооп ооба … Менин саякатым мындайча башталды: 1 -кадам: Бизге жетүү
Raspberry Pi боюнча TensorFlow менен сүрөт таануу: 6 кадам
Raspberry Pi боюнча TensorFlow менен сүрөт таануу: Google TensorFlow-бул маалымат агымынын графиктерин колдонуу менен сандык эсептөө үчүн ачык булак программалык китепканасы. Бул Google тарабынан Machine Learning жана Deep Learning Technologiesнын ар кандай тармактарында колдонулат. TensorFlow башында Google Brai тарабынан иштелип чыккан
Жүздү таануу+таануу: 8 кадам (сүрөттөр менен)
Жүздү таануу+таануу: Бул камерадан OpenCV менен жүздү таануунун жана таануунун чуркоосунун жөнөкөй мисалы. ЭСКЕРТҮҮ: Мен бул проектти сенсорлордун сынагы үчүн жасадым жана камераны сенсор катары таануу үчүн колдондум. Ошентип, биздин максатыбыз ушул сессияда 1. Анаконду орнотуу