#CustomVision – Analizando imágenes en una Console App utilizando un proyecto de #CustomVision en #Docker Container

Buenas !

Este es un post especial, ya que es el 1ro que escribo completamente desde mi . Estoy seguro que  Javier (@jsuarezruiz), Yeray (@JosueYeray), Braulio (@braulio_sl), Luis, Sara, Roberto y otros mac users estarían orgullosos de mi 😀

Basado en el post anterior, he compilado y ejecutado mi proyecto Custom Vision Marvel en Docker para Mac. La experiencia es buenísima, y bash también es una novedad interesante!

docker build -t elbruno/cvmarvel:3.0 .

01 doker build on mac

El siguiente paso es obtener en ID y ejecutar la misma.

03 docker list images and run image

El paso final es utilizar CURL para hacer una petición HTTP Post con una imagen para analizar. Es muy simple, salvo que me tomo unos minutos y unas búsquedas en bing el darme cuenta que hay utilizar el prefijo @ en la llamada desde la consola! Iron Fist detected !

curl -X POST http://127.0.0.1:8080/image -F imageData=@img1.jpg 

05 docker bash ls image analyzed and source image.png

Ok, el entorno de pruebas con Docker esta funcionando, así que ahora es momento de utilizar Visual Studio for Mac. En realidad la app es una .Net Core Console App, que podría crear en Visual Studio Code, pero esta es la excusa perfecta para comenzar a conocer Visual Studio for Mac.

Mi codigo de pruebas esta en Azure DevOps, así que después de sincronizar los repositorios, ya pude crear un nuevo proyecto a mi solución.

06 new netcore project in visual studio for mac

Un par de lineas de código C# en la console app y ya pude realizar el análisis de la imagen utilizando el contenedor con el proyecto de Custom Vision

07 console app in vs for mac detected image

El código es muy simple:

Happy coding!

Saludos @ Toronto

El Bruno

References

My Posts

Windows 10 and YOLOV2 for Object Detection Series

Advertisements

#CustomVision – Analyzing images in a Console App using a #CustomVision project in a #Docker Container

Hi !

This is a special post. It’s the 1st one I write completely in my MacBook, so I’m sure that Javier (@jsuarezruiz), Yeray (@JosueYeray), Braulio (@braulio_sl), Luis, Sara, Roberto and other mac users will be proud of me 😀

So, I build and run my Custom Vision Marvel project in Docker for Mac. Smooth build and also a fast one!

docker build -t elbruno/cvmarvel:3.0 .

01 doker build on mac

Then get the image id and run the image

03 docker list images and run image

Final step is to play around with curl in bash to post the image (the file name with @ prefix took me some bing searches). Iron Fist detected !

curl -X POST http://127.0.0.1:8080/image -F imageData=@img1.jpg 

05 docker bash ls image analyzed and source image.png

Ok, the environment is working, so it’s time to create a .NetCore Console App to test this using amazing C# code. I have all my code in Azure Dev Ops, so I sync my repo and  added a new project in my current solution

06 new netcore project in visual studio for mac

Some C# lines in my console app and I was able to analyze a local picture using the Custom Vision Model in a container

07 console app in vs for mac detected image

The source code is very simple

Happy coding!

Greetings @ Toronto

El Bruno

References

My Posts

Windows 10 and YOLOV2 for Object Detection Series

#CustomVision – Utilizando un proyecto Custom Vision en un #Docker Container local

Buenas !

Ahora que ya tengo en funcionamiento Docker en Windows 10 es tiempo de exportar un proyecto de CustomVision y ejecutarlo dentro de un container.

Cuando exportamos hay 2 version disponibles: Linux or Windows

00 CV exported to docker

En mi caso no pude compilar la versión de Windows, asi que trabajare con la versión de Linux. El zip que descargamos tiene varios archivos, como el DockerFile con la definición del container, el modelo de ML, los archivos python para leer y realizar análisis de imagenes y varios archivos mas.

FROM python:3.5

ADD app /app

