Enquête sur PYNQ - Faisons du Deep Learning avec FPGA en utilisant Python -

Je suis également intéressé à accélérer avec FPGA comme Zynq. En tant que boutique de logiciels, je souhaite adopter une approche qui peut accélérer rapidement sans trop réfléchir. Même en utilisant FPGA, j'aimerais essayer de l'utiliser afin qu'une implémentation équivalente à OpenCV soit préparée à l'avance. Cependant, je n'ai toujours aucune chance de l'essayer.

"Accélérez les applications OpenCV sur tous les SoC programmables Zynq-7000 avec la vidéothèque Vivado HLS"

http://japan.xilinx.com/support/documentation/application_notes/j_xapp1167.pdf

Evaluating Vivado High-Level Synthesis on OpenCV Functions http://www.idt.mdh.se/utbildning/exjobb/files/TR1803.pdf

Salle FPGA J'ai essayé d'utiliser OpenCV avec Vivado HLS 2015.4 1

La manière d'implémenter OpenCV pour Vivado HLS que nous allons utiliser est que la partie entrée / sortie de la fonction devant être matérielle soit réalisée par AXI4 Stream. Sur le banc de test, IplImage2AXIvideo () est utilisé pour convertir IplImage en AXI4 Stream, qui est ensuite placé dans image_filter (), et après traitement, AXIvideo2IplImage () est utilisé pour convertir AXI4 Stream en IplImage.

Salle FPGA 7 (FAST Corners Detection 1) utilisant OpenCV avec Vivado HLS 2015.4

J'utilise le code fourni par Xilinx pour la synthèse de haut niveau comme suit. hls::AXIvideo2Mat(INPUT_STREAM, img_0); hls::Duplicate(img_0, img_1, img_1_); hls::CvtColor<HLS_BGR2GRAY>(img_1, img_1g); hls::FASTX(img_1g, mask, 20, true); hls::Dilate(mask, dmask); hls::PaintMask(img_1_, dmask, img_3, color); hls::Mat2AXIvideo(img_3, OUTPUT_STREAM);

Tant que vous l'utilisez de cette façon, vous pouvez utiliser FPGA sans connaître Verilog HDL. Lorsqu'il s'agit d'obtenir des résultats rapidement, il est préférable que les magasins de logiciels évitent d'écrire Verilog HDL.


Nous étudions PYNQ.

À ce stade, toute personne familière avec le Raspberry Pi devrait pouvoir le lancer de la même manière.

--PFP Room PYNQ Board 3 (Jupyter Notebook)    Cela semble être un exemple d'exécution de l'exemple préparé à l'avance pour la carte PYNQ tout en utilisant l'environnement Upyter Notebook.

L'auteur du site FPGA Room continue d'écrire de nombreux autres articles utiles.

Production d'un circuit de réseau neuronal convolutif pour la reconnaissance de nombres manuscrits 1 (vue d'ensemble)

Exemple d'utilisation de BNN-PYNQ sur la carte PYNQ: J'ai un exemple Cifar10 que j'ai déjà appris et que je l'exécute à partir de l'environnement de notebook Jupyter.

connpass FPGA Extreme Computing

connpass "PYNQ Festival" Extended Battle: FPGA Deep Learning Practice Social rassemblement

Interface Numéro de juin 2017 The World of Hard Computing ... Python ultra-rapide avec GPU et FPGA

Pourquoi les ingénieurs en logiciel devraient apprendre le FPGA en 2017 lorsque les emplois d'apprentissage automatique / Deep Learning augmentent

Récemment, l'université est occupée et je n'ai pas eu le temps d'écrire du HDL, donc je fais de la synthèse de haut niveau depuis 2015 environ. Avec l'outil de synthèse de haut niveau de Xilinx "Vivado HLS" (High-Level Synthesis), vous pouvez synthétiser en un seul coup. J'ai pensé: "C'est aussi simple que ça." À l'université, nous n'utilisons pas Verilog HDL (le langage de description matériel couramment utilisé dans les FPGA) et n'enseignons que la synthèse de haut niveau. Tous les étudiants utilisent déjà FPGA comme s'ils écrivaient du code logiciel.

── Que puis-je utiliser pour la bibliothèque de deep learning?

Nakahara TensorFlow, Caffe, Chainer, etc. peuvent être utilisés. De plus, étant donné que divers frameworks sont utilisés selon l'entreprise ou le service, il prend en charge plusieurs frameworks. Si vous écrivez le code en Python, faites preuve d'ingéniosité, mettez-le en C ++ et placez-le dans l'outil Xilinx, cela fonctionnera.

── Est-ce que ça va si vous pouvez écrire Python pour travailler sur le deep learning avec FPGA?

Nakahara va bien. Vous n'avez même pas besoin d'écrire en langage C.

--SlideShare J'aurais dû être super-initié à l'apprentissage automatique ... Je touchais FPGA avant de le savoir

