Colorear imágenes con Inteligencia Artificial

Cada día se ve con más claridad que la Inteligencia Artificial acabara presente en todos los ámbitos de nuestra vida. Es la nueva era de la industrialización.

La Inteligencia Artificial ya esta a nuestro alrededor, aunque no nos demos cuenta. Móviles, ordenadores, televisores o vehículos ya la utilizan, y cada vez más dispositivos se sumaran a esta nueva realidad.

Hace unos días Adobe presento el nuevo Photoshop, el cual ya incorpora un buen número de herramientas que hacen uso de la Inteligencia Artificial para el diseño y modificación de fotografías.

Esta misma semana Tesla, el fabricante número uno en vehículos eléctricos, a empezado a distribuir una versión beta de su famoso Autopilot, de momento solo para unos pocos usuarios, que llevara a esta marca a ser la primera en la conducción autónoma.

Todos los procesos ya comienzan a girar en torno a la Inteligencia Artificial, y la fotografía y su manipulación no podían quedar al margen.

Aunque es cierto que ya prácticamente no se imprimen en papel las fotografías, aun contamos en nuestros hogares con muchas de ellas en este formato. Incluso, en muchos casos, ya han sido digitalizadas y se encuentran en formato digital.

Imagen original, en blanco y negro, de la entrada del blog.

Hasta ahora, colorear una fotografía, requeria de un complejo proceso, y sobre todo, conocer bien los colores y herramientas que aplicábamos en tales procesos. Con la Inteligencia Artificial, el proceso de colorear una imagen se realiza de forma automática y en solo unos segundos.

Si tu intención es colorear esas viejas fotografías puedes utilizar el sitio web deepai.org. Tan solo tienes que seleccionar la imagen a colorear, el proceso es totalmente automático y gratuito, en unos segundos tendrás tu imagen coloreada.

Imagen original en blanco y negro.

Resultado al ser coloreada por la Inteligencia Artificial.

Puede que aun el resultado no sea del todo perfecto, pero en muy poco tiempo estas técnicas serán perfeccionadas cada vez más, logrando resultados aun más espectaculares.

Share

Photopea el Photoshop gratuito basado en web

Puede, no lo se, que Photoshop no sea el mejor programa de edición y modificación de imágenes, pero sin ninguna duda es el más popular, conocido y utilizado en todo el mundo.

Photopea es una utilidad web muy similar a Photoshop. De hecho, utiliza las mismas teclas rápidas que podemos utilizar en Photoshop para realizar las diferentes tareas. Si ya has utilizado Photoshop con anterioridad, no te costará nada desenvolverte en Photopea.

Como hemos dicho, Photopea es una aplicación web, la puedes utilizar desde tu navegador favorito. Este es el enlace a Photopea.

Puede que Photopea no sea un Photoshop completo, pero para la mayoría de usuarios, las herramientas que nos aporta esta aplicación web son más que suficientes para realizar las tareas habituales.

Con Photopea podrás seguir cualquier curso de Photoshop, y realizar esos pequeños retoques en tus fotografías, realizar practicas, ejercicios o cualquier otra actividad que necesites.

Una herramienta versátil, que no requiere de instalación en nuestro ordenador, no ocupa espacio en tu disco duro, se puede utilizar en cualquier ordenador, cómodamente desde tu navegador web favorito, alli donde te encuentres, y sorprendentemente, de momento, es gratuita.

Por defecto, la interfaz de Photopea, viene en ingles, pero si para ti esto es un problema, puedes cambiar la configuración del idioma a más de 30 lenguas diferentes, incluyendo el castellano (español).

Al seleccionar un proyecto nuevo, tienes multiples plantillas ya rediseñadas para realizar tus tareas. De tantas plantillas que hay, existe un buscador para que te resulte más fácil encontrar una que se adapte a la tarea que necesitas realizar.

También te permite seleccionar una gran variedad de tamaños recopilados en varios grupos; social, impresión, foto, pantalla, móvil, anuncios o iconos. Todos ellos disponibles con un solo click de ratón.