RUN pip install –upgrade pip
RUN pip install -r /app/requirements.txt

# Expose the port
EXPOSE 80

# Set the working directory
WORKDIR /app

# Run the flask server for the endpoints
CMD python app.py

Esta imagen utiliza Python 3.5, y el comando para compilar la imagen es

docker build -t elbruno/cvmarvel:3.0 .

05 CV docker build image in windows

Un par de segundos después, la imagen esta compilada y disponible en la store local

docker image ls

07 Docker local images

Ahora que se mi IMAGE ID, ya puedo iniciar la ejecución de la imagen. En este caso, utilizare el puerto 8080

docker run -p 127.0.0.1:8080:80 -d ddd1623ee694

En este ejemplo utilizare PowerShell y el comando Invoke-WebRequest para realizar una petición HTTP Post con una imagen

Invoke-WebRequest -uri “http://127.0.0.1:8080/image” -Method Post -Infile “D:\docker\test01.jpg” -ContentType ‘image/jpg’

06 CV running and testing an image on docker

El resultado detecta una imagen, sin embargo no tengo todo el resultado Json disponible. Para esto, agregare un archivo de salida en la petición para guardar en el mismo el resultado del análisis de la imagen. Ahora ya puedo ver que detecta Iron Fist y a Venom!

Invoke-WebRequest -uri “http://127.0.0.1:8080/image” -Method Post -Infile “D:\docker\test01.jpg” -Outfile “D:\docker\result.json” -ContentType ‘image/jpg’

08 docker results in visual studio code

Happy coding!

Greetings @ Burlington

El Bruno

References

My Posts

Windows 10 and YOLOV2 for Object Detection Series

#CustomVision – Running a Custom Vision project in a local #Docker Container

Hi !

So now that I have Docker running in Windows 10, it’s time to use a Custom Vision model in Windows hosted in Docker container.

There are 2 version available to export from CustomVision.ai for each one the projects: Linux or Windows

00 CV exported to docker

I could not sucessfully built the Windows version, so I’ll work with the Linux one. Once exported the zip file have a set of python files to tun the model, the model file (model.pb) and a Dockerfile to build the docker image.

FROM python:3.5

ADD app /app

RUN pip install –upgrade pip
RUN pip install -r /app/requirements.txt

# Expose the port
EXPOSE 80

# Set the working directory
WORKDIR /app

# Run the flask server for the endpoints
CMD python app.py

The image uses Python 3.5, and the build command is as simple as

docker build -t elbruno/cvmarvel:3.0 .

05 CV docker build image in windows

After a couple of seconds, the image is build in the local store

docker image ls

07 Docker local images

Once I have my IMAGE ID, it’s time to start the image. For this demo, I’ll use the port 8080

docker run -p 127.0.0.1:8080:80 -d ddd1623ee694

And then I can submit an image using Invoke-WebRequest and view the results directly in PowerShell

Invoke-WebRequest -uri “http://127.0.0.1:8080/image” -Method Post -Infile “D:\docker\test01.jpg” -ContentType ‘image/jpg’

06 CV running and testing an image on docker

In order to get the complete output of the POST request, I must add an OutFile into the PowerShell comand. And in the complete output we can see some Iron Fist and Venom results!

Invoke-WebRequest -uri “http://127.0.0.1:8080/image” -Method Post -Infile “D:\docker\test01.jpg” -Outfile “D:\docker\result.json” -ContentType ‘image/jpg’

08 docker results in visual studio code

Happy coding!

Greetings @ Toronto

El Bruno

References

My Posts

Windows 10 and YOLOV2 for Object Detection Series

#PowerShell – Download all MS Ignite videos and slides in a single click (thanks @mderooij!)

Hi !

Last week I shared a powershell script created by Jon Galloway to download videosn from Channel 9. So, Microsoft Ignite is finished, and someone pick the idea and created a similar one which also includes video and slides download features.

We need to thanks to Michel de Rooij (@mderooij), who is the author of the powershell script to download materials from Microsoft Ignite 2017.

I1

