Zhewei Huang, Wen Heng, Shuchang Zhou
Mostramos como ensinar máquinas a pintar como pintores humanos, que podem usar um pequeno número de golpes para criar pinturas fantásticas. Ao empregar um renderizador neural na aprendizagem de reforço profundo (DRL) baseado em modelos, nossos agentes aprendem a determinar a posição e a cor de cada AVC e fazer planos de longo prazo para decompor imagens ricas em textura em traços. As experiências demonstram que excelentes efeitos visuais podem ser alcançados usando centenas de derrames. O processo de treinamento não requer a experiência de pintores humanos ou dados de rastreamento de AVC.
Você pode usar facilmente colaboratório para tentar.






pip3 install torch==1.1.0
pip3 install tensorboardX
pip3 install opencv-python
Verifique se há renderizador.pkl e ator.pkl antes do teste.
Você pode baixar um renderizador neural treinado e um ator Celeba para teste: renderer.pkl e ator.pkl
$ wget "https://drive.google.com/uc?export=download&id=1-7dVdjCIZIxh8hHJnGTK-RA1-jL1tor4" -O renderer.pkl
$ wget "https://drive.google.com/uc?export=download&id=1a3vpKgjCVXHON4P7wodqhCgCMPgg1KeR" -O actor.pkl
$ python3 baseline/test.py --max_step=100 --actor=actor.pkl --renderer=renderer.pkl --img=image/test.png --divide=4
$ ffmpeg -r 10 -f image2 -i output/generated%d.png -s 512x512 -c:v libx264 -pix_fmt yuv420p video.mp4 -q:v 0 -q:a 0
(make a painting process video)
Também fornecemos alguns outros renderizadores e agentes neurais, você pode usá -los em vez de renderize.pkl para treinar o agente:
triângulo.pkl --- ator_triangle.pkl;
redond.pkl --- ator_round.pkl;
bezierwotrans.pkl --- ator_notrans.pkl
Também fornecemos 百度网盘 fonte. 链接: https://pan.baidu.com/s/1gelbqceyojpobziwgoknma 提取码: aq8n
Faça o download do conjunto de dados Celeba e coloque as imagens alinhadas em dados/img_align_celeba/******. JPG
Para criar um ambiente de pintura diferenciável, precisamos treinar o renderizador neural primeiro.
$ python3 baseline/train_renderer.py
$ tensorboard --logdir train_log --port=6006
(The training process will be shown at http://127.0.0.1:6006)
Depois que o renderizador neural parece bom o suficiente, podemos começar a treinar o agente.
$ cd baseline
$ python3 train.py --max_step=40 --debug --batch_size=96
(A step contains 5 strokes in default.)
$ tensorboard --logdir train_log --port=6006
量子位报道
Aprendendo a pintar: 一个绘画 Ai
旷视研究院推出基于深度强化学习的绘画智能体

Muito obrigado ao CTMAKRO por inspirar este trabalho. Ele também explorou usando o algoritmo ganancioso para gerar pinturas - OpenCv_Playground.
Se você achar esse repositório útil para sua pesquisa, cite o seguinte artigo:
@inproceedings{huang2019learning,
title={Learning to paint with model-based deep reinforcement learning},
author={Huang, Zhewei and Heng, Wen and Zhou, Shuchang},
booktitle={Proceedings of the IEEE International Conference on Computer Vision (ICCV)},
year={2019}
}