fbpx
Sigmoidal
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
  • English
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
Sigmoidal
Sem Resultado
Ver Todos Resultados

YOLOv9: Aprenda a Detectar Objetos

Carlos Melo por Carlos Melo
fevereiro 24, 2024
em Deep Learning, Python, Tutoriais, Visão Computacional
2
332
COMPARTILHAMENTOS
11.1k
VIEWS
Publicar no LinkedInCompartilhar no FacebookCompartilhar no Whatsapp

O YOLOv9 chegou! Caso você ainda estivesse utilizando modelos anteriores para detecção de objetos, como o YOLOv8 da Ultralytics, não há motivos para se preocupar. Ao longo deste texto, eu irei fornecer todas as informações necessárias para você se atualizar.

Divulgado em 21 de fevereiro de 2024 pelos pesquisadores Chien-Yao Wang, I-Hau Yeh e Hong-Yuan Mark Liao, por meio do artigo “YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information”, este novo modelo demonstrou uma precisão superior em comparação aos modelos YOLO antecessores.

Neste tutorial eu vou apresentar os mecanismos que permitiram ao YOLOv9 atingir a posição de modelo de ponta e ensinar como você pode implementá-lo no Google Colab.

Aprenda Visão Computacional na Prática

O que é YOLOv9?

Abordagens existentes para a detecção de objetos frequentemente enfatizam o design de arquiteturas de rede complexas ou a elaboração de funções objetivo especializadas. No entanto, tendem a negligenciar um problema crucial: a significativa perda de informação dos dados durante sua transmissão pelas camadas da rede.

O YOLOv9 é um modelo de detecção de objetos que introduz o conceito de Programmable Gradient Information (PGI) para lidar com a perda de informação durante a transmissão de dados através de redes profundas.

O PGI permite a preservação completa da informação de entrada necessária para calcular a função objetivo, assegurando assim a obtenção de informações de gradiente confiáveis para a atualização dos pesos da rede.

Programmable Gradient Information (PGI) proposto pela YOLOv9
Programmable Gradient Information (PGI) e arquiteturas e métodos de rede relacionados: (a) Path Aggregation Network (PAN), (b) Colunas Reversíveis (RevCol), (c) supervisão profunda convencional, e (d) PGI implementado na YOLOv9 (Fonte)

Além disso, o modelo apresenta uma nova arquitetura de rede leve, a Generalized Efficient Layer Aggregation Network (GELAN), baseada no planejamento do caminho do gradiente. Esta arquitetura foi projetada para maximizar a eficiência dos parâmetros e superar métodos existentes em termos de utilização de parâmetros, mesmo utilizando apenas operadores de convolução convencionais.

A arquitetura da Generalized Efficient Layer Aggregation Network (GELAN): (a) CSPNet, (b) ELAN e (c) GELAN implementada na YOLOv9 (Fonte)

O modelo e a arquitetura propostos foram validados no dataset MS COCO para detecção de objetos, demonstrando capacidade de obter melhores resultados do que os modelos de estado da arte pré-treinados com grandes conjuntos de dados, mesmo para modelos treinados do zero.

Análise de Desempenho

O YOLOv9 supera significativamente os modelos de detecção de objetos em tempo real anteriores em termos de eficiência e precisão. Comparado a modelos leves e médios, como o YOLO MS, o YOLOv9 possui cerca de 10% menos parâmetros e 5 a 15% menos cálculos, ao mesmo tempo que melhora a precisão (AP) em 0,4 a 0,6%.

Desempenho da YOLOv9
Comparação dos detectores de objetos em tempo real mais avançados (Fonte)

Em comparação com o YOLOv7 AF, o YOLOv9-C reduz os parâmetros em 42% e os cálculos em 21%, mantendo a mesma precisão de 53% em AP. Em relação ao YOLOv8-X, o YOLOv9-X apresenta 15% menos parâmetros e 25% menos cálculos, com uma melhoria significativa de 1,7% em AP.

Esses resultados destacam as melhorias do YOLOv9 em relação aos métodos existentes em todos os aspectos, incluindo a utilização de parâmetros e a complexidade computacional. 