Like in the previous one, we have a couple of parameters to define some filters, like video quality. It took me almost a full day to download all the materials and at the end I finished downloading +420GB which includes 785 PowerPoint Slides and 681 sessions videos.

I2

Happy Coding!

Greetings @ Toronto

El Bruno

References

#PowerShell – Descarga todos los videos y presentaciones de MS Ignite en un click (gracias @mderooij!)

Hola!

La semana pasada compartí un script creado por Jon Galloway para descargar videos desde Channel 9. Pues bien, no se ha hecho esperar las actualizaciones del mismo y ya podemos encontrar otro PowerShell Script, mucho más actual.

Michel de Rooij (@mderooij), ha creado uno para descargar todo el contenido publicado de Microsoft Ignite 2017.

I1

Como en el anterior, tenemos varias opciones para definir el tipo de contenido a descargar, la calidad de los videos, presentaciones, etc,

Estos son bastante GBs de contenido. En mi caso habiendo descargado solo 50 de 1633 elementos ya llevo casi 20 GBs de contenidos

I2

Happy Coding!

Saludos @ Toronto

El Bruno

References

#PowerShell – Script to download #Channel9 videos (thanks @jongalloway!)

Hi!

These are hardware days, so this is time for a quick post. When I’m offline and travelling, I always try to bring with me some videos to take advantage of the time and learn something new. Channel 9 is a great source of materials and now thanks to Jon Galloway (@jongalloway ), downloading videos from C9 will be much more easies.

The installation steps are very easy, in 2 lines we have the main ps1 locally ready to be used.

I1

And then, it’s a matter of tries to get to the correct format for the RSS feed to download videos. After a couple of test I learned the following steps to make it work

If I want to download some videos on the Microsoft Research category, I can browse them using the next URL

https://channel9.msdn.com/Shows/Microsoft-Research

So, now I need to add the sufix “/rss/” at the end of the url and the url will reconvert into a valid one to be used on the script

https://s.ch9.ms/Shows/Microsoft-Research/rss/

After this, the script also gives us some options for filtering videos, quality, download folder, and more

I2

Happy downloading!

Greetings @ Toronto

El Bruno

References

#PowerShell – Script para descargar videos de #Channel9

Hola!

Post rápido de jueves que hoy es día de hardware. Si alguna vez te enfrentas con una situación donde tienes que viajar y quieres bajarte un par de videos de Channel 9 para matar el rato. El siguiente PowerShell Script de Jon Galloway (@jongalloway ), te puede ahorrar bastante tiempo.

La instalación del mismo es bastante simple

I1

Y luego solo queda aprender cómo poner el feed correcto para que el mismo funcione. Despues de un par de pruebas y errores, llegue a la siguiente conclusión

Si por ejemplo quieres bajar todos los videos que están en la categoría de Microsoft Research con la siguiente URL

https://channel9.msdn.com/Shows/Microsoft-Research

tienes que agregar el sufijo “/rss/” al final de la url y la misma se convertirá en un feed correcto para ser utilizado en el script

https://s.ch9.ms/Shows/Microsoft-Research/rss/

A partir de ahora ya puedes descargar los videos, utilizando los comandos propios del script

I2

Happy downloading!

Saludos @ Toronto

El Bruno

References

