O conteúdo adulto ilustrado criado no Japão deve ser censurado por lei. Dois tipos comuns de censura envolvem barras de censura e desfoques de mosaico. Para nós, degenerados que vivemos fora do Japão, isso significa que também estamos sujeitos às grades e aos mosaicos. Existe uma solução, DeepCreamPy da deeppomf que pode passar por cima dos censores, desde que você diga onde estão os censores. Esse é um processo longo e trabalhoso, por isso espero automatizá-lo com este projeto. Este projeto utilizará aprendizagem profunda e segmentação de imagens, técnicas normalmente utilizadas em veículos autônomos e tarefas de visão computacional. Novidade na versão 1.6.3, adicionamos ESRGAN como uma alternativa ao DeepCreamPy, que também irá decensorar uma imagem/vídeo em mosaico após a detecção.
Isso é construído sobre o Mask R-CNN da Matterport, e a decensoração de vídeo usa ESRGAN.
Aqui está um vídeo NSFW que mostra melhor o que esse projeto faz, no antigo modelo 161.
Twitter (NSFW).
Gostou do que você vê? Ajude a financiar este projeto:
Você pode participar de discussões sobre desenvolvimento e notícias no canal Discord: https://discord.gg/j4dPZ7W
Exemplo de detecção de barra no modelo 226:
Exemplos de detecção de mosaico no modelo 236:
Para ambos os exemplos, o modelo mais recente 161 fornece máscaras e detecção muito mais precisas.
Você precisará de todos os mesmos requisitos da implementação do Mask RCNN do Matterport, nada mais. Observe que estou usando tensorflow 1.8.0, tensorflow-gpu 1.9.0, torch 0.4.1 e keras 2.2.0. Não testei totalmente a estabilidade das combinações mais recentes. Eu uso o Anaconda3 para minha linha de comando.
Apenas o Windows é compatível com o executável. Você pode extrair este código para Linux.
main.py Contém GUI e todo o tratamento de E/S e análise de arquivos, junto com detecção básica de erros. Instancia a classe do detector.
detector.py Contém minha classe de detector, que é responsável pela inicialização da rede neural, iniciando a detecção de inferência e criando sobreposição de máscara para DCP. Não precisa mais do hentai.py e pode executar detecções por conta própria. Também lida com a funcionalidade ESRGAN.
hentai.py Interfaces entre meu detector e o modelo. Baseado na implementação do Balloon.py da Máscara RCNN. Necessário apenas para treinamento.
inspecionar_h_model.ipynb Este notebook é idêntico ao notebook balão. Em vez disso, modifiquei-o para funcionar com este projeto e é melhor usado para inspecionar um modelo. Para registro detalhado, use o Tensorboard (que deve ser instalado se você tiver o tensorflow)
inspecionar_h_data.ipynb O mesmo que acima, exceto que este notebook é usado para validar o conjunto de dados. Também contém informações interessantes mostrando algumas das peculiaridades e recursos do MaskRcnn
test_combined_generator.py Script que automatiza a censura e anotação de barras, mais explicado abaixo. Isso deve ser colocado em uma pasta separada e espera imagens não censuradas em uma pasta chamada "decensored_input" e gera a imagem barrada em "decensored_input_original" e preenche um csv com as anotações. Você não precisa usar este script, a menos que queira ajudar na expansão do conjunto de dados. Nesse caso, entre no discord e entre em contato comigo.
hent_AI_COLAB_1.ipynb Bloco de anotações do Google Colab com instruções para decensuração de vídeo ESRGAN. Isso usará as GPUs do Google na nuvem gratuitamente e deverá ser mais rápido do que a maioria, senão todas as GPUs de consumo. Porém, as sessões serão excluídas após 30 minutos de inatividade ou 12 horas. Recomendo esta opção para qualquer tipo de decensuração de vídeo, é visualmente boa e muito rápida.
green_mask_project_mosaic_resolution.py Script do GMP que estima a granularidade de um mosaico (tamanho das caixas do mosaico) para uso na decensuração ESRGAN.
hconfig.ini Arquivo de configuração que contém informações de diretório.
O conjunto de dados tem uma mistura de algumas anotações feitas à mão e, principalmente, imagens anotadas feitas à mão usando nosso test_combined_generator. Este script recebe imagens sem censura como entrada e pode criar um clone da imagem com um mosaico e barras de censura aleatórias, usando NudeNet. Este conjunto de dados não é fornecido aqui. Você pode entrar em contato comigo no Discord se estiver interessado.
As anotações do conjunto de dados foram feitas com a forma de polígono. Os atributos de região de barra e mosaico são formatados como:
"region_attributes":{"censor":"bar"}} OR "region_attributes":{"censor":"mosaic"}}
Aqui está uma amostra (NSFW) das anotações do meu conjunto de dados, junto com o editor vgg.
Você vai querer o modelo mais recente para melhor precisão.
Modelo 161 (obsoleto)
Modelo 226
Modelo 236 *Embalado com v1.5
(Último) Modelo 268
Simplesmente exclua o arquivoweights.h5 atual e substitua pelo novo. Por favor, mantenha o modelo nomeado como pesos.h5
ESRGAN (apenas no código) está usando o modelo de pixels fatais de Twittman para superescalamento 4x. Não está neste repositório porque é protegido pelo MPL-2.0. Baixe o modelo 340000 aqui em seu repositório. Coloque este modelo no diretório principal.
Você precisará baixar e instalar o DeepCreamPy, cujo link está na introdução.
O executável precisará do ffmpeg se você quiser que o som continue nos vídeos. Coloque ffmpeg.exe no diretório principal ou em algum lugar definido em seu PATH ou em uma variável de ambiente. Para Linux, clone o repositório e siga as instruções fornecidas para obter seus requisitos. Para obter o ffmpeg no Linux ou Colab, use:
!sudo add-apt-repository ppa:jon-severinsson/ffmpeg
!sudo apt-get update
!sudo apt-get install ffmpeg
(Código fonte no Windows) Eu recomendaria executá-los em um ambiente virtual, com Anaconda3. Python 3.5.2, TensorFlow 1.8, Keras 2.2, tensorflow-gpu 1.9.0, torch 0.4.1 e outros pacotes comuns listados em requirements.txt
.
Por enquanto, o DCP é necessário até que eu possa criar minha própria alternativa. Este projeto espera usar o diretório DCP. Você pode instalar o executável ou o código-fonte, ambos devem funcionar.
DCP é compatível SOMENTE com imagens .png e não jpg. Você usa apenas png ou tenta o conversor jpg fornecido (botão Forçar jpg). Você pode usar ferramentas online como jpg2png. Novamente, isso deve ser feito antes de qualquer coisa.
DCP NÃO é compatível com screentones ou com aquele efeito pontilhado característico de trabalhos impressos (veja abaixo). Basta consultar meu outro projeto, Screentone Remover, que removerá screentones em lote usando técnicas de processamento de sinal digital. Esta é a única maneira de as imagens impressas não coloridas serem descensuradas.
Aqui está um exemplo de imagem com tons de tela e sua aparência quando removida pelo aplicativo Screentone Remover:
Para decensor completo do vídeo via ESRGAN, você precisará baixar o modelo de Twittman aqui e colocá-lo dentro da pasta ColabESRGAN/models.
Proprietários de GPU Nvidia devem instalar CUDA 9.0 e cuDNN 7.6.4. Observe que há problemas com placas RTX e ESRGAN, então, se você quiser usá-los, recomendo novamente o notebook Colab.
Eu recomendo fortemente executar hent-AI em lotes, por exemplo, um doujin ou alguns doujins de uma vez. A parte mais lenta do hent-AI é a inicialização, então a primeira inferência leva tempo, mas o resto será mais rápido.
O modelo atual não é perfeito. Ainda. Espere alguns problemas com barras de censura brancas, barras de censura pequenas, barras de censura parcialmente transparentes e barras de censura que são fundidas como um grande censor. Qualquer quantidade absurda de censura pode causar problemas para a IA hent.
Este modelo não está treinado para reconhecer a censura total, onde a genetália não é desenhada. A censura fora do padrão também não é suportada.
O modelo suporta mosaicos e barras, mas apresenta dificuldades quando ambos são usados no mesmo local. Além disso, o DCP só pode gerar barras ou mosaicos, portanto, você precisará manter os trabalhos de censura em mosaico separados dos trabalhos censurados em barras. Se você precisar decensorar imagens com ambos, sugiro decensorar as barras em uma execução e, em seguida, os mosaicos em uma execução de segundos.
GPUs Nvidia compatíveis com CUDA são recomendadas para grandes quantidades de imagens ou vídeos. Se você não tiver um, consulte o caderno colab.
O botão Video Maker cria um vídeo a partir da saída do DCP em decensored_output. Execute isso após a conclusão do DCP. Observe que você ainda precisa selecionar os diretórios do vídeo de origem e o diretório de instalação do DCP.
Não coloque clipes inteiros na detecção de vídeo, é uma tarefa muito lenta. Se puder, edite apenas os clipes curtos com mosaicos visíveis, obtenha a saída sem censura e edite-os no restante do vídeo.
A versão exe compilada não suporta ESRGAN. Se você quiser usar isso, consulte o caderno colab.
v1.0.0: lançamento inicial para demonstração do HackIllinois 2020
v1.1.0: Código limpo, remoção de importações desnecessárias de biblioteca, instruções de instalação e tutorial adicionados. Adicionada detecção de erros.
v1.2.0: versão executável baseada no branch somente detecção. Bibliotecas de treinamento e redundantes foram removidas ou realocadas. Bug onde a imagem inteira retorna verde corrigido. Limiar de detecção reduzido.
v1.3.0: (exe ainda não lançado) Removido o erro não Unicode. Adicionado pop-up de tela de carregamento. Limiar de detecção reduzido. Pequenas alterações na interface do usuário.
v1.4.0: Corrigido detector de vídeo nomeando arquivos incorretamente. Adicionado pop-up de carregamento. Ajustes na interface do usuário. Limiar de detecção reduzido.
v1.5.0: Corrigido erro de formato em escala de cinza. Corrigido bug onde o vídeo era copiado para a pasta DCP. Adicionado suporte para jpg, como uma opção para conversão de jpg em png. Adicionada melhor captura de exceções. Pesos atualizados para o modelo 236.
v1.5.2: Tensorflow atualizado para 1.8 em preparação para futuros recursos de detecção de vídeo. Erros de imagem não param mais o programa e são ignorados. A impressão do terminal é mais informativa. Ajustes na interface do usuário.
1.6.3: Adicionado ESRGAN para decensura de vídeo, DCP não é necessário para isso. Suporte adicional para nomes de arquivos não Unicode.
1.6.5: Adicionada verificação de granularidade de mosaico adaptativo via GMP por rekaXua. Adicionado arquivo colab para decensuração de vídeo ESRGAN gratuita baseada em nuvem.
1.6.7: Os processos ESRGAN foram alterados para serem executados em 2 fases: redimensionamento do ESRGAN e, em seguida, detecção de máscara. Mais lento, mas mais indulgente com a memória. Adicionado desfoque de máscara para menos costuras no ESRGAN. Para não-ESRGAN, foi adicionada dilatação personalizada para expandir as máscaras. Opção removida para jpg, ela será usada automaticamente. Limpeza de arquivos aprimorada.
1.6.8: Os vídeos agora terão áudio do vídeo de origem, usando ffmpeg. A taxa de bits de vídeo variável ainda não está disponível, portanto, os tamanhos dos arquivos podem não corresponder à fonte. ESRGAN agora salvará os vídeos no mesmo diretório do vídeo de origem, principalmente para ajudar no Colab.
1.6.9: Pequenos ajustes na interface do usuário. Agora existe um hconfig.ini que salvará seus diretórios e configurações usados anteriormente na inicialização. Durante o processo de detecção de imagens e vídeo, a contagem total de imagens/quadros será exibida.
1.6.9b: Hotfix para vídeo ESRGAN e ESRGAN. Bug corrigido com o .ini. Nota: .exe não é afetado, portanto não há necessidade de outra versão.
1.6.9c: Hotfix para decensuração de imagem e mosaico para colab. Nota: .exe não é afetado, portanto não há necessidade de outra versão.
Para obter instruções detalhadas, siga Install_and_Tutorial.txt
Executável:
Instale a partir dos links acima
Extraia para alguma pasta
Siga Install_and _tutorial para mais
Código:
pip install -r requirements.txt
python setup.py install
python main.py
No diretório principal. Siga as instruções da IU a partir daí.
python sampleshentaihentai.py train --dataset=dataset_img/ --weights=path/to/weights
Alternativamente, você pode retomar o treinamento usando --weights=last
Contribuições e melhorias para este repo são bem-vindas, por isso eu encorajaria a adesão ao Discord.
Inspiração do DeepCreamPy
Implementação de máscara Rcnn do Matterport
Pesos obtidos do chainer-DCGAN de Mattya
Implementação ESRGAN deste artigo, usando sua arquitetura antiga fornecida por styler00dollar
Usando o modelo treinado de pixels fatais de Twittman.
Conjunto de dados anotado com anotador VGG
Exemplos de imagens de ativos do artista @ao_beni, 落書き色々まとめ e @paxiti respectivamente. A garota Screentone é do artista Soranosuzume.
Imagens de ativos atuais de うぱ西まり子 e bibimbub no Pixiv.