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.
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.
Lancez Zynq sur Python! PYNQ = Python + Zynq --Xilinx Contexte du développement PYNQ et orientation future
Implémentation du deep learning par FPGA --qiita Essayez le Deep Learning avec FPGA --Sélectionnez les concombres
Ceci est une implémentation de la carte PYNQ utilisant BNN-PYNQ. -J'apprends de Trier "Cucumber" par apprentissage en profondeur avec TensorFlow.
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
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