Código-Fonte e Licença

Momentos após a publicação do artigo, em 21 de fevereiro de 2024, os autores também disponibilizaram uma implementação do YOLOv9. Há instruções gerais sobre a utilização do modelo, e também comandos para instalação de um ambiente Docker.

São mencionados 4 pesos no README.md: YOLOv9-C, YOLOv9-E, YOLOv9-S e YOLOv9-M. Até o presente momento, os dois últimos não estavam disponíveis ainda.

Quanto à licença, não foi atribuída uma licença oficial até o momento. No entanto, como você pode ver na imagem abaixo, um dos pesquisadores mencionou a intenção de possivelmente adotar a licença GPL3, um bom sinal para aqueles que pretendem usar o modelo comercialmente.

Como Instalar a YOLOv9

Como mencionei no início do artigo, o YOLOv9 é uma novidade. Isso significa que você não encontrará um pacote disponível para instalação via pip ou conda, por exemplo.

Além disso, como é comum com muitos códigos liberados juntamente com artigos científicos, podem ocorrer problemas de compatibilidade e bugs. Por exemplo, ao tentar executar o modelo no Google Colab pela primeira vez, encontrei o erro AttributeError: 'list' object has no attribute 'device' no arquivo detect.py.

Por esse motivo, fiz um fork do repositório onde o problema foi resolvido temporariamente. Eu também preparei um Jupyter Notebook para você abrir no Colab, e que vai economizar muito tempo. Para instalar o YOLOv9 e começar a detectar objetos nas suas imagens e vídeos, clique no link abaixo:

💡 Clique neste link para acessar o Jupyter Notebook que eu preparei para você instalar a YOLOv9 no Google Colab.
# Clona o repositório do YOLOv9
!git clone https://github.com/carlosfab/yolov9.git

# Muda o diretório de trabalho atual para o repositório YOLOv9 clonado
%cd yolov9

# Instala as dependências necessárias do YOLOv9 a partir do arquivo requirements.txt
!pip install -r requirements.txt -q

Este trecho de código realiza a configuração inicial para trabalhar com o modelo YOLOv9 em um ambiente de desenvolvimento. Primeiramente, clona o fork do YOLOv9 do GitHub para o ambiente local usando o comando git clone. Após a clonagem, o comando %cd é utilizado para mudar o diretório de trabalho atual para o diretório do YOLOv9. Finalmente, as dependências necessárias listadas no arquivo requirements.txt do projeto são instaladas com o comando pip install.

# Importa bibliotecas necessárias
import sys
import requests
from tqdm.notebook import tqdm
from pathlib import Path
from PIL import Image
from io import BytesIO
import matplotlib.pyplot as plt
from matplotlib.pylab import rcParams


# Configuração de diretórios para código e dados
CODE_FOLDER = Path("..").resolve()  # Diretório do código
WEIGHTS_FOLDER = CODE_FOLDER / "weights"  # Diretório para pesos do modelo
DATA_FOLDER = CODE_FOLDER / "data"  # Diretório para dados

# Cria os diretórios para pesos e dados, se não existirem
WEIGHTS_FOLDER.mkdir(exist_ok=True, parents=True)
DATA_FOLDER.mkdir(exist_ok=True, parents=True)

# Adiciona o diretório do código ao path do Python para importação de módulos
sys.path.append(str(CODE_FOLDER))

rcParams['figure.figsize'] = 15, 15
%matplotlib inline

Esse trecho inicializa o ambiente para um projeto de visão computacional, importando as bibliotecas necessárias, além de configurar diretórios para código, dados e pesos do modelo, criando-os caso não existam.

# URLs dos arquivos de pesos
weight_files = [
    "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt",
    "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-e.pt",
    "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-c.pt",
    "https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-e.pt"
]

