Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 37 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Normalização de finais de linha
* text=auto

# Código, documentação e configuração usam LF em todas as plataformas
*.py text eol=lf
*.md text eol=lf
*.txt text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.json text eol=lf
*.toml text eol=lf
*.sh text eol=lf

# Scripts específicos do Windows usam CRLF
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf

# Modelos treinados e outros formatos binários
*.h5 binary
*.keras binary
*.tflite binary
*.pt binary
*.onnx binary
*.npz binary
*.npy binary

# Imagens e arquivos compactados
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.webp binary
*.ico binary
*.zip binary
*.gz binary

54 changes: 41 additions & 13 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,13 +1,41 @@
# Artefatos temporários de treinamento (Ultralytics YOLO - Projeto 3)
runs/
*.cache
yolo11n.pt
yolo11n.onnx

# Python
__pycache__/
*.pyc

# Ambientes / editores
.vscode/
.DS_Store
# Ambientes virtuais
.venv/
venv/
env/
.conda/

# Variáveis e configurações locais
.env
.env.*
!.env.example

# Caches e ferramentas Python
*.pyo
*.pyd
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
htmlcov/

# Empacotamento
build/
dist/
*.egg-info/

# Logs e arquivos temporários
*.log
*.tmp
*.temp
.ipynb_checkpoints/

# Editores e sistema operacional
.idea/
*.swp
Thumbs.db
Desktop.ini

# TensorFlow
logs/
checkpoints/
*.ckpt
82 changes: 82 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Código de Conduta

## Nosso compromisso

Nós, membros, colaboradores e responsáveis por este projeto, comprometemo-nos a
manter uma comunidade aberta, acolhedora e livre de assédio, independentemente
de idade, deficiência, etnia, identidade ou expressão de gênero, nível de
experiência, nacionalidade, aparência, raça, religião, orientação sexual ou
condição socioeconômica.

Comprometemo-nos a agir e interagir de maneira que contribua para uma
comunidade saudável, profissional e colaborativa.

## Comportamentos esperados

Exemplos de comportamentos que contribuem positivamente:

- demonstrar empatia, respeito e consideração;
- receber opiniões técnicas diferentes com abertura;
- oferecer e aceitar feedback construtivo;
- reconhecer erros, assumir responsabilidade e buscar repará-los;
- concentrar discussões no que é melhor para o projeto e sua comunidade;
- respeitar o tempo, o trabalho e a autoria das outras pessoas.

## Comportamentos inaceitáveis

Não serão tolerados:

- linguagem ou imagens sexualizadas e atenção sexual indesejada;
- provocações, insultos, ataques pessoais ou comentários depreciativos;
- assédio público ou privado;
- divulgação de informações privadas sem autorização;
- intimidação, perseguição ou ameaça;
- plágio, falsificação de resultados ou apropriação indevida de trabalho;
- qualquer conduta incompatível com um ambiente profissional.

## Responsabilidades de aplicação

Os responsáveis pelo projeto devem esclarecer e aplicar estas regras de forma
justa e consistente. Eles podem editar, rejeitar ou remover comentários,
commits, código, issues e outras contribuições que contrariem este Código de
Conduta.

As decisões de moderação devem considerar contexto, gravidade, recorrência e
impacto. Informações sobre incidentes devem ser tratadas com a
confidencialidade possível.

## Abrangência

Este Código de Conduta aplica-se a todos os espaços do projeto, incluindo
issues, pull requests, revisões, discussões e canais de comunicação
relacionados. Também se aplica quando alguém representa publicamente o projeto
ou sua comunidade.

## Denúncias

Comportamentos abusivos, ameaçadores ou inaceitáveis devem ser comunicados
privadamente aos responsáveis pelo repositório por um canal de contato
disponibilizado em seus perfis oficiais. Não publique informações sensíveis em
uma issue pública.

Toda denúncia será analisada de maneira imparcial. Pessoas responsáveis pela
análise devem se declarar impedidas quando estiverem diretamente envolvidas no
incidente.

## Diretrizes de aplicação

As consequências serão proporcionais à natureza e à recorrência da conduta:

1. **Orientação:** esclarecimento privado sobre a conduta esperada.
2. **Advertência:** solicitação formal de mudança de comportamento.
3. **Restrição temporária:** suspensão de interações por período determinado.
4. **Restrição permanente:** exclusão definitiva da participação no projeto.

Uma retratação ou correção pública poderá ser solicitada quando a violação
tiver ocorrido publicamente.

## Atribuição

Este documento foi adaptado do
[Contributor Covenant, versão 2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).

146 changes: 146 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Como contribuir

Obrigado pelo interesse em contribuir com este projeto de classificação MNIST
para Edge AI. Este documento descreve como propor mudanças de maneira
reproduzível e compatível com as regras do desafio.

## Antes de começar

Leia:

- o `README.md` da raiz, que contém as orientações gerais;
- o `README.md` de `projetos/1-classificacao-mnist/`, que descreve a
implementação e os resultados;
- o `CODE_OF_CONDUCT.md`.

