Мазмуну:

K210 такталары жана Arduino IDE/Micropython менен сүрөт таануу: 6 кадам (сүрөттөр менен)
K210 такталары жана Arduino IDE/Micropython менен сүрөт таануу: 6 кадам (сүрөттөр менен)

Video: K210 такталары жана Arduino IDE/Micropython менен сүрөт таануу: 6 кадам (сүрөттөр менен)

Video: K210 такталары жана Arduino IDE/Micropython менен сүрөт таануу: 6 кадам (сүрөттөр менен)
Video: PyAi k210 - новая платформа машинного зрения на Kendryte k210 2024, Ноябрь
Anonim
Image
Image

Мен буга чейин 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: Кээ бир теория

CNN жана Transfer Learning: Кээ бир теория
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 орнотуу жана Тесттерди иштетүү
AXeleRate орнотуу жана Тесттерди иштетүү

Жергиликтүү машинаңызга aXeleRate орнотуңуз

pip орнотуу git+https://github.com/AIWintermuteAI/aXeleRate

Мисалдарды жүктөө үчүн:

git clone

Сиз aXeleRate папкасында tests_training.py менен тез тесттерди иштете аласыз. Ал ар бир моделдин түрү боюнча тренингдерди жана жыйынтыктарды чыгарат, үйрөтүлгөн моделдерди сактап калат. Бул 5 доор үчүн гана машыгуу болгондуктан, маалымат топтому өтө кичине, сиз пайдалуу моделдерди ала албайсыз, бирок бул скрипт каталардын жоктугун текшерүү үчүн гана арналган.

4-кадам: Моделди кайра машыктыруу, Keras моделин.kmodelге айландыруу

Моделди кайра үйрөтүү, Keras моделин.kmodelге айландыруу
Моделди кайра үйрөтүү, 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 Bitте иштетиңиз
Моделди Sipeed Maix Bitте иштетиңиз
Моделди Sipeed Maix Bitте иштетиңиз
Моделди Sipeed Maix Bitте иштетиңиз
Моделди Sipeed Maix Bitте иштетиңиз
Моделди 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 үчүн эң арзан варианттардын бири.

Сунушталууда: