Utilizzare Tensorflow in ambiente Microsoft Windows

Tensorflow è un framework open source, realizzato da google, che viene utilizzato per il deep learning e che consente di implementare velocemente reti neurali di grande complessità.

Una delle caratteristiche che lo rende particolarmente diffuso è la sua capacità di utilizzare le schede grafiche Nvidia per il training delle reti, operazione molto gravosa anche per i moderni microprocessori.

Le operazioni di training possono essere multiplexate sui numerosi core presenti in una qualunque scheda grafica; infatti una scheda grafica può contenere migliaia di cores, che consentono di scalare i tempi di calcolo di qualche ordine di grandezza rispetto ai 4/8 cores di un comune microprocessore.

Normalmente Tensorflow viene implementato in Python. L’ambiente tipico è una macchina linux (ubuntu ?) su cui è molto facile installare i moduli richiesti per le elaborazioni.

Purtroppo l’utilizzo di Tensorflow all’interno di una virtual machine è limitato dal fatto che la virtual machine non consente l’accesso diretto alle risorse gpu della macchina ospite, di conseguenza non si possono utilizzare i moduli per l’elaborazione su scheda grafica. Pertanto il training in una macchine virtuale sarà sempre molto limitato.

Certo, si potrà sempre creare una seconda partizione sul disco fisso su cui installare in dual boot una macchina linux.

Questo comporta oneri che non sempre si giustificano, in termini di tempo di installazione, di spazio su disco, ecc. ecc. .

Esiste, tuttavia, una opportunità più semplice, per chi possiede una macchina windows: installare l’ambiente Tensorflow su windows e sfruttare le risorse della scheda grafica in maniera nativa.

Per far ciò è necessario installare il toolkit cuda di nvidia, al link https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal

Non ci si deve lasciar prendere dalla tentazione di installare la release di CUDA più recente in quanto Tensorflow è stato compilato per funzionare unicamente con la release 10.1.

Perciò è necessario accedere alle release legacy presenti nella pagina summenzionata e scaricare e installare la versione 10.1. Questa può essere installata anche sopra una precedente installazione di una versione più recente, senza problemi.

Ovviamente, per funzionare, Tensorflow necessita dell’ambiente python, quindi è necessario installare la release più recente della versione 3 dell’interprete Python, sulla relativa pagina python.org. Ricordarsi di installare anche l’ambiente pip, presente tra le opzioni.

Una volta installato Python, si può accedere al relativo ambiente da una finestra del dos, semplicemente scrivendo

python

Di qui si deve installare il modulo tensorflow

pip install tensorflow

e poi i datasets

pip install tensorflow-datasets

a questo punto si può verificare se funziona il tutto importando il relativo modulo

import tensorflow_datasets as tfds

Se il modulo CUDA è stato caricato correttamente non si dovrebbero presentare errori e il risultato dovrebbe essere il seguente:

I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll

ESP32-CAM

Per programmare questa ottima schedina sono necessarie alcune precauzioni di base.

Dato che non sono presenti connettori usb, si rende indispensabile utilizzare un convertitore USB/UART, preferibilmente con la possibilità di scelta tra tensioni a 5V oppure a 3,3v.

Infatti, il modulo ESP32 necessita di una tensione di alimentazione a 5v, però accetta i comandi sui suoi terminali con tensioni a 3,3v. Questo vuol dire che se lo alimentassimo con un convertitore a 5v, si potrebbero bruciare i pin di ingresso del chip ftdi.

L’unica possibilità è utilizzare un modulo convertitore a 3,3v e una alimentazione separata dell’ESP32 a 5v, prelevata magari da un alimentatore per telefonini.

Come convertitore io utilizzo prevalentemente l’ottimo FT232RL, visibile in figura, oppure quello scaricabile da futura elettronica, al link https://www.futurashop.it/FT232USBUARTA_USB_UART :

usb-ttl-ft232rl-pinout

Il ponticello lo rende utilizzabile anche a 3,3v. Questo modulo va collegato all’ESP32-CAM unicamente con i terminali RX, TX, GND, rispettivamente ai piedini 10 (U0TXD), 11 (U0RXD), 2 (GND)

