Плакаты широко используются в многочисленных коммерческих и некоммерческих контекстах для продвижения и распространения информации как вид медиа с художественными и практическими элементами. Например, компании электронной коммерции используют привлекательные баннеры для рекламы своей продукции. Веб-сайты общественных мероприятий, например, конференций, часто украшаются образовательными плакатами.
Text2Poster — уникальная система, автоматический генератор плакатов, которая использует обширную предварительно обученную визуальную и текстовую модель для создания соответствующих изображений фона из входных текстов, как показано на рисунке ниже.
Вот как объясняют процесс сами авторы (Chuhao Jin, Hongteng Xu, Ruihua Song, Zhiwu Lu): «Имитируя процесс ручного редактирования плакатов, наша система использует крупномасштабную предварительно обученную визуально-текстовую модель для получения фоновых изображений из заданных текстов, выстраивает тексты на изображениях итеративно с помощью каскадных автокодеров, и, наконец, стилизует тексты с помощью метода, основанного на сопоставлении. Мы обучаем модули системы с помощью стратегий слабого и самоконтролируемого обучения, что снижает потребность в меченых данных. Объективные и субъективные эксперименты показывают, что наш Text2Poster превосходит современные методы, включая академические исследования и коммерческое программное обеспечение, по качеству создаваемых постеров.«
Ссылка на Github проекта Text2Poster: https://github.com/chuhaojin/Text2Poster-ICASSP-22.
Чтобы проверить работу генератора плакатов достаточно запустить Python-файл, предварительно внеся свои данные:
import os, time, json, requests
timestamp = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
input_text_elements = {
"sentences": [
["CHILDREN'S DAY", 90], # [text, font_size]
["Children are The Future of Nation", 50] # [text, font_size]
],
"background_query": "Children's Day!" # sentence used to retrieve background images.
}
input_text_elements = json.dumps(input_text_elements)
api_url = "http://bl.mmd.ac.cn:8889/text2poster"
response = requests.get(api_url, params = {"input_text_elements": input_text_elements})
f = open("poster-{}.jpg".format(timestamp), "wb")
f.write(response.content)
f.close()
print("Save poster to:", "poster-{}.jpg".format(timestamp))
Ниже результаты, которые получились у нас. Можно определенно сказать, что Text2Poster пока плохо понимает русский язык, зато понимает по-китайски. Также не понятно — ориентируется ли нейросеть на слова, указанные в заголовке и подзаголовке.
prompt: celebrating the new year at the TV in a Soviet apartment at the table
prompt: ussr 80s
prompt: winter in Petersburg
Хорошие ли плакаты получились на выходе? — Определенно не очень. Но сама мысль о том, что создание плакатов и постеров можно поставить на поток, довольно скоро начнет будоражить умы — и разработчиков, и предприимчивых людей.
А вот и плакаты от самих авторов: