Executando verificação de segurança...
1

Pitch: Engenharia real: um projeto que foi de OpenCV → IA → um algoritmo de 2MB

Existe um padrão curioso em engenharia de software:

a solução final costuma ser mais simples que a primeira versão.

Não porque os engenheiros ficaram mais inteligentes.

Mas porque eles finalmente entenderam o problema.

Um caso recente que ilustra isso muito bem é um pequeno projeto chamado Gemini Watermark Cleaner.

O objetivo parece trivial:

remover o watermark das imagens geradas pelo Gemini.

Mas o caminho técnico foi tudo menos trivial.

A evolução foi algo assim:

OpenCV
↓
modelo de IA pesado
↓
algoritmo matemático simples

Sim.

A versão final removeu toda a IA do sistema.

O problema real (que quase ninguém percebe)

Quando você vê um watermark numa imagem, parece que basta:
• apagar
• borrar
• preencher

Mas o watermark do Gemini normalmente é aplicado usando alpha blending.

Ou seja:

pixel_final = α * watermark + (1 - α) * original

Isso significa que os pixels foram misturados matematicamente.

Para recuperar a imagem original, você precisa reverter essa equação.

Esse detalhe muda completamente o tipo de solução.

Fase 1 — A solução óbvia: OpenCV

A primeira versão pública (v1.0.0) seguiu o caminho clássico da visão computacional.

OpenCV rodando no browser.

O pipeline era algo como:

detectar watermark
↓
gerar máscara
↓
inpainting

O projeto foi lançado com:
• smart detection
• adaptive masks
• processamento 100% local no browser 

Isso funcionava razoavelmente bem.

Mas logo apareceram problemas:
• falhas de detecção
• artefatos visuais
• problemas de inicialização do OpenCV no browser

Tanto que várias versões seguintes foram apenas hotfixes para estabilidade do pipeline. 

Esse é um padrão clássico:

quando você passa mais tempo consertando infra do que melhorando o produto, o modelo provavelmente está errado.

Fase 2 — A solução hype: IA

Depois veio a solução que todo mundo espera em 2025:

colocar IA no problema.

A versão v2.0.0 introduziu um modelo de image inpainting (LaMa). 

A ideia:

o modelo entende o contexto da imagem e reconstrói o fundo.

Isso trouxe melhorias reais:
• reconstrução muito mais natural
• watermark praticamente invisível
• qualidade muito maior

Mas também trouxe os problemas típicos:
• modelos grandes
• consumo de memória
• carregamento pesado
• latência alta

Em discussões de usuários na época, o processamento podia levar 30–50 segundos dependendo da resolução. 

Ou seja:

qualidade ↑
simplicidade ↓

Fase 3 — A pergunta que mudou tudo

Depois de algum tempo alguém fez a pergunta certa:

precisamos mesmo de IA para isso?

Porque o watermark do Gemini tem características muito específicas:
• posição previsível
• formato fixo
• opacidade consistente

Isso significa que o problema não é genérico.

É determinístico.

Fase 4 — engenharia reversa do watermark

Se a imagem foi criada assim:

watermarked = α * logo + (1 - α) * original

Então basta inverter:

original = (watermarked - α * logo) / (1 - α)

Isso é basicamente reverse alpha blending.

Nenhuma IA.

Nenhum modelo.

Só matemática.

Fase 5 — a simplificação radical

Na versão v3.0.0, o projeto abandonou completamente os modelos de IA.

O resultado foi radical:
• processamento em milissegundos
• extensão 98% menor
• 2MB em vez de ~200MB
• memória praticamente zero 

Além disso, a arquitetura foi reescrita para usar um pipeline Blob-based direto em memória, eliminando o antigo fluxo baseado em URLs que causava falhas de processamento. 

Isso também resolveu um problema recorrente:

imagens que simplesmente falhavam no processamento.

Arquitetura final

O pipeline hoje é basicamente isso:

download image
↓
detect watermark region
↓
reverse alpha blending
↓
export clean image

Sem IA.

Sem modelos.

Sem GPU.

Uma decisão arquitetural importante

Desde a primeira versão, o projeto adotou um princípio forte:

tudo roda no browser.

Isso significa:
• nenhuma imagem enviada para servidor
• latência mínima
• privacidade total
• escalabilidade infinita

Essa escolha apareceu desde o lançamento oficial da ferramenta. 

O lado humano da engenharia

Essa evolução também mostra algo interessante sobre produtos reais.

Muitas vezes a timeline é assim:

v1 → solução óbvia
v2 → solução hype
v3 → solução correta

Ou em termos de engenharia:

complexidade
↓
mais complexidade
↓
entendimento do problema
↓
simplicidade

A ironia da história

O projeto começou usando:
• visão computacional
• WebAssembly
• modelos de deep learning

E terminou com:

uma fórmula matemática rodando em JavaScript.

Isso acontece mais vezes do que imaginamos.

Se quiser testar

Existe uma demo pública que roda direto no browser:

https://geminiwatermarkcleaner.com/gemini-watermark-remover.html

A lição real

Muita gente acha que engenharia é sobre adicionar tecnologia.

Mas na prática, engenharia é sobre remover complexidade desnecessária.

E às vezes a melhor solução…

é aquela que você só descobre depois de tentar tudo o resto.

Carregando publicação patrocinada...
0