# Itera sobre a lista de URLs para baixar os arquivos de pesos
for i, url in enumerate(weight_files, start=1):
    filename = url.split('/')[-1]
    response = requests.get(url, stream=True)
    total_size_in_bytes = int(response.headers.get('content-length', 0))
    block_size = 1024  # 1 Kilobyte
    progress_bar = tqdm(total=total_size_in_bytes, unit='iB', unit_scale=True, desc=f"Baixando arquivo {i}/{len(weight_files)}: {filename}")
    with open(WEIGHTS_FOLDER / filename, 'wb') as file:
        for data in response.iter_content(block_size):
            progress_bar.update(len(data))
            file.write(data)
    progress_bar.close()

Este trecho de código é responsável por baixar arquivos de pesos para modelos a partir de uma lista de URLs especificada na variável weight_files, salvando-os no diretório designado para pesos. Ele percorre cada URL da lista, extrai o nome do arquivo, executa o download em blocos de 1 Kilobyte para gerenciar o uso de memória eficientemente, e monitora o progresso do download com uma barra de progresso visual.

# URL da imagem de teste
url = 'https://sigmoidal.ai/wp-content/uploads/2022/11/314928609_1293071608150779_8666358890956473002_n.jpg'

# Faz a requisição para obter a imagem
response = requests.get(url)

# Define o caminho do arquivo onde a imagem será salva dentro do DATA_FOLDER
image_path = DATA_FOLDER / "test_image.jpg"

# Salva a imagem no diretório especificado
with open(image_path, 'wb') as f:
    f.write(response.content)

Este código faz o download de uma imagem de teste a partir de uma URL especificada, utilizando a biblioteca requests para realizar a requisição HTTP e obter o conteúdo da imagem. Após a obtenção da resposta, o conteúdo da imagem é salvo em um arquivo denominado test_image.jpg, localizado dentro de um diretório previamente configurado para dados.

Você também pode subir suas fotos manualmente, caso deseje, arrastando-as para dentro da pasta data.

!python {CODE_FOLDER}/detect.py --weights {WEIGHTS_FOLDER}/yolov9-e.pt --conf 0.1 --source {DATA_FOLDER}/test_image.jpg --device cpu

# !python {CODE_FOLDER}/detect.py --weights {WEIGHTS_FOLDER}/yolov9-e.pt --conf 0.1 --source {DATA_FOLDER}/test_image.jpg --device 0

Agora é só executar o script de detecção, detect.py, localizado no diretório de código CODE_FOLDER, utilizando algum dos pesos que estão salvos no diretório atribuído à variável WEIGHTS_FOLDER. O script é configurado para processar uma imagem de teste (test_image.jpg) encontrada no diretório de dados DATA_FOLDER, com uma confiança mínima (--conf) de 0.1 para a detecção de objetos.

A execução é realizada especificamente na CPU (--device cpu), adequada para ambientes que não dispõem de GPUs. Apesar do Colab fornecer uma certa cota mensal, nem, sempre você terá GPU à disposição. Já a segunda linha, comentada, mostra uma alternativa do comando para execução em uma GPU específica (--device 0).

Detecção de Objetos com YOLOv9

Atente-se que o resultado de cada teste será salvo dentro da pasta ../runs/detect/..., de maneira similar ao que era feito com o YOLOv8.

Neste tutorial eu mostrei como você pode instalar o YOLOv9 no ambiente do Google Colab. No entanto, neste fork que fiz, preparei a estrutura para que você também consiga usar o poetry para instalar as dependências na sua máquina local.

Caso você seja aluno da minha Especialização em Visão Computacional, saiba que há uma aula inteira dedicada sobre o modelo.