Photoshop, sin ninguna duda es una gran aplicación para crear y retocar imágenes, pero Photopea no se queda atrás, parece verdaderamente un clon de Photoshop.

Share

Brew, el gestor de paquetes para Mac.

Por lo general, en Mac resulta mucho más fácil instalar aplicaciones que en Windows, pero linux les gana por goleada, su sistema de instalación y actualización de paquetes es simplemente genial.

Brew nos aporta la versatilidad para la instalación de paquetes que tiene Linux. Brew es un gestor de paquetes para software libre que nos permitirá instalar todas aquellas aplicaciones que necesitamos, con el mínimo esfuerzo.

Aunque en un principio fue creado para sistemas Mac, hoy en día también puede ser utilizado en entornos Linux, beneficiando a sus usuarios del inmenso repositorio del que dispone, y que crece constantemente. 

Brew es una herramienta fundamental, que no debería faltar en tu sistema operativo. Su instalación es realmente sencilla, tan solo debes abrir una terminal e introducir el siguiente comando:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Si no tienes instalado en tu sistema la aplicación Xcode, debes instalar las herramientas de línea de comandos (CLT) de Xcode antes de instalar brew, con el siguiente comando:

xcode-select – install

Puedes saber más de Brew visitando su pagina web, aquí.

Para realizar la instalación de un paquete:

brew install nombre-del-paquete

Para ver los paquetes que se encuentran desactualizados.

brew outdated

Para actualizar los repositorios y la información de los paquetes que tenemos instalados, este comando no actualiza los paquetes en si.

brew update

Para actualizar todos los paquetes que estan desactualizados.

brew upgrade

Si solo queremos actualizar un paquete determinado usamos el comando siguiente.

brew upgrade nombre-del-paquete

Si necesitas desinstalar alguno de los paquete utiliza.

brew uninstall nombre-del-paquete

Ver los paquetes instalados.

brew list

Ten en cuenta que seguramente vas a ver una lista con muchos más paquetes de los que tu has instalado. Esto es debido a que muchos paquetes necesitan de otros paquetes para su funcionamiento, así que cuando instalas un determinado paquete o aplicación, si esta depende de otros paquetes, realizará de forma transparente la instalación de dichos paquetes o dependencias.

Si quieres obtener más información de un determinado paquete.

brew list nombre-del-paquete

Para buscar un paquete en los repositorios.

brew search nombre-o-parte-del-nombre-a-buscar

El comando “search“, te permite buscar un determinado paquete o todos aquellos que incluyen la palabra de busqueda en los repositorios de brew.

Por ejemplo si buscamos “man“, esto es lo que nos mostrará.

byteman                          mandoc                           riemann
commandbox                       mandown                          riemann-client
cppman                           manticoresearch                  schema-evolution-manager
foreman                          mecab-jumandic                   scm-manager
gearman                          midnight-commander               spaceman-diff
git-credential-manager           modman                           stdman
go-md2man                        myman                            stuntman
goreman                          newman                           talisman
helmsman                         nlohmann-json                    todoman
help2man                         pacman4console                   tre-command
juman                            pixman ✔                         watchman
jumanpp                          pod2man                          xmltoman
libflowmanager                   podman                           ykman
man-db                           powerman
man2html                         rds-command-line-tools

Como puedes ver, todos los resultados contienen la palabra “man“, que hemos utilizado para nuestra busqueda.

Los paquetes remarcados en negrita y con un check de verificación significa que ya lo tenemos instalado en nuestro sistema.

Con este útil comando podemos realizar la busqueda de los paquetes que necesitamos instalar.

Si por algún motivo no quieres que un determinado paquete se actualice, aunque esto no es muy recomendable, puedes utilizar el siguiente comando para impedir que dicho paquete se actualice al realizar un upgrade general.

brew pin nombre-del-paquete

Para que dicho paquete pueda ser actualizado nuevamente hay que desbloquear la acción anterior con.

brew unpin nombre-del-paquete

Para mostrar la vesión de brew instalada así como otra información de interes; versiones de Ruby, Git, Curl, macOS, CLT, Xcode, etc., rutas a diferentes directorios y otra información, utilizamos el comando.

