Coder Social home page Coder Social logo

googlevisiontest's Introduction

Proyecto de Javier Ramirez Neira

Google Could Vision + NodeJS + Api Rest + Kubernetes

Introducción

Proyecto que implementa una api rest que consume los servicios de google cloud vision para el análisis de imágenes. Desarrollado con nodejs y desplegado en kebernetes de google cloud.

Url Api para obtener listado de objetos presentes en la imagen:

HTTP POST http://35.238.97.163/objects

Url Api para indicar si la imagen presenta contenido explicito.

HTTP POST http://35.238.97.163/explicit

Instalación en Kubernetes

1- Crear cluster de kubernetes en google cloud

2- Desde la terminal de google cloud importar código desde github

git clone https://github.com/jramirezneira/googlevisiontest.git
cd googlevisiontest

2- Obtener credenciales para el Registro de contenedores de Google

gcloud auth configure-docker

3- Construir imagen del proyecto

docker build -t gcr.io/[PROJECT_ID]/app:v1 .  //reemplazar [PROJECT_ID] por el id del proyecto en google cloud

4- Push de la imagen

docker push gcr.io/[PROJECT_ID]/app:v1  //reemplazar [PROJECT_ID] por el id del proyecto en google cloud

5- Desplegar imagen en kubernetes

kubectl apply -f deployment.yaml --record

6- Validar activación de servicio y obtener ip externa

kubectl get services

Funciones JS ES6 (server.js) de la api que procesan las peticiones POST para el análisis de imagenes:

1- Servicio /objects - Obtiene objetos de la imagen

app.post("/objects", upload.single('uploads'), function (req, res) {
    const currentFile = req.file.path;
    console.log(currentFile);
    const request = {
        source: {
            filename: currentFile
        }
    };
    vision.labelDetection(request)
        .then((results) => {
            const objects = results[0].labelAnnotations;
            //console.log('objects:');
            //objects.forEach((object) => console.log(object.description));
            unlinkAsync(req.file.path);
            res.send(objects);
        })
        .catch((err) => {
            console.error('ERROR:', err);
            res.send("ERROR");
        });
});

2- Servicio /explicit - Valida contenido explícito de la imagen:

app.post("/explicit", upload.single('uploads'), function (req, res) {
    const currentFile = req.file.path;
    console.log(req.file.path);
    const request = {
        source: {
            filename: currentFile
        }
    }; 
    vision.safeSearchDetection(request)
        .then((results) => {
            const objects = results[0].safeSearchAnnotation;
            //console.log(objects);
            unlinkAsync(req.file.path);
            res.send(objects);
        })
        .catch((err) => {
            console.error('ERROR:', err);
            res.send("ERROR");
        });
});

Pruebas unitarias:

1- Servicio /objects

Request

Response

1- Servicio /Explicit

Request

Response

googlevisiontest's People

Contributors

jramirezneira avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.