Resumo

  • Introdução ao YOLOv9: Revelando a chegada do YOLOv9, uma evolução significativa em detecção de objetos que supera modelos anteriores como o YOLOv8 da Ultralytics. Este artigo fornece um guia detalhado para se atualizar e implementar o novo modelo.
  • Inovação através do Programmable Gradient Information (PGI): O YOLOv9 introduz o conceito de PGI, abordando a perda de informação em redes profundas e permitindo a preservação completa da informação de entrada, o que é crucial para a atualização eficiente dos pesos da rede.
  • Arquitetura Avançada GELAN: Além do PGI, o YOLOv9 apresenta a arquitetura Generalized Efficient Layer Aggregation Network (GELAN), otimizando a eficiência dos parâmetros e superando métodos existentes em termos de utilização de parâmetros.
  • Desempenho Excepcional: Validado no dataset MS COCO, o YOLOv9 demonstrou superioridade em eficiência e precisão sobre modelos anteriores, oferecendo menos parâmetros e cálculos enquanto melhora a precisão.
  • Disponibilidade e Acesso: Logo após sua publicação, os autores disponibilizaram o código-fonte e instruções para uso, apesar de algumas versões dos pesos e licenças específicas ainda estarem pendentes.
  • Instalação e Uso Prático: Instruções específicas para a instalação e uso do YOLOv9 no Google Colab são fornecidas, facilitando a aplicação prática do modelo para detecção de objetos em imagens e vídeos.

Neste artigo, eu demonstrei como você pode testar rapidamente essa arquitetura em cima das suas fotos e vídeos. Nos próximos dias, irei trazer mais uma publicação para te ensinar como treinar a YOLOv9 em um dataset customizado. Não deixe de se inscrever e me seguir nas redes sociais.

Cite o Artigo

Use a seguinte entrada para citar este post em sua pesquisa:

Melo Júnior, José Carlos de. “YOLOv9: Aprenda a Detectar Objetos”. Blog do Sigmoidal, 24 fev. 2024. Disponível em: https://sigmoidal.ai/yolov9-aprenda-a-detectar-objetos

Compartilhar23Compartilhar133Enviar
Post Anterior

Sora e a Indústria de Entretenimento: Ameaça ou Aliado?

Próximo Post

Como Treinar o YOLOv9 em um Dataset Personalizado

Carlos Melo

Carlos Melo

Engenheiro de Visão Computacional graduado em Ciências Aeronáuticas pela Academia da Força Aérea (AFA) e Mestre em Engenharia Aeroespacial pelo Instituto Tecnológico de Aeronáutica (ITA).

Relacionado Artigos

Carlos Melo e Sérgio Sacani – Ciência Sem Fim
Youtube

Carlos Melo e Sérgio Sacani – Ciência Sem Fim

por Carlos Melo
janeiro 16, 2025
Visão Computacional

Processamento de Nuvens de Pontos com Open3D e Python

por Carlos Melo
janeiro 2, 2025
Meta Movie Gen para gerar vídeos a partir de textos
Youtube

Inteligência Artificial criando filmes? Conheça Movie Gen, a nova ferramenta da META.

por Carlos Melo
outubro 30, 2024
O que é Visão Computacional - Podcast Data Hackers
Carreira

O que é Visão Computacional — Data Hackers Episódio #92

por Carlos Melo
agosto 12, 2024
Como equalizar histograma de imagens com OpenCV e Python
Python

Equalização de Histograma com OpenCV e Python

por Carlos Melo
julho 16, 2024
Próximo Post
Como treinar YOLOv9 com dados (dataset) personalizados

Como Treinar o YOLOv9 em um Dataset Personalizado

Comentários 2

  1. vini says:
    1 ano atrás

    olá, executei seu colab e tive o erro python3: can’t open file ‘/content/detect.py’: [Errno 2] No such file or directory
    nao mudei em nada o codigo
    como proceder pfv?

    Responder
    • Carlos Melo Carlos Melo says:
      4 meses atrás

      Se você executou no Colab e deu erro, pode ser que tenha tido alguma atualização em algum pacote ou arquivo. Vou revisar o código quando eu retornar das férias.

      Responder

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Pós-Graduação em Data Science Pós-Graduação em Data Science Pós-Graduação em Data Science