Abra uma issue antes de iniciar mudanças grandes na arquitetura, nas
dependências ou no formato dos artefatos. Isso permite discutir escopo e
impactos antes da implementação.

## Preparação do ambiente

O ambiente de referência usa Python 3.10. Crie um ambiente virtual isolado:

```bash
python -m venv .venv
```

No Linux ou macOS:

```bash
source .venv/bin/activate
```

No PowerShell:

```powershell
.\.venv\Scripts\Activate.ps1
```

Instale as dependências:

```bash
python -m pip install --upgrade pip
pip install -r projetos/1-classificacao-mnist/requirements.txt
```

Não instale dependências do projeto globalmente.

## Organização do repositório

A implementação deve permanecer em:

```text
projetos/1-classificacao-mnist/
├── train_model.py
├── optimize_model.py
├── run_inference.py
├── requirements.txt
├── model.h5
├── model.tflite
└── README.md
```

Não altere os workflows ou validadores oficiais para facilitar a aprovação de
uma contribuição. Mudanças nesses arquivos exigem justificativa técnica
explícita e revisão separada.

## Fluxo recomendado

1. Crie uma branch a partir de `main`.
2. Faça mudanças pequenas e relacionadas a um único objetivo.
3. Atualize testes e documentação quando necessário.
4. Execute as validações locais.
5. Abra um pull request explicando o problema, a solução e as evidências.

Exemplo:

```bash
git switch -c tipo/descricao-curta
```

Prefixos sugeridos: `feat/`, `fix/`, `docs/`, `refactor/` e `test/`.

## Validações locais

Confira a sintaxe:

```bash
python -m py_compile \
projetos/1-classificacao-mnist/train_model.py \
projetos/1-classificacao-mnist/optimize_model.py \
projetos/1-classificacao-mnist/run_inference.py
```

Depois que os artefatos estiverem disponíveis, execute:

```bash
python .github/scripts/validate_1_mnist.py projetos/1-classificacao-mnist
cd projetos/1-classificacao-mnist
python run_inference.py
```

Não treine novamente apenas para modificar documentação. Quando um novo
treinamento for necessário, registre no pull request:

- ambiente e versões usadas;
- acurácia final de validação;
- tamanho de `model.h5` e `model.tflite`;
- redução percentual;
- saída real da inferência.

## Estilo de código

- Use nomes claros e código compatível com Python 3.10.
- Prefira funções pequenas e responsabilidades explícitas.
- Preserve a reprodutibilidade por meio de sementes aleatórias.
- Não inclua credenciais, datasets duplicados, caches ou ambientes virtuais.
- Fixe versões de novas dependências e justifique sua inclusão.
- Mantenha a documentação alinhada ao comportamento real do código.

## Commits

Escreva mensagens curtas e objetivas. O padrão Conventional Commits é
recomendado:

```text
feat: adiciona avaliação no conjunto de teste
fix: corrige normalização da entrada TFLite
docs: atualiza resultados reais da inferência
```

Evite misturar formatação, refatoração e mudança funcional no mesmo commit.

## Pull requests

Todo pull request deve informar:

- o objetivo da mudança;
- os arquivos afetados;
- como a mudança foi validada;
- métricas anteriores e novas, quando aplicável;
- limitações ou riscos conhecidos.

Ao contribuir, você concorda que sua participação seguirá o
`CODE_OF_CONDUCT.md` deste repositório.

50 changes: 50 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
LICENSING NOTICE FOR THIS FORK

This repository is a fork of:
https://github.com/pnaat/processoseletivoIA

1. Upstream material

Files and portions derived from the upstream repository are not relicensed by
this notice. They remain subject to the copyright and licensing terms, if any,
established by their respective authors and rightsholders.

At the time this notice was prepared, the upstream repository did not include
an explicit open-source license. Nothing in this file grants rights to
upstream material beyond those otherwise provided by the applicable
rightsholders, the GitHub Terms of Service, or applicable law.

2. Original contributions by Mateus Alencar Ferreira

MIT License

Copyright (c) 2026 Mateus Alencar Ferreira

Subject to the limitation above, original code, documentation, and other
modifications authored solely by Mateus Alencar Ferreira in this fork are
licensed under the following terms:

Permission is hereby granted, free of charge, to any person obtaining a copy
of those original contributions and associated documentation files (the
"Contributions"), to deal in the Contributions without restriction,
including without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Contributions, and to permit
persons to whom the Contributions are furnished to do so, subject to the
following conditions:

The above copyright notice, this licensing notice, and this permission notice
shall be included in all copies or substantial portions of the Contributions.

THE CONTRIBUTIONS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE CONTRIBUTIONS OR THE USE OR OTHER DEALINGS IN
THE CONTRIBUTIONS.

3. Third-party material

Datasets, dependencies, trademarks, logos, model artifacts, and other
third-party materials remain subject to their own terms and licenses. This
notice does not alter or replace those terms.
Loading