ENG [#IOT] #RaspberryPi2 and #Windows10, Some admin tasks, like change password and change name (6 on N)

Hello!

New post for Windows 10 and Raspberry Pi 2 series

  1. Hardware and software (1 on N)
  2. Boot from SD card in the device (2 of N)
  3. Hello World mode! (3 of N)
  4. Visual Studio deployment process and Web Management app (4 on N)
  5. Hello Blinky !!! (5 on N)
  6. Some admin tasks, like change password and change name (6 on N)
  7. List of connected devices in the Raspberry Pi 2 (7 on N)
  8. Deploy an app using the deploy package (8 on N)

Yesterday there was Windows IoT Core for Raspberry PI 2 update. In the waht’s new section we can read most of the new features was focused on security. In example: now the web access, requires username and password to get into the device. For this reason, today I’ll take a pause in the source code samples and I’ll leave a couple of PowerShell commands to perform basic actions with our device.

1. Once the device is online, we need to open a PowerShell console in administrator mode

Clipboard02

2. In the console, run the following commands

  1. net start WinRM
  2. Set-Item WSMan:\localhost\Client\TrustedHosts – Value 169.254.186.22
  3. Remove – module psreadline – force
  4. Enter-PsSession – ComputerName 169.254.186.22 – Credential 169.254.186.22\Administrator

In each one of them we must replace the IP address for the corresponding with our device

3. The last command will open a window of Windows credentials so that the same enter credentials by default to access the device.

Clipboard04

By default the device credentials are

User: IP Address\Administrator

Password: P@ssw0rd

Clarification: (P {at} ssw {zero} rd ))

4. The authentication with the device takes approximately 30 seconds. Once is connected we can do the 2 most recommended actions: change the administrstor password and change the name of the device.

5. In order to change the administrator password, we should use the next command

NET user Administrator {new password}

6. In order to change the name of the device, let’s go with this one

setcomputername {new name}

For example, in the following command I have changed the name to my device and then restart it

Clipboard06

Once restarted, we can see the device with its new name in Windows IoT app watcher

Clipboard07

Now if, new password, new name, our device is a little more secure 😀

Greetings @ Madrid

/El Bruno

[#IOT] #RaspberryPi2 y #Windows10, Acciones de administrador, cambiar password, cambiar nombre, etc (6 de N)

Hola !

Nuevo post para la serie de Windows 10 y Raspberry Pi 2

  1. Hardware y software (1 de N)
  2. Montando la SD en el device (2 de N)
  3. Ahora si el Hello World ! (3 de N)
  4. Sobre el proceso de despliegue desde VS y Web Management app (4 de N)
  5. Hello Blinky !!! (5 de N)
  6. Acciones de administrador, cambiar password, cambiar nombre, etc (6 de N)
  7. Accediendo a los devices conectados (7 de N)
  8. Desplegando una app desde un paquete (8 de N)

Ayer hubo actualización de Windows IoT Core para Raspberry PI 2 y una de las novedades fue centrada en la seguridad. Ahora el acceso web, requiere usuario y password para acceder al mismo. Por eso, hoy toca una pausa en el código para dejar un par de comandos de PowerShell para realizar acciones básicas con nuestro device.

Conectar al device

1. Una vez que el device está en linea, debemos abrir una consola de PowerShell en modo administrador

Clipboard02

2. Con la consola abierta, ejecutamos los siguientes comandos

  1. net start WinRM
  2. Set-Item WSMan:\localhost\Client\TrustedHosts -Value 169.254.186.22
  3. remove-module psreadline -force
  4. Enter-PsSession -ComputerName 169.254.186.22 -Credential 169.254.186.22\Administrator

En cada uno de ellos debemos reemplazar la dirección IP por la correspondiente con nuestro device

3. El último comando abrirá una ventana de credenciales de Windows para que en la misma ingresemos las credenciales por defecto para acceder al device.

Clipboard04

Por defecto las credenciales son

User: IP Address\Administrator

Password: P@ssw0rd

Aclaración: (P {arroba} ssw {zero} rd)

4. La autenticación con el device tarda unos 30 segundos aproximadamente. Una vez conectados ya podemos realizar las 2 acciones más recomendables: cambiar la password del administrador y cambiar el nombre del device.

5. Para cambiar la password el comando que debemos ejecutar es el siguiente

net user Administrator {nueva password}

6. Para cambiar el nombre del device

setcomputername {nuevo nombre}

Por ejemplo, en el siguiente comando le he cambiado el nombre a mi device y luego reinicio el mismo

Clipboard06

Una vez reiniciado, podremos ver el device con su nuevo nombre en la app Windows IoT watcher

Clipboard07

Ahora si, nueva password, nuevo nombre, nuestro device está en un poco más seguro 😀

Saludos @ Madrid

/El Bruno