Картинка лучше тысячи слов

Это мой первый блог из серии - Использование компьютерного зрения и глубокого обучения для улучшения фотографии.

Лучший способ создать ценность в 21 веке - соединить творчество с технологиями, - Стив Джобс.

Самые большие последние достижения в области фотоаппаратов связаны с искусственным интеллектом, а не с датчиками и линзами. За последние пару лет технологии позволили ошеломляюще продвинуться в фотографии. ИИ меняет как способ съемки фотографий, так и их редактирование.

Поскольку «компьютерное зрение» становится важной частью других новых технологий, таких как беспилотные автомобили, ИИ будет становиться все более изощренным, когда дело доходит до интерпретации и понимания содержания наших изображений.

Как увлеченный фотограф, я всегда стремлюсь автоматизировать ручные задачи, чтобы сосредоточиться на создании творческого контента. В этом проекте я расскажу, как за несколько простых шагов создать и настроить облако слов, используя свои собственные изображения.

Цель: превратить фотографии в типографику с помощью облака слов в Python.

Одна картинка стоит тысячи слов. Буквально! На этой картинке более 2200 слов. 😱

Типографика. Это искусство визуально расположить текст. Он направлен на то, чтобы вызвать определенные эмоции и передать определенные сообщения.

В какой-то момент люди буквально брали буквы и символы и размещали их в физическом пространстве. В этом проекте я покажу, как мы можем использовать возможности облака слов в Python, чтобы сделать эту форму искусства масштабируемой и создать ее за несколько минут.

Облако слов. Облако слов - это метод визуализации данных, используемый для представления текстовых данных, в которых размер каждого слова указывает его частоту или важность. Облака слов широко используются для анализа данных с веб-сайтов социальных сетей для анализа настроений.

Для создания облака слов в Python необходимы модули: matplotlib, OpenCV и wordcloud.

Вот шаги:

1. Сбор соответствующих данных (веб-скрейпинг)

2. Очистка данных и обработка естественного языка (NLP)

3. Создание масок из изображения и создание облаков слов.

  1. Сбор релевантных данных:

Для этого проекта, чтобы получить список самых популярных слов в области фотографии, я убрал названия 836 курсов фотографии (например, Advanced Portrait Editing Techniques) с популярного сайта фотографии KelbyOne. Я удалил данные с 70 страниц с помощью модуля Python Scrapy. Эти курсы были загружены с 2006 года.

2. Предварительная обработка текста:

Я использовал модуль Python Spacy для выполнения обработки естественного языка (NLP)

  • Токенизация

Это процесс разделения строки на составляющие ее токены. Эти знаки могут быть словами или знаками препинания.

Название курса: «Что за вспышка? Управляя своим светом »

Жетоны: [«Что», «То», «Вспышка», »?», «Контролирующий», «Ваш», «Свет»]

  • Лемматизация

Преобразуйте слово в его базовую форму:

Например. такие слова, как сокращение, сокращение, сокращение, сокращение, будут преобразованы в сокращение.

  • Методы очистки текста:

Удаление ненужных пробелов, знаков препинания, специальных символов (чисел, смайликов и т. Д.) И неалфавитных маркеров (например, D750)

  • Запрещенные слова

Слова, которые встречаются очень часто и не добавляют особого смысла предложению.

Например. Артикли (a, the и т. Д.), Быть глаголами (is, am и т. Д.), Местоимениями (he, she и т. Д.)

После обработки у нас есть в общей сложности 3558 слов в данных и 1133 уникальных слова, все слова в данных используются при создании облака слов.

В облаке слов наиболее частые слова более заметны (чем больше частота, тем больше размер шрифта).

3. Создание масок из изображения и создание облаков слов

Я создал 2 маски изображения в фотошопе и применил облако слов отдельно в каждой из них. Текст заполняет черную часть маски. Каждая маска заполнена всеми 1100+ уникальными словами.

Замаскируйте облако 1 слова:

Я оставил черный фон и белый текст для маски 1, чтобы выделить объект и арку памятника.

Текстовая строка всех 3558 слов (из которых 1133 слова уникальны) передается в функцию wordcloud.

Фрагмент кода:

import cv2
from wordcloud import WordCloud 
import matplotlib.pyplot as plt#White text Black Background
image = cv2.imread("D:/Photography/Typography/mask1.jpg", 1)
wordcloud = WordCloud(background_color='black', mask=image,                    mode="RGB", color_func=lambda *args, **kwargs: "white", 
width=1000 , max_words=100, height=1000, random_state=1).generate(text)fig = plt.figure(figsize=(25,25))
plt.imshow(wordcloud, interpolation='bilinear')
plt.tight_layout(pad=0)
plt.axis("off")
plt.show()

Я создал несколько облаков слов и сохранил лучшее. Изменение значения аргумента «random_state» приводит к разным результатам.

Вы также можете настроить количество слов в облаке слов, изменив значение аргумента «max_words».

Аргумент «интерполяция = билинейная» используется для того, чтобы изображение выглядело более гладким.

Облако слов маски 2:

Я оставил белый фон и текст в цвете для маски 2, чтобы добавить деталей и интереса к типографике.

Фрагмент кода:

#Colored text white Background
image = cv2.imread("D:/Photography/Typography/mask2.jpg", 1)
wordcloud = WordCloud(background_color='white', mask=image, mode="RGB", max_words=1200, width=1000 , height=1000, random_state=2).generate(text)fig = plt.figure(figsize=(25,25))
plt.imshow(wordcloud, interpolation='bilinear')
plt.tight_layout(pad=0)
plt.axis("off")
plt.show()

Я объединил каждое облако слов с маской, чтобы получить следующий результат:

Окончательный результат после их объединения в фотошопе.

Облако слов может быть создано при любом разрешении, что делает его очень актуальным для печати в большом размере. Я изучаю, как я могу вставлять слова по порядку из стихов или рассказов, чтобы это искусство было более значимым. В моем следующем блоге из этой серии я буду говорить о передаче художественного стиля, рисовании трехмерных изображений и многом другом.

Я применил эту технику в своих фотоработах, и результаты потрясающие!

Спасибо за чтение! Надеюсь, вам понравилась статья. Если вы хотите быть в курсе моих статей, подписывайтесь на меня.

Я поделился изображениями (я сохраняю за собой права на все изображения, использованные в этой статье, они сняты мной) и масками, так что вы можете поэкспериментировать с этим самостоятельно.

Ссылка: https://drive.google.com/open?id=13cf8Vna9Fc0VgEh7H9ZarXRadgTJL2OU

Читайте другие мои блоги:





Использованная литература:

Https://www.kaggle.com/aashita/word-clouds-of-various-shapes

Https://www.datacamp.com/community/tutorials/wordcloud-python

Https://www.pluralsight.com/guides/natural-language-processing-visualizing-text-data-using-word-cloud

Https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html