Mais Populares

  • Introdução ao MediaPipe e Pose Estimation

    Introdução ao MediaPipe e Pose Estimation

    451 compartilhamentos
    Compartilhar 180 Tweet 113
  • Equalização de Histograma com OpenCV e Python

    112 compartilhamentos
    Compartilhar 45 Tweet 28
  • ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

    385 compartilhamentos
    Compartilhar 154 Tweet 96
  • Geometria da Formação de Imagens: Matrizes, Transformações e Sistemas de Coordenadas

    368 compartilhamentos
    Compartilhar 147 Tweet 92
  • Redes Neurais Convolucionais com Python

    92 compartilhamentos
    Compartilhar 37 Tweet 23
  • Em Alta
  • Comentários
  • Mais Recente
Como Tratar Dados Ausentes com Pandas

Como Tratar Dados Ausentes com Pandas

agosto 13, 2019
Como usar o DALL-E 2 para gerar imagens a partir de textos

Como usar o DALL-E 2 para gerar imagens a partir de textos

dezembro 25, 2022
Introdução ao MediaPipe e Pose Estimation

Introdução ao MediaPipe e Pose Estimation

julho 15, 2023

ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

abril 10, 2023
Como Analisar Ações da Bolsa com Python

Como Analisar Ações da Bolsa com Python

15
Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

13
Como Aprender Data Science?

Como Aprender Data Science?

9
Qual o Cenário de Data Science no Brasil hoje?

Qual o Cenário de Data Science no Brasil hoje?

8
DeepSeek vazamento de dados de usuários

DeepSeek: Vazamento de dados expõe dados de usuários

fevereiro 1, 2025
DeepSeek R1 vs OpenAI o1 – Qual é o Melhor Modelo de IA

DeepSeek R1 vs OpenAI o1 – Qual é o Melhor Modelo de IA?

janeiro 25, 2025
Trump Anuncia Investimento de US$ 500 Bilhões em Infraestrutura de IA

Trump Anuncia Investimento de US$ 500 Bilhões em Infraestrutura de IA

janeiro 22, 2025
Trump revoga decreto de Biden sobre regulação de Inteligência Artificial

Trump revoga decreto de Biden sobre regulação de Inteligência Artificial

janeiro 21, 2025

Seguir

  • 🇺🇸 Green Card por Habilidade Extraordinária em Data Science e Machine Learning

Após nossa mudança para os EUA, muitas pessoas me perguntaram como consegui o Green Card tão rapidamente. Por isso, decidi compartilhar um pouco dessa jornada.

O EB-1A é um dos vistos mais seletivos para imigração, sendo conhecido como “The Einstein Visa”, já que o próprio Albert Einstein obteve sua residência permanente através desse processo em 1933.

Apesar do apelido ser um exagero moderno, é fato que esse é um dos vistos mais difíceis de conquistar. Seus critérios rigorosos permitem a obtenção do Green Card sem a necessidade de uma oferta de emprego.

Para isso, o aplicante precisa comprovar, por meio de evidências, que está entre os poucos profissionais de sua área que alcançaram e se mantêm no topo, demonstrando um histórico sólido de conquistas e reconhecimento.

O EB-1A valoriza não apenas um único feito, mas uma trajetória consistente de excelência e liderança, destacando o conjunto de realizações ao longo da carreira.

No meu caso específico, após escrever uma petição com mais de 1.300 páginas contendo todas as evidências necessárias, tive minha solicitação aprovada pelo USCIS, órgão responsável pela imigração nos Estados Unidos.

Fui reconhecido como um indivíduo com habilidade extraordinária em Data Science e Machine Learning, capaz de contribuir em áreas de importância nacional, trazendo benefícios substanciais para os EUA.

Para quem sempre me perguntou sobre o processo de imigração e como funciona o EB-1A, espero que esse resumo ajude a esclarecer um pouco mais. Se tiver dúvidas, estou à disposição para compartilhar mais sobre essa experiência! #machinelearning #datascience
  • 🚀Domine a tecnologia que está revolucionando o mundo.

A Pós-Graduação em Visão Computacional & Deep Learning prepara você para atuar nos campos mais avançados da Inteligência Artificial - de carros autônomos a robôs industriais e drones.

🧠 CARGA HORÁRIA: 400h
💻 MODALIDADE: EAD
📅 INÍCIO DAS AULAS: 29 de maio

