Съдържание:
- Стъпка 1: CNN и трансферно обучение: Някои теории
- Стъпка 2: Подгответе вашата среда
- Стъпка 3: Инсталирайте AXeleRate и изпълнете тестове
- Стъпка 4: Превъзпитайте модела, преобразувайте модела на Keras в.kmodel
- Стъпка 5: Стартирайте модела на Sipeed Maix Bit
- Стъпка 6: Заключения
Видео: Разпознаване на изображения с платки K210 и Arduino IDE/Micropython: 6 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Вече написах една статия за това как да стартирам демонстрации на OpenMV на Sipeed Maix Bit и също така направих видео на демонстрация на откриване на обекти с тази платка. Един от многото въпроси, които хората са задавали, е - как мога да разпозная обект, за който невронната мрежа не е обучена? С други думи, как да направите свой собствен класификатор на изображения и да го стартирате с хардуерно ускорение.
Това е разбираем въпрос, тъй като за вашия проект вероятно няма нужда да разпознавате някои общи обекти, като котки и кучета и самолети. Искате да разпознаете нещо специфично, например порода куче за тази автоматична врата за домашни любимци, или растителен вид за сортиране, или всякакви други излизащи приложения, за които можете да мислите!
Хванах те! В тази статия ще ви науча как да създадете свой собствен персонализиран класификатор на изображения с трансферно обучение в Keras, да преобразувате обучения модел във формат.kmodel и да го стартирате на дъска Sipeed (може да бъде всяка дъска, Bit/Dock или Go) с помощта на Micropython или Arduino IDE. И само вашето въображение ще бъде ограничението за задачите, които можете да правите с тези знания.
АКТУАЛИЗИРАНЕ МАЙ 2020 г.: Виждайки как моята статия и видеоклипът за разпознаване на изображения с дъски K210 все още са много популярни и сред най-добрите резултати в YouTube и Google, реших да актуализирам статията, за да включа информацията за aXeleRate, базирана на Keras рамка за AI на Edge I развивам.
aXeleRate по същество се основава на колекцията от скриптове, които използвах за обучение на модели за разпознаване на изображения/откриване на обекти - комбинирани в една рамка и оптимизирани за работния процес в Google Colab. Той е по -удобен за използване и по -актуален.
За старата версия на статията все още можете да я видите на steemit.com.
Стъпка 1: CNN и трансферно обучение: Някои теории
Конволюционните невронни мрежи или CNN са клас дълбоки невронни мрежи, най -често прилагани за анализ на визуални образи. В интернет има много литература по темата и ще дам някои връзки в последната част на статията. Накратко, можете да мислите за CNN като поредица от филтри, приложени към изображението, като всеки филтър търси конкретна характеристика в изображението - на долните конволюционни слоеве функциите обикновено са линии и прости форми, а на по -високите слоеве функциите може да бъде по -конкретно, напр части от тялото, специфични текстури, части от животни или растения и т.н. Наличието на определен набор от характеристики може да ни даде представа какъв може да бъде обектът в изображението. Мустаци, две очи и черен нос? Сигурно е котка! Зелени листа, ствол на дърво? Прилича на дърво!
Надявам се сега да разберете идеята за принципа на работа на CNN. Обикновено дълбоката невронна мрежа се нуждае от хиляди изображения и часове на обучение (в зависимост от хардуера, който използвате за обучение), за да "разработи" филтри, които са полезни за разпознаване на видовете обекти, които искате. Но има пряк път.
Модел, обучен да разпознава много различни общи обекти (котки, кучета, домакински уреди, транспорт и т.н.), вече има „разработени“много от тези полезни филтри, така че не се нуждаем от него, за да се научим да разпознаваме основните форми и части на обектите отново. Можем просто да обучим последните няколко слоя на мрежата да разпознават специфични класове обекти, които са важни за нас. Това се нарича „трансферно обучение“. Имате нужда от значително по -малко данни за обучение и изчисляване на време с трансферно обучение, тъй като тренирате само последните няколко слоя от мрежата, съставени може би от няколкостотин неврона.
Звучи страхотно, нали? Нека да видим как да го приложим.
Стъпка 2: Подгответе вашата среда
Има два начина да използвате aXeleRate: да се изпълнява локално на Ubuntu машина или в Google Colab. За да работите в Google Colab, разгледайте този пример:
Класификация на изображенията Colab Notebook
Обучението на вашия модел локално и експортирането му за използване с хардуерно ускорение също е много по -лесно сега.
Работната ми среда е Ubuntu 16.04, 64bit. Можете да използвате виртуална машина за стартиране на Ubuntu образ, тъй като няма да използваме графичен процесор за обучение. С някои модификации можете също да стартирате учебния скрипт в Windows, но за преобразуване на модел ще трябва да използвате Linux система. Така че, предпочитаната среда, в която можете да изпълните този урок, е Ubuntu 16.04, работеща на първо място или във виртуална машина.
Нека започнем с инсталирането на Miniconda, който е мениджър на среда за Python. Ние ще създадем изолирана среда, така че няма случайно да променим нищо във вашата системна среда на Python.
Изтеглете инсталатора тук
След като инсталацията приключи, създайте нова среда:
conda създава -n ml python = 3.7
Нека активираме новата среда
conda активира ml
Пред префикса ви ще се появи префикс с името на средата, което показва, че работите сега в тази среда.
Стъпка 3: Инсталирайте AXeleRate и изпълнете тестове
Инсталирайте aXeleRate на локалната си машина с
pip install git+https://github.com/AIWintermuteAI/aXeleRate
За да изтеглите примери, изпълнете:
git clone
Можете да стартирате бързи тестове с tests_training.py в папката aXeleRate. Той ще провежда обучение и изводи за всеки тип модел, ще записва и преобразува обучени модели. Тъй като това е само обучение за 5 епохи и наборът от данни е много малък, няма да можете да получите полезни модели, но този скрипт е предназначен само за проверка за липса на грешки.
Стъпка 4: Превъзпитайте модела, преобразувайте модела на Keras в.kmodel
За този пример с играчки ще обучаваме модела да разпознава Дядо Коледа и Ардуино Уно. Очевидно можете да изберете други класове. Изтеглете набора от данни от тук. Създайте копие на файла класификатор.json в конфигурационната папка, след което го променете съответно, подобно на конфигурационния файл на екранната снимка - уверете се, че пътят към папките за обучение и валидиране е правилен!
Изпълнете следната команда от папката aXeleRate:
python axelerate/train.py - c configs/santa_uno.json
Обучението ще започне. Ако точността на валидиране (нашата метрика за валидиране) не се подобрява за 20 епохи, обучението ще спре преждевременно. Всеки път, когато точността на валидиране се подобри, моделът се записва в папката на проекта. След като обучението приключи, aXeleRate автоматично преобразува най -добрия модел в посочени формати - можете да изберете „tflite“, „k210“или „edgetpu“от сега.
Стъпка 5: Стартирайте модела на Sipeed Maix Bit
Има два начина да стартирате модела, който имате сега на хардуера на Sipeed Maix: фърмуер на микропитон и Arduino IDE. Хардуерът на Micropython е по -лесен за използване, но заема значителна част от наличната памет, така че остава по -малко място за модела. Arduino IDE е основно C код, който е много по -ефективен и има по -малък обем на паметта. Моят модел е само 1.9Mb, така че и двете опции работят за него. Можете да използвате модели с големина 2,9 Mb с Micropython, за всичко по -голямо трябва да помислите за използването на Arduino IDE.
Изтеглете OpenMV IDE от тук и минимален фърмуер за микропитон от тук.
Запишете фърмуера с инструмента kflash_gui. Можете също да изберете да запишете обучения модел да мига, както е показано на екрана. Или го копирайте на SD карта (в този случай копирайте.kmodel в корена на SD карта и поставете SD карта в Sipeed Maix Bit)
Отворете OpenMV IDE и натиснете бутона за свързване. Отворете скрипта santa_uno.py от папката example_scripts и натиснете бутона Старт. Трябва да виждате поток на живо от камерата и ако отворите сериен терминал, ще получите най -добрия резултат от разпознаването на изображения с оценка на доверието!
За използване с Arduino IDE, първо трябва да следвате процедурата за добавяне на Sipeed платки към Arduino IDE, която е документирана тук. Вашата версия на Arduino IDE трябва да бъде поне 1.8.12. След като добавите дъските, отворете скицата на mobilenet_v1_transfer_learning.ino и я качете в Sipeed Maix Bit. Променете името на модела на SD картата на „модел“(или направете копие с това име). Можете да промените имената на етикетите в names.cpp. Той ще показва потока от камерата на живо на екрана на Sipeed Maix заедно с най -горния резултат от разпознаването на изображения.
Стъпка 6: Заключения
Ето още няколко материала за четене по темата за CNN и трансферното обучение:
Трансферно обучение чрез Mobilenet и Keras Чудесно обяснение за трансферното обучение, този урок използва модифицирана версия на кода от тази статия.
Котки и кучета и конволюционни невронни мрежи Обяснява основите зад CNN и визуализира някои от филтрите. С котки!
Тренирайте, конвертирайте, стартирайте MobileNet на Sipeed MaixPy и MaixDuino! Урок от екипа на Sipeed за това как да тренираме Mobilenet 1000 класове от нулата (без трансферно обучение). Можете да изтеглите предварително обучения им модел и да го изпробвате!
Надявам се, че можете да използвате знанията, които имате сега, за да изградите някои страхотни проекти с машинно виждане! Можете да закупите дъски Sipeed тук, те са сред най -евтините опции за ML на вградени системи.
Препоръчано:
Изкуствен интелект и разпознаване на изображения с помощта на HuskyLens: 6 стъпки (със снимки)
Изкуствен интелект и разпознаване на изображения с помощта на HuskyLens: Хей, какво става, момчета! Akarsh тук от CETech, В този проект ще разгледаме HuskyLens от DFRobot. Това е модул за камера, задвижван от AI, който е в състояние да извърши няколко операции с изкуствен интелект, като разпознаване на лица
Шестстранни платки с LED платки с WIFI и жироскоп - PIKOCUBE: 7 стъпки (със снимки)
Шестстранни светодиодни зарчета с печатни платки с WIFI и жироскоп - PIKOCUBE: Здравейте, производители, това е производител moekoe! Днес искам да ви покажа как да изградите истински LED зарчета на базата на шест печатни платки и общо 54 светодиода. До вътрешния си жироскопичен сензор, който може да открие движение и позиция на зарове, кубът идва с ESP8285-01F, който е
Разпознаване и разпознаване на лица - Arduino Face ID Използване на OpenCV Python и Arduino .: 6 стъпки
Разпознаване и разпознаване на лица | Arduino Face ID Използване на OpenCV Python и Arduino .: Разпознаване на лице AKA Face ID е една от най -важните функции на мобилните телефони в днешно време. И така, имах въпрос "мога ли да имам идентификационен номер на лицето за моя проект Arduino" и отговорът е да … Пътуването ми започна по следния начин: Стъпка 1: Достъп до нас
Разпознаване на лице+разпознаване: 8 стъпки (със снимки)
Face Detection+разпознаване: Това е прост пример за стартиране на разпознаване и разпознаване на лица с OpenCV от камера. ЗАБЕЛЕЖКА: НАПРАВИХ ТОЗИ ПРОЕКТ ЗА СЪДЕЖДАНЕ НА СЕНЗОРИ И ИЗПОЛЗВАХ КАМЕРАТА КАТО СЕНЗОР ЗА ПРОСЛЕДВАНЕ И ПРИЗНАВАНЕ НА ЛИЦА. И така, нашата цел В тази сесия, 1. Инсталирайте Anaconda
Изобразяване на 3D изображения на вашите печатни платки с помощта на Eagle3D и POV-Ray: 5 стъпки (със снимки)
Изобразявайте 3D изображения на вашите печатни платки с помощта на Eagle3D и POV-Ray: Използвайки Eagle3D и POV-Ray, можете да направите реалистични 3D визуализации на вашите печатни платки. Eagle3D е скрипт за EAGLE Layout Editor. Това ще генерира файл за проследяване на лъчи, който ще бъде изпратен до POV-Ray, който от своя страна в крайна сметка ще изскочи финализираното изображение