--qiita Il est temps pour les programmeurs de toucher FPGA!

Le bloc-notes Jupyter est également utilisé dans l'exemple de fonctionnement de la reconnaissance de caractères numériques manuscrits (MNIST) par apprentissage en profondeur (CNN) dans cet article. Par conséquent, il est facile de confirmer le contenu comme si l'une des entrées et sorties était une image.

github https://github.com/HirokiNakahara/GUINNESS

Remarque: Vous pouvez trouver des vidéos en recherchant PYNQ sur YouTube.

Le Deep Learning n'utilise pas la fonction sigmoïde comme l'ancien réseau neuronal. Par conséquent, il est difficile que la sensibilité devienne mauvaise en raison de la saturation. En utilisant ce fait, il est possible d'exprimer le poids indiquant la connexion avec un type de données ayant une faible largeur de bits. L'utilisation du type INT8 rend les données beaucoup plus petites que l'utilisation de la virgule flottante, et le calcul est plus simple, ce qui facilite le circuit.

Une bibliothèque algébrique linéaire BLAS est fournie. Cela facilite l'utilisation d'algorithmes écrits dans des bibliothèques standard. Même dans ce cas, il est optimisé pour les entiers 16 bits et 8 bits.

GoogLeNet SSD FCN-AlexNet AlexNet VGG

Il semble y avoir des informations disponibles pour générer le circuit.

--Article d'Altera Pourquoi FPGA est le meilleur pour l'implémentation CNN --Intel News Release [Intel réalise une «IA en temps réel» pour la nouvelle plate-forme d'apprentissage en profondeur haute vitesse de Microsoft](https://newsroom.intel.co.jp/news/intel-delivers-real-time-ai-microsofts -plate-forme-d'apprentissage en profondeur accéléré /)


Les personnes suivantes ont également écrit de nombreux articles liés au FPGA. Récemment, un article dans un magazine publié par CQ a également été écrit. Hidemi's Idea Note Github Hidemi Ishihara

Recommended Posts

Enquête sur PYNQ - Faisons du Deep Learning avec FPGA en utilisant Python -
Essayez le Deep Learning avec FPGA
Apprentissage profond × Python
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (1)
Réflexion sur les tactiques de croissance de type attaque de groupe en utilisant l'apprentissage en profondeur
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Une histoire de prédiction du taux de change avec Deep Learning
Apprendre Python avec ChemTHEATER 05-1
Python: pratique du Deep Learning
Apprendre Python avec ChemTHEATER 02
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (3)
Apprendre Python avec ChemTHEATER 01
Faites Houdini avec Python3! !! !!
Python: réglage du Deep Learning
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (2)
Ce que j'ai appris sur l'IA / l'apprentissage automatique avec Python (4)
Système de recommandation utilisant la décomposition matricielle [Apprentissage non supervisé avec python Chapitre 10]
Estimation de la courbe des signes avec module d'apprentissage en profondeur (python) + LSTM
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
[S3] CRUD avec S3 utilisant Python [Python]
Utilisation de Quaternion avec Python ~ numpy-quaternion ~
Faites Django avec CodeStar (Python3.8, Django2.1.15)
[Python] Utilisation d'OpenCV avec Python (basique)
À propos de l'apprentissage avec Google Colab
Apprentissage automatique avec Python! Préparation
Apprentissage profond du noyau avec Pyro
Commencer avec l'apprentissage automatique Python
Traitement itératif Python appris avec ChemoInfomatics
Générez des Pokémon avec Deep Learning
Utiliser OpenCV avec Python @Mac
Envoyer en utilisant Python avec Gmail
Perceptron multi-couches pour le Deep Learning (Deep Learning avec Python; Série MPS Yokohama Deep Learning)
La gestion du tensorflow a soudainement cessé de fonctionner en utilisant le GPU dans l'apprentissage en profondeur
Compléter python avec emacs en utilisant company-jedi
Moyenne harmonique par Python (en utilisant SciPy)
Identification de la race de chat avec Deep Learning
Remarque Python: à propos de la comparaison en utilisant is
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Utilisation de Rstan de Python avec PypeR
Faites de l'art ASCII avec l'apprentissage en profondeur
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
À propos de la gestion de projet de deep learning (DNN)
Expérience d'apprentissage Perceptron apprise avec Python
Que faire avec la sortie de PYTHON?
Faisons du scraping d'images avec Python
Vérifiez la forme de squat avec l'apprentissage en profondeur
J'ai essayé l'apprentissage en profondeur avec Theano
Prévisions des ventes de collations avec apprentissage en profondeur
Faites sourire les gens avec le Deep Learning
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
Python | Ce que vous pouvez faire avec Python
(python) Principes de base du chaînage de la bibliothèque d'apprentissage en profondeur
Vulkan compute avec Python avec VkInline et pense à l'apprentissage automatique GPU et plus