120602 - ESP32-CAM Development Board , da DFRobot a € 13,50 su ...

L’alimentazione va fornita al terminale 1 (5v) e 9 (GND) collegando i terminali di un piccolo alimentatore usb.

Programmazione

Per programmare il modulo è necessario scaricare le librerie che sono state indicate nell’altro articolo disponibile a questo link: http://www.fattodate.org/2019/10/30/configurare-esp32-cam/

Dopo aver compilato il codice arduino, prima di caricarlo sulla scheda è necessario ponticellare il terminale 14 (GPIO0) verso massa e poi applicare il bottone di reset.

Successivamente al caricamento, se tutto sarà andato per il verso giusto, si dovrà fornire un altro reset (prima si dovrà rimuovere il ponticello del terminale 14) e visualizzare i parametri con cui è stato programmato collegando il monitor seriale con la velocità di 115200 baud.

Il monitor fornirà l’indirizzo IP della scheda.

Il Coronavirus si può curare ?

Sembra proprio di sì…

L’Ospedale di Mantova e quello di Pavia hanno sperimentato con successo questa terapia, salvando pazienti in terapia intensiva.
Perché nessuno ne parla?

Forse perché scombussolerebbe i piani di preparazione del vaccino “tana libera tutti” ?

Da contro.tv di Massimo Mazzucco

Configurare Alphabot per Raspberry

Per la configurazione di Alphabot con Raspberry è preferibile adottare una modalità di accesso remoto, magari con openvnc.

Per utilizzarlo è necessario abilitarlo dal menu con

sudo raspi-config

Si deve scompattare la cartella compressa distribuita con Alphabot che ha la seguente struttura:

Arduino …

Raspberry

+ Alphabot

++mjpg-streamer

++python

++Web-Control

Le cose importanti si trovano dentro Web-Control, in particolare vi si trova il file main.py che contiene un semplice eseguibile che trasforma il raspberry in un server Web a tutti gli effetti.

Per farlo utilizza una libreria python che si chiama bottle. Si installa con:

pip install bottle

Successivamente sarà necessario dare i permessi di esecuzione (777) a mjpeg_streamer che si trova dentro mjpeg_streamer_experimental.

A questo punto è sufficiente eseguire

python main.py

Il server sarà raggiungibile all’indirizzo

http://192.168.xxx.xxx:8000

dal quale si potrà controllare il robot con dei semplici comandi direzionali. Lo streaming vero e proprio sarà disponibile alla porta 8080.

Openvino – download dei modelli di inferenza in formato IR

Per poter utilizzare openvino con i modelli già predisposti da intel è necessario averli in formato ottimizzato.

Per far ciò è sufficiente accedere alla directory

/opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader

qui si deve lanciare l’aggiornamento delle dipendenze:

python3 -mpip install –user -r ./requirements.in

e successivamente si può lanciare il download di tutti i modelli:

./downloader.py –all

Questo comando trasferirà tutti i modelli nella directory intel, pronti per essere utilizzati.

OpenVino – creare i progetti demo con visual studio 2019

Per iniziare ad usare OpenVino è possibile utilizzare i modelli demo, contenuti nel direttorio:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\open_model_zoo\demos

Prima di utilizzarli è necessario generare i progetti visual studio per ciascun demo. E’ sufficiente lanciare il comando:

build_demos_msvc.bat

Questo lancerà tutta una serie di comandi cmake, uno per ogni progetto, generando tutti i progetti all’interno del direttorio:

C:\Users\NomeUtente\Documents\Intel\OpenVINO\omz_demos_build

Questi si potranno lanciare nell’IDE visual studio uno alla volta oppure utilizzando la comoda soluzione demos.sln che li genererà tutti insieme.

Il risultato sarà compilato nel direttorio:

C:\Users\NomeUtente\Documents\Intel\OpenVINO\omz_demos_build\intel64\Debug

Ovviamente si potranno compilare anche in versione Release.