brew config

Para ver los comandos disponibles en brew.

brew help

Espero que te sea de utilidad esta fabulosa herramienta.

Share

Gráficas utilizando CanvasJS

Las gráficas nos ayudan a visualizar un conjunto de datos para que podamos comparar rápidamente sus valores. 

Una tabla de datos en una hoja puede resultar difícil de analizar y tardaremos más tiempo en comprender y comparar los valores. En una gráfica todo se ve mucho más claro solo con un vistazo.

Aquí podemos ver un simple ejemplo para la creación de gráficas utilizando la librería CanvasJS.

Con esta librería podemos crear rápidamente gráficas dinámicas e integrarlas en la web.

Código html:

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/>
    
    <title>Ejemplos Graficas</title>
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-6">
            <div id="pieChart" style="height: 360px; width: 100%;">
            </div>
            </div>
            <div class="col-md-6">
            <div id="columnChart" style="height: 360px; width: 100%;">
            </div>
            </div>
        </div>
        </div>

    <script src="https://canvasjs.com/assets/script/canvasjs.min.js"> </script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script src="pack.js"></script>
</body>
</html>

Código javaScript:

var pieChartValues = [{
    y: 39.16,
    exploded: true,
    indexLabel: "Estados Unidos",
    color: "#1f77b4"
}, {
    y: 21.8,
    indexLabel: "Canada",
    color: "#ff7f0e"
}, {
    y: 21.45,
    indexLabel: "Europa",
    color: " #ffbb78"
}, {
    y: 5.56,
    indexLabel: "Malasia",
    color: "#d62728"
}, {
    y: 5.38,
    indexLabel: "Peru",
    color: "#98df8a"
}, {
    y: 3.73,
    indexLabel: "Bolivia",
    color: "#bcbd22"
}, {
    y: 2.92,
    indexLabel: "Tunez",
    color: "#f7b6d2"
}];
renderPieChart(pieChartValues);

function renderPieChart(values) {

    var chart = new CanvasJS.Chart("pieChart", {
        backgroundColor: "white",
        colorSet: "colorSet2",

        title: {
            text: "Pie Chart",
            fontFamily: "Verdana",
            fontSize: 25,
            fontWeight: "normal",
        },
        animationEnabled: true,
        data: [{
            indexLabelFontSize: 15,
            indexLabelFontFamily: "Monospace",
            indexLabelFontColor: "darkgrey",
            indexLabelLineColor: "darkgrey",
            indexLabelPlacement: "outside",
            type: "pie",
            showInLegend: false,
            toolTipContent: "<strong>#percent%</strong>",
            dataPoints: values
        }]
    });
    chart.render();
}
var columnChartValues = [{
    y: 936.04,
    label: "Paris",
    color: "#1f77b4"
}, {
    y: 391.84,
    label: "Londres",
    color: "#ff7f0e"
}, {
    y: 365.76,
    label: "Roma",
    color: " #ffbb78"
}, {
    y: 197.48,
    label: "Barcelona",
    color: "#d62728"
}, {
    y: 94.2,
    label: "Atenas",
    color: "#98df8a"
}, {
    y: 65.28,
    label: "Berlin",
    color: "#bcbd22"
}, {
    y: 51.2,
    label: "Madrid",
    color: "#f7b6d2"
}];
renderColumnChart(columnChartValues);

function renderColumnChart(values) {

    var chart = new CanvasJS.Chart("columnChart", {
        backgroundColor: "white",
        colorSet: "colorSet3",
        title: {
            text: "Datos por Ciudades",
            fontFamily: "Verdana",
            fontSize: 25,
            fontWeight: "normal",
        },
        animationEnabled: true,
        legend: {
            verticalAlign: "bottom",
            horizontalAlign: "center"
        },
        theme: "theme2",
        data: [

            {
                indexLabelFontSize: 15,
                indexLabelFontFamily: "Monospace",
                indexLabelFontColor: "darkgrey",
                indexLabelLineColor: "darkgrey",
                indexLabelPlacement: "outside",
                type: "column",
                showInLegend: false,
                legendMarkerColor: "grey",
                dataPoints: values
            }
        ]
    });

    chart.render();
}

