A partir do IRIS 2021.2 é possível escrever métodos de classe usando a linguagem Python. Usei esse novo recurso para detectar pessoas e objetos em imagens, usando o ImageAI (https://github.com/OlafenwaMoses/ImageAI). O criador do ImageAI o define como: "Uma biblioteca python de código aberto criada para permitir aos desenvolvedores criarem aplicativos e sistemas com recursos autônomos de Deep Learning e Visão Computacional usando poucas linhas de código". Neste artigo, você aprenderá como aplicar a ImageAI para detectar objetos e pessoas dentro de imagens.
Passos para analisar imagens usando o ImageAI
- Vá em https://openexchange.intersystems.com/package/AI-Image-Object-Detector e clique Download para ir ao Projeto Git
- Clone/git pull no repositório para qualquer pasta local
$ git clone https://github.com/yurimarx/image-analyzer.git
- Abra o terminal e vá no diretório onde o projeto foi criado e execute:
$ docker-compose build
- Execute o IRIS container:
$ docker-compose up -d
- Vá no seu Postman (ou outros clientes REST) e configure a requisição de acordo com a imagem:
- Method: POST
- URL: http://localhost:52773/image-analyzer/analyzeImage
- Body: form-data
- Key: file (o nome do campo file deve ser o valor file) e o tipo File
- Value: selecione uma imagem com pessoas e objetos a partir de um diretório do seu computador
- Clique em enviar e obtenha uma resposta como esta:
Os bastidores - o código-fonte
O Dockerfile
Esse é um passo importante. Para usar as bibliotecas do python você precisa instalar isto antes, preste atenção do diretório correto do Python que o IRIS utiliza (/usr/irissys/mgr/python):
- pip3 é uma ferramenta do python para instalar novas bibliotecas, como o imageai, opencv, tensorflow e outras.
- o parâmetro target é utilizado para instalar as bibliotecas do python onde o IRIS precisa, na pasta /usr/irissys/mgr/python.
- O ImageAI utiliza as seguintes bibliotecas:
- TensorFlow: "é uma biblioteca de código aberto para computação numérica e aprendizado de máquina em larga escala. O TensorFlow reúne uma série de modelos e algoritmos de aprendizado de máquina e aprendizado profundo (também conhecido como rede neural) e os torna úteis por meio de uma metáfora comum. Ele usa Python para fornecer uma API de front-end conveniente para criar aplicativos com a estrutura correta, enquanto executa esses aplicativos em C++ em alto desempenho" (fonte: https://www.infoworld.com/article/3278008/what-is-tensorflow-the -machine-learning-library-explained.html)
- Keras: "Keras é uma API de aprendizado profundo escrita em Python, executada na plataforma de aprendizado de máquina TensorFlow. Ela foi desenvolvida com foco em permitir a experimentação rápida. Ser capaz de ir da ideia ao resultado o mais rápido possível é a chave para fazer boa pesquisa." (fonte: https://keras.io/about/)
- OpenCV: "(Open Source Computer Vision Library) é uma biblioteca de software de visão computacional e aprendizado de máquina de código aberto. OpenCV foi construído para fornecer uma infraestrutura comum para aplicativos de visão computacional e acelerar o uso de percepção de máquina nos produtos comerciais" (fonte: https://opencv.org/about/).
- O ImageAI é um framework que combina oTensorFlow, Keras e OpenCV para te permitir treinar e usar modelos de mercado de deep learning facilmente, visando:
- Predição de imagens;
- Detecção de Objetos;
- Detecção de objetos em vídeo e o acompanhamento em tempo real do vídeo;
- Análise de Vídeos;
- Treinamento de modelos customizados (como o treinamento de um modelo para risco de queda em hospital, por exemplo).
- O ImageAI trabalha com 3 modelos principais de Computação Visual para detecção de objetos:
- RetinaNet (Tamanho = 145 mb, longo tempo de resposta, mas ótima acurácia)
- YOLOv3 (Tamanho = 237 mb, tempo de resposta e acurácia moderadas)
- TinyYOLOv3 (Tamanho = 34 mb, ótimo tempo de resposta e acurácia moderada)
- A pasta input armazena as imagens a serem analisadas;
- A pasta output armazena os resultados (imagens com as marcações);
- A pasta models armazena os modelos treinados para utilização no imageai.
- Este exemplo usa o modelo RetinaNet (restnet50)
Implementação do Embedded Python no IRIS
A implementação do código fonte é simples, e em poucas linhas fazemos a detecção de objetos (razão do uso do ImageAI). Se o tensorflow fosse usado diretamente com OpenCV e Keras, muito mais linhas de código teriam sido escritas. Veja o código comentado:
A API do IRIS para export a detecção de Objetos como um Microsserviço do IRIS
É muito fácil chamar o classmethod python, é semelhante chamar qualquer classmethod objectscript, veja:
Você pode fazer muitas coisas com Embedded Python e ImageAI. Saiba mais sobre ImageAI em: https://github.com/OlafenwaMoses/ImageAI.
Este aplicativo de exemplo usando imageai participará do concurso Python, se você gostou, vote nele. Obrigado!