Prima di lanciare uno qualsiasi degli eseguibili generati è necessario impostare alcune variabili d’ambiente. E’ sufficiente eseguire il comando setupvars.bat che si trova in:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\bin

e nello stesso prompt andare nel direttorio dove si trovano gli eseguibili generati e eseguire da lì i programmi.

OpenVino – scaricare i modelli di apprendimento per Inferenza

Dopo aver configurato OpenVino e scaricato tutte le dipendenze, incluso python3, per eseguire inferenze sui diversi modelli disponibili è necessario scaricare i modelli disponibili online.

Questo modelli sono file con estensione .xml e .bin e ve ne sono per ogni tipo di inferenza, come face detection, pose detection, car detection e così via.

Per scaricare questi documenti è necessario aprire una finestra del prompt e eseguire il comando:

python ./downloader.py –all –output_dir c:/intel/models

Questo scaricherà tutto l’albero dei modelli di inferenza nel direttorio indicato.

Il comando downloader.py si trova nel direttorio:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\open_model_zoo\tools\downloader

Antony R. Mawson – studio sui vaccini

https://archive.md/oOMgY#selection-2289.0-17667.14

In questo studio si mettono in evidenza, ricercando attraverso fonti ottimamente documentate, i reali rischi a cui si va incontro con le vaccinazioni di massa.

Fa bene studiare qualcosa di scientifico, ogni tanto.

Qui il link https://sadefenza.blogspot.com/2019/03/vaccinato-vs-non-vaccinato-studio-di.html?m=1

Vaccinazioni di massa – valutiamo scientificamente i rischi

In questo articolo proviamo a raccontare quello che Paolo De Bernardi ha riportato in un suo documento, in maniera quasi enciclopedica, in relazione a quali sono le reali implicazioni della vaccinazione di massa.

L’articolo elenca in maniera davvero scientifica, citando fonte per fonte, gli avvenimenti che hanno condotto alla sciagurata situazione attuale italiana – e non solo – degli obblighi vaccinali, arrivando a smontare le finte argomentazioni scientifiche portate a loro supporto da cosiddetti “medici” e “scienziati”.

Il documento si trova in http://www.dmi.unipg.it/~mamone/sci-dem/nuocontri_1/debernardi.pdf .

Compilare wxWidgets

Il progetto wxwidgets è davvero fenomenale: un immenso framework di librerie cross-platform che consente di creare facilmente applicativi c++, facili e di bell’aspetto.

Prima di utilizzarli è necessario compilarli, per ottenere librerie dll e lib da usare con il compilatore visual c++.

Infatti, pur essendo disponibili delle librerie preconfezionate, sul sito wxwidgets.org, queste non sempre sono adatte al compilatore che si sta usando. Ricordo, infatti, che i file lib necessari per la compilazione con librerie statiche e dinamiche sono dipendenti dal compilatore in uso.

Per usarle con visual c++ è sufficiente aprire il progetto visual studio che si trova nel direttorio build/msw/wx_vc16.sln (o quello corrispondente alla versione del compilatore in uso). Se non esiste la soluzione adatta al proprio compilatore, se ne può aprire una di una versione precedente e chiedere al compilatore di aggiornarla alla versione corrente.

Una volta aperto il progetto è necessario impostare la versione (Debug DLL o Release Dll) che si vuole compilare, a seconda che si voglia anche effettuare il debug con i simboli della libreria e successivamente l’architettura (x86 o x64).

A questo punto è sufficiente dare il comando di compilazione e alla fine del processo di compilazione si ritroveranno le dll e i file lib di tutte le librerie wxwidgets nel direttorio lib/vc_x64_dll. Per comodità io rinomino il direttorio aggiungendo anche il numero di versione del compilatore (vc142_x64_dll) per poter tenere distinte e ben comprensibili le varie versioni compilate.

Questo direttorio va aggiunto al PATH di sistema per le dll, e al progetto dove si trova indicato i path delle librerie.

Per i file include si possono fornire i path include, dove sono presenti sia i file msvc che quelli standard.

A quel punto si possono utilizzare le librerie.