Son dos ejemplos simples para ver el potencial que nos ofrece esta librería.

Puedes encontar más información aquí.

Share

Generar mapas con datos estadísticos, con Python y Plotly

Si necesitas representar diferentes datos estadísticos sobre un mapa del mundo o de un continente o zona del planeta determinado, existe una herramienta muy potente que te permite de forma fácil realizar esta tarea.

Con Python y la librería Plotly podrás mostrar tus datos estadísticos sobre diferentes zonas geográficas.

El código es bien sencillo, y es altamente configurable. Para que Plotly ubique los datos en cada país, es necesario incluir el nombre de dicho país en los datos, el nombre debe estar en formato internacional, por ejemplo “Estados Unidos” debe ser “United States of America“.

import funciones_db as db
import plotly.graph_objects as go
import plotly.offline as opy

datos = db.actores_paises()

fig = go.Figure(go.Choropleth(
    locations = datos['pais'],
    locationmode = "country names",
    z = datos['total'],
    text = datos['pais_a'],
    colorscale = 'Hot',
    autocolorscale = False,
    reversescale = True,
    marker_line_color = '#efefef',
    marker_line_width = 0.5,
    colorbar_ticksuffix = '%',
    colorbar_title = 'Actores',
    )
)

fig.update_layout(
    title_text = 'Número de Actores por Países',
    showlegend = False,
    geo = dict(
        scope = 'world',
        resolution = 50,
        projection_type = 'miller',
        showcoastlines = True,
        showocean = True,
        showcountries = True,
        oceancolor = '#eaeaea',
        lakecolor = '#eaeaea',
        coastlinecolor = '#dadada'
    )
)

fig.show()

En el ejemplo los datos se extraen de una base de datos.

  • locations: Indica el país al que pertenece el dato.
  • locationmode = “country names”: Indica la forma en la que se mostrara la información, es este caso por países. Si llos datos son para un determinado país y quieres mostrar los datos por provincias o estados, se debe cambiar este parametro.
  • colorscale: La paleta de colores que mostrará los datos. Algunas de las paletas disponibles; Brwnyl, Agsunset, Sunsetdark, Magenta, Sunset, Purpor, Purp, Tealgrn, Teal, Bluyl, Aggrnyl, Emrld, Darkmint, Blugrn, Mint, Pinkyl, Peach, Oryel, Redor, Burgyl, Burg, tempo, amp, speed, matter, algae, dense, deep, gray, ice, solar, haline, thermal, turbid, YlOrRd, YlOrBr, YlGnBu, YlGn, Reds, RdPu, RdBu, Purples, Greys, Greens, Rainbow. Lista completa, aqui.
  • scope: Es la parte del globo terraqueo que se mostrará. world, para mostrar todos los continentes. Otros valores para cada continente; “usa” | “europe” | “asia” | “africa” | “north america” | “south america”.
  • projection_type: Es el tipo de mapa que se representará. Admite los siguientes valores; equirectangular, mercator, orthographic, natural earth, kavrayskiy7, miller, robinson, eckert4, azimuthal equal area, azimuthal equidistant, conic equal area, conic conformal, conic equidistant, gnomonic, stereographic, mollweide, hammer, transverse mercator, albers usa, winkel tripel, aitoff, sinusoidal.
  • También es posible personalizar y mostrar/ocultar otros datos del mapa, como la separación de los paises o el color de los oceanos.
  • El código genera un archivo en html, que se abre directamente en el navegador por defecto del sistema.

Algunos ejemplos con Plotly, cambiando los parametros; colorscale, scope y projection_type.

Para visualizar los datos de cada país, tan solo debemos pasar el cursor del ratón por encima de dicho país.

Los mapas pueden ser facilmente incluidos en proyecto de dJango, directamento o a través de javascript.

Plotly es una herramienta muy completa, la cual también permite realizar infinidad de graficas estadisticas a parte de los mapas. Más información de esta completa libreria aqui.

Share