Compare commits

...

6 Commits

Author SHA1 Message Date
lbritors
1b58458db0 feat: teste conexão 2026-06-08 16:10:15 -03:00
lbritors
2ee0074d30 feat: teste 2026-06-08 15:57:50 -03:00
058a930c9f teste 2026-06-02 12:49:48 -03:00
608f6f3517 feat: readme gitea 2026-05-29 13:25:57 -03:00
6c6b0d7366 feat: readme gitea 2026-05-29 13:22:03 -03:00
lbritors
6cf538c72f resumos 2026-05-11 16:55:16 -03:00
6 changed files with 368 additions and 0 deletions

213
GITEA.md Normal file
View File

@@ -0,0 +1,213 @@
# Gitea
[![](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main)](https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain "Release Nightly")
[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea")
[![](https://goreportcard.com/badge/code.gitea.io/gitea)](https://goreportcard.com/report/code.gitea.io/gitea "Go Report Card")
[![](https://pkg.go.dev/badge/code.gitea.io/gitea?status.svg)](https://pkg.go.dev/code.gitea.io/gitea "GoDoc")
[![](https://img.shields.io/github/release/go-gitea/gitea.svg)](https://github.com/go-gitea/gitea/releases/latest "GitHub release")
[![](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea "Help Contribute to Open Source")
[![](https://opencollective.com/gitea/tiers/backers/badge.svg?label=backers&color=brightgreen)](https://opencollective.com/gitea "Become a backer/sponsor of gitea")
[![](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT "License: MIT")
[![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod&color=green)](https://gitpod.io/#https://github.com/go-gitea/gitea)
[![](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com "Crowdin")
[繁體中文](./README.zh-tw.md) | [简体中文](./README.zh-cn.md)
## Purpose
The goal of this project is to make the easiest, fastest, and most
painless way of setting up a self-hosted Git service.
As Gitea is written in Go, it works across **all** the platforms and
architectures that are supported by Go, including Linux, macOS, and
Windows on x86, amd64, ARM and PowerPC architectures.
This project has been
[forked](https://blog.gitea.com/welcome-to-gitea/) from
[Gogs](https://gogs.io) since November of 2016, but a lot has changed.
For online demonstrations, you can visit [demo.gitea.com](https://demo.gitea.com).
For accessing free Gitea service (with a limited number of repositories), you can visit [gitea.com](https://gitea.com/user/login).
To quickly deploy your own dedicated Gitea instance on Gitea Cloud, you can start a free trial at [cloud.gitea.com](https://cloud.gitea.com).
## Documentation
You can find comprehensive documentation on our official [documentation website](https://docs.gitea.com/).
It includes installation, administration, usage, development, contributing guides, and more to help you get started and explore all features effectively.
If you have any suggestions or would like to contribute to it, you can visit the [documentation repository](https://gitea.com/gitea/docs)
## Building
From the root of the source tree, run:
TAGS="bindata" make build
or if SQLite support is required:
TAGS="bindata sqlite sqlite_unlock_notify" make build
The `build` target is split into two sub-targets:
- `make backend` which requires [Go Stable](https://go.dev/dl/), the required version is defined in [go.mod](/go.mod).
- `make frontend` which requires [Node.js LTS](https://nodejs.org/en/download/) or greater and [pnpm](https://pnpm.io/installation).
Internet connectivity is required to download the go and npm modules. When building from the official source tarballs which include pre-built frontend files, the `frontend` target will not be triggered, making it possible to build without Node.js.
More info: https://docs.gitea.com/installation/install-from-source
## Using
After building, a binary file named `gitea` will be generated in the root of the source tree by default. To run it, use:
./gitea web
> [!NOTE]
> If you're interested in using our APIs, we have experimental support with [documentation](https://docs.gitea.com/api).
## Contributing
Expected workflow is: Fork -> Patch -> Push -> Pull Request
> [!NOTE]
>
> 1. **YOU MUST READ THE [CONTRIBUTORS GUIDE](CONTRIBUTING.md) BEFORE STARTING TO WORK ON A PULL REQUEST.**
> 2. If you have found a vulnerability in the project, please write privately to **security@gitea.io**. Thanks!
## Translating
[![Crowdin](https://badges.crowdin.net/gitea/localized.svg)](https://translate.gitea.com)
Translations are done through [Crowdin](https://translate.gitea.com). If you want to translate to a new language, ask one of the managers in the Crowdin project to add a new language there.
You can also just create an issue for adding a language or ask on Discord on the #translation channel. If you need context or find some translation issues, you can leave a comment on the string or ask on Discord. For general translation questions there is a section in the docs. Currently a bit empty, but we hope to fill it as questions pop up.
Get more information from [documentation](https://docs.gitea.com/contributing/localization).
## Official and Third-Party Projects
We provide an official [go-sdk](https://gitea.com/gitea/go-sdk), a CLI tool called [tea](https://gitea.com/gitea/tea) and an [action runner](https://gitea.com/gitea/act_runner) for Gitea Action.
We maintain a list of Gitea-related projects at [gitea/awesome-gitea](https://gitea.com/gitea/awesome-gitea), where you can discover more third-party projects, including SDKs, plugins, themes, and more.
## Communication
[![](https://img.shields.io/discord/322538954119184384.svg?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/Gitea "Join the Discord chat at https://discord.gg/Gitea")
If you have questions that are not covered by the [documentation](https://docs.gitea.com/), you can get in contact with us on our [Discord server](https://discord.gg/Gitea) or create a post in the [discourse forum](https://forum.gitea.com/).
## Authors
- [Maintainers](https://github.com/orgs/go-gitea/people)
- [Contributors](https://github.com/go-gitea/gitea/graphs/contributors)
- [Translators](options/locale/TRANSLATORS)
## Backers
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/gitea#backer)]
<a href="https://opencollective.com/gitea#backers" target="_blank"><img src="https://opencollective.com/gitea/backers.svg?width=890"></a>
## Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/gitea#sponsor)]
<a href="https://opencollective.com/gitea/sponsor/0/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/0/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/1/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/1/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/2/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/2/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/3/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/3/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/4/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/4/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/5/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/5/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/6/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/6/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/7/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/7/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/8/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/8/avatar.svg"></a>
<a href="https://opencollective.com/gitea/sponsor/9/website" target="_blank"><img src="https://opencollective.com/gitea/sponsor/9/avatar.svg"></a>
## FAQ
**How do you pronounce Gitea?**
Gitea is pronounced [/ɡɪti:/](https://youtu.be/EM71-2uDAoY) as in "gi-tea" with a hard g.
**Why is this not hosted on a Gitea instance?**
We're [working on it](https://github.com/go-gitea/gitea/issues/1029).
**Where can I find the security patches?**
In the [release log](https://github.com/go-gitea/gitea/releases) or the [change log](https://github.com/go-gitea/gitea/blob/main/CHANGELOG.md), search for the keyword `SECURITY` to find the security patches.
## License
This project is licensed under the MIT License.
See the [LICENSE](https://github.com/go-gitea/gitea/blob/main/LICENSE) file
for the full license text.
## Further information
<details>
<summary>Looking for an overview of the interface? Check it out!</summary>
### Login/Register Page
![Login](https://dl.gitea.com/screenshots/login.png)
![Register](https://dl.gitea.com/screenshots/register.png)
### User Dashboard
![Home](https://dl.gitea.com/screenshots/home.png)
![Issues](https://dl.gitea.com/screenshots/issues.png)
![Pull Requests](https://dl.gitea.com/screenshots/pull_requests.png)
![Milestones](https://dl.gitea.com/screenshots/milestones.png)
### User Profile
![Profile](https://dl.gitea.com/screenshots/user_profile.png)
### Explore
![Repos](https://dl.gitea.com/screenshots/explore_repos.png)
![Users](https://dl.gitea.com/screenshots/explore_users.png)
![Orgs](https://dl.gitea.com/screenshots/explore_orgs.png)
### Repository
![Home](https://dl.gitea.com/screenshots/repo_home.png)
![Commits](https://dl.gitea.com/screenshots/repo_commits.png)
![Branches](https://dl.gitea.com/screenshots/repo_branches.png)
![Labels](https://dl.gitea.com/screenshots/repo_labels.png)
![Milestones](https://dl.gitea.com/screenshots/repo_milestones.png)
![Releases](https://dl.gitea.com/screenshots/repo_releases.png)
![Tags](https://dl.gitea.com/screenshots/repo_tags.png)
#### Repository Issue
![List](https://dl.gitea.com/screenshots/repo_issues.png)
![Issue](https://dl.gitea.com/screenshots/repo_issue.png)
#### Repository Pull Requests
![List](https://dl.gitea.com/screenshots/repo_pull_requests.png)
![Pull Request](https://dl.gitea.com/screenshots/repo_pull_request.png)
![File](https://dl.gitea.com/screenshots/repo_pull_request_file.png)
![Commits](https://dl.gitea.com/screenshots/repo_pull_request_commits.png)
#### Repository Actions
![List](https://dl.gitea.com/screenshots/repo_actions.png)
![Details](https://dl.gitea.com/screenshots/repo_actions_run.png)
#### Repository Activity
![Activity](https://dl.gitea.com/screenshots/repo_activity.png)
![Contributors](https://dl.gitea.com/screenshots/repo_contributors.png)
![Code Frequency](https://dl.gitea.com/screenshots/repo_code_frequency.png)
![Recent Commits](https://dl.gitea.com/screenshots/repo_recent_commits.png)
### Organization
![Home](https://dl.gitea.com/screenshots/org_home.png)
</details>

1
evolutionmanager.txt Normal file
View File

@@ -0,0 +1 @@
{"status":200,"message":"Welcome to the Evolution API, it is working!","version":"2.2.3","clientName":"soberana-evolution","manager":"http://evolution.soberana.srv.br/manager","documentation":"https://doc.evolution-api.com"}

21
fastapi.txt Normal file
View File

@@ -0,0 +1,21 @@
FastAPI do ZERO
Caso prefira ver a apresentação do curso em vídeo
Esse material passa por atualizações periódicas. Você pode acompanhar as notas de alterações aqui.
Olá, boas-vindas ao curso de FastAPI!
A nossa intenção neste curso é facilitar o aprendizado no desenvolvimento de APIs usando o FastAPI. Vamos explorar como integrar bancos de dados, criar testes e um sistema básico de autenticação com JWT. Tudo isso para oferecer uma boa base para quem quer trabalhar com desenvolvimento web com Python. A ideia desse curso é apresentar os conceitos de forma prática, construindo um projeto do zero e indo até a sua fase de produção.
O que é FastAPI?
FastAPI é um framework Python moderno, projetado para simplicidade, velocidade e eficiência. A combinação de diversas funcionalidades modernas do Python, como anotações de tipo e suporte à concorrência. Simplificando o desenvolvimento de APIs.
Sobre o curso
Este curso foi desenvolvido para oferecer uma experiência prática no uso do FastAPI. O objetivo é que você obtenha uma compreensão das funcionalidades do FastAPI e de boas práticas associadas a ele.
O projeto central do curso será a construção de um gerenciador de tarefas (uma lista de tarefas), começando do zero. Esse projeto incluirá a implementação da autenticação do usuário e das operações CRUD completas.
Para a construção do projeto, serão utilizadas as versões mais recentes das ferramentas, disponíveis em 2026, como a versão do 0.136.3 FastAPI, a versão 2.13.4 do Pydantic, a versão 2.0.50 do SQLAlchemy ORM, além do suporte ao Python 3.11/3.12/3.13/3.14, e do Alembic 1.18.4 para gerenciamento de migrações.
Além da construção do projeto, o curso também incluirá a prática de testes, utilizando o pytest. Essa abordagem planeja garantir que as APIs desenvolvidas sejam não somente funcionais, mas também robustas e confiáveis.

114
notas.md Normal file
View File

@@ -0,0 +1,114 @@
A detecção de objetos e a segmentação de imagens são tarefas de visão computacional que buscam identificar e localizar elementos em uma imagem, mas diferem fundamentalmente no nível de detalhe da localização e na forma como representam esses elementos.
A detecção de objetos consiste na combinação das tarefas de classificação (dizer o que é o objeto) e localização (dizer onde ele está)
. Seu objetivo é encontrar instâncias de múltiplos objetos na imagem e demarcá-los utilizando caixas delimitadoras (bounding boxes), que são representadas por coordenadas retangulares (como x, y, largura e altura)
. Por exemplo, em uma imagem com vários animais, a detecção desenhará caixas separadas e independentes ao redor de cada cachorro e gato presente, indicando a região geral que eles ocupam
.
A segmentação, por outro lado, é mais precisa e opera no nível dos pixels, delineando o contorno e a silhueta exata do que está sendo analisado. Ela se divide principalmente nas seguintes categorias:
Segmentação Semântica: Tem como objetivo rotular cada pixel da imagem com a sua respectiva classe (por exemplo, classificando pixels como céu, grama, gato, árvore)
. A principal característica dessa abordagem é que ela não diferencia instâncias individuais do mesmo objeto
. Ou seja, se houver duas vacas em um pasto, a segmentação semântica agrupará todos os pixels que compõem os dois animais em uma única categoria "vaca", sem distingui-las como dois indivíduos separados
.
Segmentação de Instâncias: Resolve a limitação da segmentação semântica ao diferenciar objetos individuais
. Essa abordagem geralmente realiza a detecção de objetos primeiro e, em seguida, prevê uma máscara de pixels exata para cada objeto específico encontrado
. Dessa forma, ela consegue apontar os pixels que pertencem à "vaca 1" e separá-los dos pixels da "vaca 2"
.
Segmentação Panóptica: É a combinação avançada da segmentação semântica com a segmentação de instâncias, buscando classificar todos os pixels do cenário (como céu e rua) ao mesmo tempo em que diferencia os objetos individuais (como diferentes pedestres e carros)
.
Em resumo, enquanto a detecção de objetos usa áreas retangulares para isolar instâncias de objetos em uma imagem, a segmentação mapeia a forma exata dos elementos através da classificação individual de cada pixel
.
Como as redes neurais aprendem representações em diferentes camadas?
As redes neurais, particularmente as Redes Neurais Convolucionais (CNNs), aprendem representações dos dados de forma hierárquica. O objetivo desse processo é gerar uma representação eficiente que extraia as características da imagem e simplifique a tarefa final de predição (como classificar a identidade de um objeto)
.
A representação aprendida torna-se progressivamente mais complexa e semântica à medida que avançamos pelas diferentes camadas da rede:
Características de baixo nível (Low-level features): A primeira camada oculta, que analisa diretamente os pixels de entrada, geralmente aprende a detectar características muito básicas, como bordas (edges)
.
Características de nível médio (Mid-level features): A segunda camada oculta combina as características da camada anterior para detectar formas um pouco mais elaboradas, como cantos e contornos (corners and contours)
.
Características de alto nível (High-level features): A terceira camada oculta e as subsequentes combinam as formas médias para representar estruturas altamente complexas, como partes de objetos (object parts)
.
Na camada de saída, todas essas representações construídas nas camadas ocultas são utilizadas para prever a identidade final do objeto como um todo (por exemplo, classificar se é um carro, uma pessoa ou um animal)
.
É importante destacar que as representações (features) são determinadas principalmente por dois fatores: a camada usada para extrair a característica e o tipo de dado usado para treinar o modelo
. Por exemplo, quando analisamos o que ativa os neurônios de uma rede, notamos que uma rede treinada no dataset ImageNet (focado em objetos variados) tende a aprender e detectar estruturas com formato de "bolha" (blob-like), enquanto uma rede treinada no dataset Places (focado em cenários) aprende a detectar estruturas que se assemelham mais a paisagens
.
Essa natureza hierárquica do aprendizado de representações é o que possibilita a técnica de Transferência de Aprendizado (Transfer Learning). Como as camadas iniciais aprendem características genéricas e fundamentais aplicáveis a muitas imagens (como contornos e cores), é possível pegar uma rede já treinada em um conjunto de dados gigantesco e reutilizar essas camadas iniciais congeladas, apenas substituindo e treinando as camadas finais para focar nas características específicas de uma nova tarefa com menos dados disponíveis
.
O que são redes convolucionais e como elas analisam imagens?
As Redes Neurais Convolucionais (CNNs) são uma classe especial de modelo de aprendizado profundo (deep learning) projetada especificamente para processar dados que se apresentam em múltiplas matrizes, como imagens, que possuem dimensões espaciais (largura e altura) e um canal de cores (geralmente vermelho, verde e azul)
. Em grande medida, as CNNs buscam imitar a maneira como os humanos classificam imagens, sendo capazes de reconhecer características e padrões específicos independentemente de onde apareçam na cena
.
A análise de uma imagem por uma rede convolucional explora a propriedade de que os sinais visuais formam hierarquias compostas
. Em vez de analisar todos os pixels de forma plana, a rede aprende a extrair informações em níveis progressivos de abstração
. Esse processo hierárquico, que avança desde características de baixo nível (como linhas e bordas), passando por características de nível médio (curvas e formas), até chegar a características de alto nível (partes de objetos e cenas completas), ocorre por meio da combinação de quatro conceitos essenciais: conexões locais, pesos compartilhados, agrupamento (pooling) e o uso de múltiplas camadas
.
Para realizar essa análise, a arquitetura de uma CNN intercala diferentes tipos de camadas especializadas:
Camadas de Convolução: Utilizam um conjunto de "filtros" (ou templates), que são matrizes numéricas pequenas (por exemplo, 3x3) aplicadas de forma deslizante sobre pequenas regiões locais da imagem
. A convolução é uma operação matemática simples que multiplica e soma os valores dos pixels com os valores do filtro; se a região da imagem se assemelhar ao padrão do filtro (como uma listra vertical), a operação produzirá um valor alto
. Como as estatísticas locais das imagens são invariantes à localização, as CNNs utilizam pesos compartilhados, o que significa que o mesmo filtro é reutilizado em toda a imagem para buscar o mesmo padrão
.
Camadas de Ativação Não-linear: Após a convolução, o resultado normalmente passa por uma função matemática não-linear, sendo a ReLU (Rectified Linear Unit) a mais comum
. Ela ajuda a rede a modelar funções altamente complexas.
Camadas de Agrupamento (Pooling): O papel destas camadas é condensar e resumir a imagem, fundindo características semanticamente semelhantes
. A operação mais comum é o max pooling, que analisa pequenos blocos da imagem (como 2x2 pixels) e preserva apenas o valor máximo daquele bloco
. Ao fazer esse "resumo", o agrupamento reduz a dimensão da representação e torna a rede invariante a pequenas mudanças de posição e distorções, garantindo que o padrão seja reconhecido mesmo que mude um pouco de lugar
.
À medida que a rede se aprofunda, esses blocos de convolução e pooling são repetidos
. Cada nova camada trata os mapas de características da camada anterior como se fossem uma nova imagem, gerando abstrações cada vez mais complexas
.
Por fim, quando os dados são reduzidos a mapas muito pequenos através das camadas de pooling, eles são "achatados" (flattened), transformando-se em um vetor unidimensional simples
. Esses vetores finais alimentam camadas densas (totalmente conectadas), que consolidam todas as partes identificadas para emitir a previsão final — ou seja, a classificação de qual objeto a imagem representa
.
Como funciona o algoritmo de backpropagation no aprendizado?
O algoritmo de backpropagation (ou retropropagação de erros) é o método fundamental usado para treinar redes neurais de múltiplas camadas, permitindo que elas descubram como ajustar seus parâmetros internos (pesos) para fazer previsões precisas
.
Ele funciona em conjunto com algoritmos de otimização, como a Descida de Gradiente (Gradient Descent), e baseia-se em um princípio de cálculo matemático chamado regra da cadeia (chain rule)
.
O processo de aprendizado ocorre em ciclos repetitivos que envolvem os seguintes passos:
Passo para frente (Forward pass): Os dados de treinamento (como uma imagem ou texto) são inseridos na rede e propagados através de suas várias camadas matemáticas até gerar uma previsão na camada de saída
.
Quantificação do erro: A previsão gerada pela rede é comparada com a resposta real e correta usando uma função de custo/perda (loss function), medindo assim a diferença ou o nível de erro daquela previsão
.
Passo para trás (Backward pass - a retropropagação em si): O algoritmo trabalha de trás para frente, partindo da camada de saída em direção à camada de entrada
. Aplicando a regra da cadeia, ele calcula a derivada (ou gradiente) do erro em relação a cada uma das conexões da rede
. Em termos práticos, a retropropagação calcula e atribui uma "fração da culpa" do erro final a cada neurônio e peso que participou da previsão
.
Atualização dos pesos: Com o gradiente de erro calculado para cada parâmetro, a rede utiliza a Descida de Gradiente para dar um pequeno passo na direção oposta ao erro, ajustando os valores de todos os pesos simultaneamente
.
A repetição contínua desse processo ao longo de muitos exemplos de treinamento faz com que o erro diminua gradativamente, até que a rede neural seja capaz de extrair os recursos corretos e generalizar as informações para dados que nunca viu antes
.
O que é a regra da cadeia no backpropagation?
A regra da cadeia (chain rule) é um princípio matemático de cálculo diferencial que descreve como pequenos efeitos de variáveis dependentes se compõem
. Na prática, o algoritmo de backpropagation é fundamentalmente a aplicação direta da regra da cadeia para calcular o gradiente de uma função objetivo (como o erro de predição) em relação aos pesos de uma arquitetura de rede neural de múltiplas camadas
.
No contexto do aprendizado das redes neurais, a regra da cadeia atua da seguinte forma:
Composição de derivadas: A regra dita que se uma pequena mudança em uma variável x afeta uma variável y, e essa mudança em y afeta uma variável z, o efeito de x sobre z é obtido através da multiplicação de suas derivadas parciais
.
Cálculo de trás para frente: A principal contribuição da regra da cadeia é permitir que a derivada (ou gradiente) do erro em relação à entrada de uma camada específica da rede seja calculada trabalhando de trás para frente, partindo do gradiente da saída desse mesmo módulo
.
Distribuição da "culpa": O ato de aplicar essa diferenciação em cascata camada por camada faz com que a regra da cadeia consiga atribuir uma fração do resíduo (uma parcela do erro final) a cada um dos parâmetros e neurônios individuais que participaram da previsão
.
É exatamente devido à eficiência da regra da cadeia que o cálculo das atualizações dos pesos permanece sendo um processo relativamente simples e direto, mesmo quando aplicado a redes neurais profundas e extremamente complexas
.
Como o deep learning difere das técnicas tradicionais de aprendizado?
A principal diferença entre o deep learning e as técnicas tradicionais de aprendizado de máquina reside na forma como as características (features) dos dados são extraídas e representadas.
Historicamente, as técnicas tradicionais eram limitadas na sua capacidade de processar dados naturais em sua forma bruta
. Para construir um sistema de reconhecimento de padrões convencional, era necessária uma cuidadosa engenharia manual e grande conhecimento especializado (domain expertise) para projetar extratores capazes de transformar os dados brutos (como os pixels de uma imagem) em vetores de características adequados para o classificador
. Além disso, classificadores tradicionais "rasos" (como os lineares) têm grande dificuldade em ignorar variações irrelevantes nos dados (como a mudança de iluminação ou pose em uma imagem) ao mesmo tempo em que tentam detectar as diferenças importantes
.
O deep learning elimina grande parte dessa necessidade de engenharia manual
. Ele é um conjunto de métodos de aprendizagem de representações que permite que o sistema seja alimentado diretamente com dados brutos, descobrindo automaticamente as representações necessárias para a tarefa
. Isso é feito através do uso de múltiplas camadas de processamento não-linear, que transformam as informações progressivamente em níveis cada vez maiores de abstração e complexidade
.
Outras diferenças importantes incluem:
Volume de dados e computação: Diferente dos métodos antigos, o deep learning é capaz de tirar proveito contínuo do aumento do poder computacional e de conjuntos de dados massivos
. Essa abordagem é geralmente a escolha mais atrativa quando o tamanho da amostra de treinamento é extremamente grande
.
Interpretabilidade: Existe uma troca (tradeoff) entre a flexibilidade do modelo e a facilidade de compreendê-lo. O deep learning cria modelos altamente flexíveis para estimar padrões intricados, mas possui uma interpretabilidade muito baixa quando comparado a métodos estatísticos tradicionais (como regressões lineares ou árvores de decisão)
.
Complexidade de implementação: Sempre que métodos mais simples e tradicionais puderem atingir um desempenho semelhante em uma tarefa com menos dados, eles costumam ser preferíveis. Isso ocorre porque métodos tradicionais são mais fáceis de ajustar, mais compreensíveis e potencialmente menos frágeis do que as arquiteturas altamente complexas de deep learning
.

4
tsconfig.json Normal file
View File

@@ -0,0 +1,4 @@
{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
}

15
yolo.txt Normal file
View File

@@ -0,0 +1,15 @@
De onde o YOLO pega o contexto global? Como consegue fazer isso e porque os R - CNN não conseguiam?
O modelo YOLO consegue extrair o contexto global porque as suas camadas convolucionais mais profundas capturam campos receptivos (receptive fields) maiores da imagem
. Em vez de analisar pedaços isolados, ele processa a imagem inteira de uma só vez através de uma única rede. À medida que a informação flui para as camadas mais profundas, cada neurônio passa a "enxergar" áreas cada vez maiores da imagem original, permitindo que as predições finais considerem simultaneamente o objeto e o cenário ao seu redor
.
Os modelos da família R-CNN não conseguiam fazer isso de forma eficiente devido à sua arquitetura baseada em estágios e "propostas de regiões"
. O funcionamento deles obrigava a rede a focar apenas em áreas restritas:
No R-CNN original, o algoritmo literalmente recortava cerca de 2.000 pedaços da imagem de entrada (propostas de regiões) e passava cada um desses recortes de forma independente pela rede neural para ser classificado
.
Nas evoluções Fast e Faster R-CNN, embora a imagem inteira passasse junta pelas primeiras camadas convolucionais para economizar processamento, o modelo ainda aplicava uma operação de recorte (Crop / RoI pooling) diretamente sobre os mapas de características para isolar apenas as caixas suspeitas
. O classificador final só avaliava o que estava dentro desse recorte
.
A grande diferença: Ao isolar e classificar apenas uma caixa recortada (como os R-CNNs fazem), a rede perde a visão do que está em volta daquele objeto
. É por isso que abordagens baseadas em regiões têm uma tendência maior a cometer "erros de fundo" (confundir uma textura no cenário com um objeto). O YOLO, por nunca recortar a imagem e tratar a detecção como uma regressão única onde as últimas camadas têm o contexto de toda a cena, compreende muito melhor a diferença entre o que é um objeto de fato e o que é apenas o fundo da imagem
.