Garanta sua vaga agora e impulsione sua carreira com uma formação prática, focada no mercado de trabalho.

Matricule-se já!

#deeplearning #machinelearning #visãocomputacional
  • Green Card aprovado! 🥳 Despedida do Brasil e rumo à nova vida nos 🇺🇸 com a família!
  • Haverá sinais… aprovado na petição do visto EB1A, visto reservado para pessoas com habilidades extraordinárias!

Texas, we are coming! 🤠
  • O que EU TENHO EM COMUM COM O TOM CRUISE??

Clama, não tem nenhuma “semana” aberta. Mas como@é quinta-feira (dia de TBT), olha o que eu resgatei!

Diretamente do TÚNEL DO TEMPO: Carlos Melo &Tom Cruise!
  • Bate e Volta DA ITÁLIA PARA A SUÍÇA 🇨🇭🇮🇹

Aproveitei o dia de folga após o Congresso Internacional de Astronáutica (IAC 2024) e fiz uma viagem “bate e volta” para a belíssima cidade de Lugano, Suíça.

Assista ao vlog e escreve nos comentários se essa não é a cidade mais linda que você já viu!

🔗 LINK NOS STORIES
  • Um paraíso de águas transparentes, e que fica no sul da Suíça!🇨🇭 

Conheça o Lago de Lugano, cercado pelos Alpes Suíços. 

#suiça #lugano #switzerland #datascience
  • Sim, você PRECISA de uma PÓS-GRADUAÇÃO em DATA SCIENCE.
  • 🇨🇭Deixei minha bagagem em um locker no aeroporto de Milão, e vim aproveitar esta última semana nos Alpes suíços!
  • Assista à cobertura completa no YT! Link nos stories 🚀
  • Traje espacial feito pela @axiom.space em parceria com a @prada 

Esse traje será usados pelos astronautas na lua.
para acompanhar as novidades do maior evento sobre espaço do mundo, veja os Stories!

#space #nasa #astronaut #rocket
  • INTERNATIONAL ASTRONAUTICAL CONGRESS - 🇮🇹IAC 2024🇮🇹

Veja a cobertura completa do evento nos DESTAQUES do meu perfil.

Esse é o maior evento de ESPAÇO do mundo! Eu e a @bnp.space estamos representando o Brasil nele 🇧🇷

#iac #space #nasa #spacex
  • 🚀 @bnp.space is building the Next Generation of Sustainable Rocket Fuel.

Join us in transforming the Aerospace Sector with technological and sustainable innovations.
  • 🚀👨‍🚀 Machine Learning para Aplicações Espaciais

Participei do maior congresso de Astronáutica do mundo, e trouxe as novidades e oportunidade da área de dados e Machine Learning para você!

#iac #nasa #spacex
  • 🚀👨‍🚀ACOMPANHE NOS STORIES

Congresso Internacional de Astronáutica (IAC 2024), Milão 🇮🇹
  • Projeto Aeroespacial do final de semana!👨‍🚀
Instagram Youtube LinkedIn Twitter
Sigmoidal

O melhor conteúdo técnico de Data Science, com projetos práticos e exemplos do mundo real.

Seguir no Instagram

Categorias

  • Aeroespacial
  • Artigos
  • Blog
  • Carreira
  • Cursos
  • Data Science
  • Deep Learning
  • Destaques
  • Entrevistas
  • IA Generativa
  • Livros
  • Machine Learning
  • Notícias
  • Python
  • Teoria
  • Tutoriais
  • Visão Computacional
  • Youtube

Navegar por Tags

camera calibration carreira chatgpt cientista de dados cnn computer vision Cursos dados desbalanceados data science data science na prática decision tree deep learning gpt-3 histograma IA generativa image formation inteligência artificial jupyter kaggle keras machine learning matplotlib mnist nft openai opencv overfitting pandas profissão python redes neurais redes neurais convolucionais regressão linear regressão logística salário scikit-learn seaborn sklearn tensorflow titanic tutorial visão computacional vídeo youtube árvore de decisão

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

Sem Resultado
Ver Todos Resultados
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
  • English

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.