<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>@python_lounge</title><author><name>@python_lounge</name></author><id>https://teletype.in/atom/python_lounge</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/python_lounge?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@python_lounge?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=python_lounge"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/python_lounge?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-06-19T09:16:17.749Z</updated><entry><id>python_lounge:olymptask</id><link rel="alternate" type="text/html" href="https://teletype.in/@python_lounge/olymptask?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=python_lounge"></link><title>Олимпиадная задача про словарь</title><published>2021-04-08T08:26:25.927Z</published><updated>2021-04-08T08:26:25.927Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/6e/26/6e26f0d2-0ca0-4dd8-8685-d5d3cf1dba10.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/a6/85/a685e388-ee1f-4d0b-9fb9-367aee1e6325.png&quot;&gt;Я вижу, что вам больше нравится практика, нежели теория :)</summary><content type="html">
  &lt;p&gt;Я вижу, что вам больше нравится практика, нежели теория :)&lt;/p&gt;
  &lt;p&gt;Сегодня я разберу одну из олимпиадных задач, довольно простую.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/a6/85/a685e388-ee1f-4d0b-9fb9-367aee1e6325.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Суть задачи в том, чтобы из англо-латинского словаря сделать латино-английский.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Примеры тестов&lt;/strong&gt;&lt;/p&gt;
  &lt;blockquote&gt;Входные данные&lt;/blockquote&gt;
  &lt;blockquote&gt;3&lt;br /&gt;apple - malum, pomum, popula&lt;br /&gt;fruit - baca, bacca, popum&lt;br /&gt;punishment - malum, multa&lt;/blockquote&gt;
  &lt;blockquote&gt;Выходные данные&lt;/blockquote&gt;
  &lt;blockquote&gt;7&lt;br /&gt;baca - fruit&lt;br /&gt;bacca - fruit&lt;br /&gt;malum - apple, punishment&lt;br /&gt;multa - punishment&lt;br /&gt;pomum - apple&lt;br /&gt;popula - apple&lt;br /&gt;popum - fruit&lt;/blockquote&gt;
  &lt;p&gt;Входные данные черпаются из input.txt, вывод сбрасывается в output.txt. Довольно стандартное требование.&lt;br /&gt;Входные данные лексикографически отсортированы, и выходные данные тоже требуются отсортированными.&lt;/p&gt;
  &lt;p&gt;Вначале я покажу своё решение, потом начну объяснять. Итак, моё решение:&lt;/p&gt;
  &lt;blockquote&gt;f = open(&amp;#x27;input.txt&amp;#x27;)&lt;br /&gt;N = f.readline()&lt;br /&gt;d = {}&lt;br /&gt;&lt;strong&gt;for&lt;/strong&gt; line &lt;strong&gt;in&lt;/strong&gt; f:&lt;br /&gt;words = line.strip().split(&amp;#x27; - &amp;#x27;)&lt;br /&gt;en = words[0]&lt;br /&gt;lat = words[1].split(&amp;#x27;, &amp;#x27;)&lt;br /&gt;&lt;strong&gt;for&lt;/strong&gt; key &lt;strong&gt;in&lt;/strong&gt; lat:&lt;br /&gt;&lt;strong&gt;if&lt;/strong&gt; key &lt;strong&gt;in&lt;/strong&gt; d:&lt;br /&gt;d[key].append(en)&lt;br /&gt;&lt;strong&gt;else&lt;/strong&gt;:&lt;br /&gt;d[key] = [en]&lt;br /&gt;f.close()&lt;/blockquote&gt;
  &lt;blockquote&gt;&lt;strong&gt;for&lt;/strong&gt; key &lt;strong&gt;in&lt;/strong&gt; d:&lt;br /&gt;d[key].sort()&lt;/blockquote&gt;
  &lt;blockquote&gt;g = open(&amp;#x27;output.txt&amp;#x27;, &amp;#x27;w&amp;#x27;)&lt;br /&gt;g.write(str(len(d)) + &amp;#x27;&lt;strong&gt;\n&lt;/strong&gt;&amp;#x27;)&lt;br /&gt;&lt;strong&gt;for&lt;/strong&gt; lat &lt;strong&gt;in&lt;/strong&gt; sorted(d):&lt;br /&gt;g.write(lat + &amp;#x27; - &amp;#x27; + &amp;#x27;, &amp;#x27;.join(d[lat]) + &amp;#x27;&lt;strong&gt;\n&lt;/strong&gt;&amp;#x27;)&lt;/blockquote&gt;
  &lt;blockquote&gt;g.close()&lt;/blockquote&gt;
  &lt;p&gt;А теперь объяснение. Приготовились... :)&lt;/p&gt;
  &lt;p&gt;Открываем файл, читаем число N (оно нам не понадобится); создаём пустой словарь.&lt;/p&gt;
  &lt;p&gt;Отделяем слово от его переводов; из строки с переводами получаем список латинских слов.&lt;/p&gt;
  &lt;p&gt;Далее смотрим, есть ли латинское слово в нашем словаре. Если есть - дописываем ещё один английский перевод. Если нет - пишем его. После махинаций закрываем файл. Далее нужно все списки переводов отсортировать (требования задачи).&lt;/p&gt;
  &lt;p&gt;Открываем файл на запись. Первой строкой записываем число получившихся слов. Далее в отсортированном порядке записываем латинские слова, затем их переводы. Закрываем файл.&lt;/p&gt;
  &lt;p&gt;Задача решена, все тесты пройдены.&lt;/p&gt;
  &lt;p&gt;Несомненно, возможны и другие решения, но это мне показалось наиболее красивым.&lt;br /&gt;&lt;br /&gt;Наш &lt;a href=&quot;https://t.me/joinchat/TbrMYzijgX7FmYOV&quot; target=&quot;_blank&quot;&gt;уютный чат&lt;/a&gt;, где мы обсуждаем Python&lt;br /&gt;&lt;br /&gt;Подписывайтесь на наши каналы: &lt;br /&gt;Python &lt;a href=&quot;https://t.me/python_lounge&quot; target=&quot;_blank&quot;&gt;@python_lounge&lt;/a&gt;&lt;br /&gt;Программирование &lt;a href=&quot;http://t.me/cccoding&quot; target=&quot;_blank&quot;&gt;@cccoding&lt;/a&gt;&lt;br /&gt;ИТ Безопасность &lt;a href=&quot;http://t.me/it_ha&quot; target=&quot;_blank&quot;&gt;@it_ha&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>python_lounge:top10mlproject</id><link rel="alternate" type="text/html" href="https://teletype.in/@python_lounge/top10mlproject?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=python_lounge"></link><title>Примеры проектов по машинному обучению — 10 лучших</title><published>2021-03-11T12:25:04.386Z</published><updated>2021-03-11T12:25:31.073Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/5e/11/5e11876d-0b59-433a-956a-ac5111dc2b3f.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1677529/pub_5e805b53862a504fb17acce0_5e805b7f6300d51ddf2f2d2c/scale_1200&quot;&gt;Обучение искусственного интеллекта — задача непростая, но затраченные усилия сполна окупятся невероятными результатами, которых можно достичь благодаря ИИ. Хотите узнать больше о самых классных проектах по машинному обучению? Читайте нашу подборку.</summary><content type="html">
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1677529/pub_5e805b53862a504fb17acce0_5e805b7f6300d51ddf2f2d2c/scale_1200&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Обучение искусственного интеллекта — задача непростая, но затраченные усилия сполна окупятся невероятными результатами, которых можно достичь благодаря ИИ. Хотите узнать больше о самых классных проектах по машинному обучению? Читайте нашу подборку.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://magenta.tensorflow.org/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Magenta&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1112006/pub_5e805b53862a504fb17acce0_5e805b6e5f081e20a96582a8/scale_1200&quot; width=&quot;600&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Magenta&lt;/strong&gt; — детище компании Google, принцип работы которого основан на технологии машинного обучения. ИИ способен создавать музыкальные композиции, а также умеет работать с изобразительным искусством. Кроме того, инструмент может самообучаться и развиваться. Главная цель Magenta — разработка алгоритмов, которые смогут сочинять музыку и создавать другие произведения искусства, основываясь на уже существующих.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://www.tensorflow.org/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;TensorFlow&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1538671/pub_5e805b53862a504fb17acce0_5e805b6ebb31c2679c6e5949/scale_1200&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;TensorFlow&lt;/strong&gt; — это фреймворк для построения нейросетей и работы с ними от команды Google Brain. По своей сути, TensorFlow — огромная нейронная сеть, используя которую, можно не только решать различные задачи, но и обрабатывать данные для поиска правильного решения.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://github.com/luanfujun/deep-photo-styletransfer&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Deep Photo Style Transfer&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1899275/pub_5e805b53862a504fb17acce0_5e805b6ee366851eb08d89a8/scale_1200&quot; width=&quot;878&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Deep Photo Style Transfer&lt;/strong&gt; будет интересен не только программистам, но и тем, кто занимается фотографией и обработкой изображений. Эта программа способна скопировать особенности стиля одной фотографии и перенести их на другую, при этом сохранив фотореалистичность.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://github.com/lengstrom/fast-style-transfer&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Fast Style Transfer in TensorFlow&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1602847/pub_5e805b53862a504fb17acce0_5e805b6e8274cd4de9209357/scale_1200&quot; width=&quot;704&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Fast Style Transfer in TensorFlow&lt;/strong&gt; — технология на базе TensorFlow, которая, подобно предыдущей, может переносить стиль одного изображения на другое. Основное отличие состоит в том, что с помощью Fast Style Transfer вы можете преобразовать свои фотографии в картины, выполненные в технике любого художника, или накладывать на них различные визуальные эффекты.&lt;/p&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1582174/pub_5e805b53862a504fb17acce0_5e805b6e68b51338284324e5/scale_1200&quot; width=&quot;700&quot; /&gt;
    &lt;figcaption&gt;Курс по Machine LearningИдет набор в группу3 800₽ в месяцПОДРОБНЕЕ&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;h2&gt;&lt;a href=&quot;https://github.com/lllyasviel/style2paints&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Style2Paints&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1540250/pub_5e805b53862a504fb17acce0_5e805b71c52d023d8c954769/scale_1200&quot; width=&quot;629&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Style2Paints&lt;/strong&gt; станет хорошим помощником для тех художников, которые боятся цвета. Искусственный интеллект способен самостоятельно раскрасить изображение, при этом он может не только взять за основу цветовую гамму другой картинки, но и создать свои стили.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://unity3d.com/ru/machine-learning&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Unity Machine Learning Agents&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1589949/pub_5e805b53862a504fb17acce0_5e805b7101822a01b7223c52/scale_1200&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Unity Machine Learning Agents&lt;/strong&gt; — интересный и полезный продукт для разработчиков и научных сотрудников. Разработанный софт способен симулировать различные ситуации и игры для обучения ИИ — это делается с помощью API Python при использовании Unity Editor. В Unity Machine Learning Agents вы также можете имитировать различные среды для обучения искусственного интеллекта.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://github.com/DmitryUlyanov/deep-image-prior&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Deep-image-prior&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/42056/pub_5e805b53862a504fb17acce0_5e805b7264a4b71b3b0581e8/scale_1200&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Вам нужно реставрировать изображение или повысить его разрешение? Используйте &lt;strong&gt;Deep-image-prior&lt;/strong&gt;. Эта программа использует нейронные сети, чтобы убрать с изображения шумы и улучшить его качество. Одной из самых любопытных особенностей проекта является возможность восстановить утраченные части изображения, используя нейросеть.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://github.com/albertpumarola/GANimation&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;GANimation&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1863556/pub_5e805b53862a504fb17acce0_5e805b75e42ae31777317255/scale_1200&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;GANimation&lt;/strong&gt; — ИИ, который анимирует лица. Чтобы сотворить чудо, технологии нужно лишь одно изображение, при этом анимация не покажется жуткой, а будет максимально приближена к мимике реального человека. Для определении эмоций и при составлении сценария лицевых движений используются двигательные единицы.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;https://github.com/andabi/deep-voice-conversion&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Deep voice conversion&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1592246/pub_5e805b53862a504fb17acce0_5e805b756300d51ddf2f2d29/scale_1200&quot; width=&quot;1024&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Deep voice conversion&lt;/strong&gt; — это инструмент для работы со звуком. С его помощью можно имитировать голос любого человека, сохраняя при этом тембр, речевые особенности и многое другое. Для синтеза, естественно, понадобятся реальные записи или живой пример.&lt;/p&gt;
  &lt;h2&gt;&lt;a href=&quot;http://cmusatyalab.github.io/openface/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Face Recognition&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://avatars.mds.yandex.net/get-zen_doc/1897428/pub_5e805b53862a504fb17acce0_5e805b766300d51ddf2f2d2a/scale_1200&quot; width=&quot;765&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Face Recognition&lt;/strong&gt; — простая, но полезная технология, задействующая машинное обучение. Способна практически со стопроцентной вероятностью распознать лицо человека. При этом нейросеть работает в режиме реального времени и может понять, кто изображен на фотографии&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;true&quot;&gt;Не пропустите новые публикацииPython LoungeПодписаться&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://zen.yandex.ru/t/%D0%B8%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B8%D0%BD%D1%82%D0%B5%D0%BB%D0%BB%D0%B5%D0%BA%D1%82&quot; target=&quot;_blank&quot;&gt;искусственный интеллект&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://zen.yandex.ru/media/id/5e2b14b9f73d9d00ac83239c/primery-proektov-po-mashinnomu-obucheniiu--10-luchshih-5e805b53862a504fb17acce0&quot; target=&quot;_blank&quot;&gt;Источник&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>python_lounge:raspoznavaniepython</id><link rel="alternate" type="text/html" href="https://teletype.in/@python_lounge/raspoznavaniepython?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=python_lounge"></link><title>Создание модели распознавания лиц с использованием глубокого обучения на языке Python</title><published>2021-02-04T12:59:42.500Z</published><updated>2021-02-04T12:59:42.500Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/ef/29/ef29abd8-17bd-4ad4-8b68-fe1958f24e2c.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://teletype.in/files/9b/39/9b3905b7-b7ce-49ae-ba19-0b4100a2b676.png&quot;&gt;Автор оригинала: Файзан Шайх</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/9b/39/9b3905b7-b7ce-49ae-ba19-0b4100a2b676.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;a href=&quot;https://www.analyticsvidhya.com/blog/2018/12/introduction-face-detection-video-deep-learning-python/&quot; target=&quot;_blank&quot;&gt;Автор оригинала: Файзан Шайх&lt;/a&gt;&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://habr.com/ru/company/netologyru/&quot; target=&quot;_blank&quot;&gt;Блог компании Нетология&lt;/a&gt;,&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://habr.com/ru/hub/python/&quot; target=&quot;_blank&quot;&gt;Python&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Перевод&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;h2&gt;Введение&lt;/h2&gt;
  &lt;p&gt;За последние годы компьютерное зрение набрало популярность и выделилось в отдельное направление. Разработчики создают новые приложения, которыми пользуются по всему миру.&lt;br /&gt;В этом направлении меня привлекает концепция открытого исходного кода. Даже технологические гиганты готовы делиться новыми открытиями и инновациями со всеми, чтобы технологии не оставались привилегией богатых.&lt;/p&gt;
  &lt;p&gt;Одна из таких технологий — распознавание лиц. При правильном и этичном использовании эта технология может применяться во многих сферах жизни.&lt;/p&gt;
  &lt;p&gt;В этой статье я покажу вам, как создать эффективный алгоритм распознавания лиц, используя инструменты с открытым исходным кодом. Прежде чем перейти к этой информации, хочу, чтобы вы подготовились и испытали вдохновение, посмотрев это видео:&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/wr4rx0Spihs?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;h2&gt;Распознавание лиц: потенциальные сферы применения&lt;/h2&gt;
  &lt;p&gt;Приведу несколько потенциальных сфер применения технологии распознавания лиц.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Распознавание лиц в соцсетях&lt;/strong&gt;. Facebook заменил присвоение тегов изображениям вручную на автоматически генерируемые предложения тегов для каждого изображения, загружаемого на платформу. Facebook использует простой алгоритм распознавания лиц для анализа пикселей на изображении и сравнения его с соответствующими пользователями.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Распознавание лиц в сфере безопасности&lt;/strong&gt;. Простой пример использования технологии распознавания лиц для защиты личных данных — разблокировка смартфона «по лицу». Такую технологию можно внедрить и в пропускную систему: человек смотрит в камеру, а она определяет разрешить ему войти или нет.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/bYrRQQX2PvY?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;strong&gt;Распознавание лиц для подсчета количества людей&lt;/strong&gt;. Технологию распознавания лиц можно использовать при подсчете количества людей, посещающих какое-либо мероприятие (например, конференцию или концерт). Вместо того чтобы вручную подсчитывать участников, мы устанавливаем камеру, которая может захватывать изображения лиц участников и выдавать общее количество посетителей. Это поможет автоматизировать процесс и сэкономить время.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/fn/bc/-k/fnbc-kgpcaeogtd4attryczyjfq.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2&gt;Настройка системы: требования к аппаратному и программному обеспечению&lt;/h2&gt;
  &lt;p&gt;Рассмотрим, как мы можем использовать технологию распознавания лиц, обратившись к доступным нам инструментам с открытым исходным кодом.&lt;/p&gt;
  &lt;p&gt;Я использовал следующие инструменты, которые рекомендую вам:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Веб-камера (Logitech C920) для построения модели распознавания лиц в реальном времени на ноутбуке Lenovo E470 ThinkPad (Core i5 7th Gen). Вы также можете использовать встроенную камеру своего ноутбука или видеокамеру с любой подходящей системой для анализа видео в режиме реального времени вместо тех, которые использовал я.&lt;/li&gt;
    &lt;li&gt;Предпочтительно использовать графический процессор для более быстрой обработки видео.&lt;/li&gt;
    &lt;li&gt;Мы использовали операционную систему Ubuntu 18.04 со всем необходимым ПО.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Прежде чем приступить к построению нашей модели распознавания лиц, разберем эти пункты более подробно.&lt;/p&gt;
  &lt;h3&gt;Шаг 1: Настройка аппаратного обеспечения&lt;/h3&gt;
  &lt;p&gt;Проверьте, правильно ли настроена камера. С Ubuntu это сделать просто: посмотрите, опознано ли устройство операционной системой. Для этого выполните следующие шаги:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Прежде чем подключить веб-камеру к ноутбуку, проверьте все подключенные видео устройства, напечатав в командной строке &lt;code&gt;ls /dev/video*&lt;/code&gt;. В результате выйдет список всех видео устройств, подключенных к системе.&lt;/li&gt;
    &lt;li&gt;Подключите веб-камеру и задайте команду снова. Если веб-камера подключена правильно, новое устройство будет отражено в результате выполнения команды.&lt;/li&gt;
    &lt;li&gt;Также вы можете использовать ПО веб-камеры для проверки ее корректной работы. В Ubuntu для этого можно использовать программу «Сheese».&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h3&gt;Шаг 2: Настройка программного обеспечения&lt;/h3&gt;
  &lt;p&gt;&lt;strong&gt;Шаг 2.1: Установка Python&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Код, указанный в данной статье, написан с использованием Python (версия 3.5). Для установки Python рекомендую использовать &lt;a href=&quot;https://www.anaconda.com/download&quot; target=&quot;_blank&quot;&gt;Anaconda&lt;/a&gt; – популярный дистрибутив Python для обработки и анализа данных.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Шаг 2.2: Установка OpenCV&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;https://opencv.org/&quot; target=&quot;_blank&quot;&gt;OpenCV &lt;/a&gt; – библиотека с открытым кодом, которая предназначена для создания приложений компьютерного зрения. Установка OpenCV производится с помощью &lt;code&gt;pip&lt;/code&gt;:&lt;/p&gt;
  &lt;pre&gt;pip3 install opencv-python&lt;/pre&gt;
  &lt;p&gt;&lt;strong&gt;Шаг 2.3: Установите face_recognition API&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Мы будем использовать &lt;code&gt;face_recognition API&lt;/code&gt;, который считается самым простым API для распознавания лиц на Python во всем мире. Для установки используйте:&lt;/p&gt;
  &lt;pre&gt;pip install dlib
pip install face_recognition&lt;/pre&gt;
  &lt;h2&gt;Внедрение&lt;/h2&gt;
  &lt;p&gt;После настройки системы переходим к внедрению. Для начала, мы создадим программу, а затем объясним, что сделали.&lt;/p&gt;
  &lt;h3&gt;Пошаговое руководство&lt;/h3&gt;
  &lt;p&gt;Создайте файл &lt;code&gt;face_detector.py&lt;/code&gt; и затем скопируйте приведенный ниже код:&lt;/p&gt;
  &lt;pre&gt;# import libraries
import cv2
import face_recognition
 
# Get a reference to webcam
video_capture = cv2.VideoCapture(&amp;quot;/dev/video1&amp;quot;)
 
# Initialize variables
face_locations = []
 
while True:
	
# Grab a single frame of video
	
ret, frame = video_capture.read()
 
	
# Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
	
rgb_frame = frame[:, :, ::-1]
 
	
# Find all the faces in the current frame of video
	
face_locations = face_recognition.face_locations(rgb_frame)
 
	
# Display the results
	
for top, right, bottom, left in face_locations:
    	
# Draw a box around the face
    	
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
 
	
# Display the resulting image
	
cv2.imshow(&amp;#x27;Video&amp;#x27;, frame)
 
	
# Hit &amp;#x27;q&amp;#x27; on the keyboard to quit!
	
if cv2.waitKey(1) &amp;amp; 0xFF == ord(&amp;#x27;q&amp;#x27;):
    	
break
 
# Release handle to the webcam
video_capture.release()
cv2.destroyAllWindows()&lt;/pre&gt;
  &lt;p&gt;Затем запустите этот файл Python, напечатав:&lt;/p&gt;
  &lt;pre&gt;python face_detector.py&lt;/pre&gt;
  &lt;p&gt;Если все работает правильно, откроется новое окно с запущенным режимом распознавания лиц в реальном времени.&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/eh14NomINOs?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p&gt;Подведем итоги и объясним, что сделал наш код:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;Сначала мы &lt;strong&gt;указали аппаратное обеспечение&lt;/strong&gt;, на котором будет производиться анализ видео.&lt;/li&gt;
    &lt;li&gt;Далее сделали &lt;strong&gt;захват видео&lt;/strong&gt; в реальном времени кадр за кадром.&lt;/li&gt;
    &lt;li&gt;Затем &lt;strong&gt;обработали каждый кадр&lt;/strong&gt; и &lt;strong&gt;извлекли местонахождение всех лиц&lt;/strong&gt; на изображении.&lt;/li&gt;
    &lt;li&gt;В итоге, &lt;strong&gt;воспроизвели эти кадры в форме видео&lt;/strong&gt; вместе с указанием на то, где расположены лица.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h3&gt;Пример применения технологии распознавания лиц&lt;/h3&gt;
  &lt;p&gt;На этом все самое интересное не заканчивается. Мы сделаем еще одну классную вещь: создадим полноценный пример применения на основе кода, приведенного выше. Внесем небольшие изменения в код, и все будет готово.&lt;/p&gt;
  &lt;p&gt;Предположим, что вы хотите создать автоматизированную систему с использованием видеокамеры для отслеживания, где спикер находится в данный момент времени. В зависимости от его положения, система поворачивает камеру так, что спикер всегда остается в центре кадра.&lt;br /&gt;Первый шаг — создайте систему, которая идентифицирует человека или людей на видео и фокусируется на местонахождении спикера.&lt;/p&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/webt/xg/q-/ub/xgq-ubchs7yktjujlxcoakih7d0.png&quot; width=&quot;850&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Разберем, как это сделать. В качестве примера я выбрал видео на YouTube с выступлением спикеров конференции «DataHack Summit 2017».&lt;/p&gt;
  &lt;p&gt;Сначала импортируем необходимые библиотеки:&lt;/p&gt;
  &lt;pre&gt;import cv2
import face_recognition&lt;/pre&gt;
  &lt;p&gt;Затем считываем видео и устанавливаем длину:&lt;/p&gt;
  &lt;pre&gt;input_movie = cv2.VideoCapture(&amp;quot;sample_video.mp4&amp;quot;)
length = int(input_movie.get(cv2.CAP_PROP_FRAME_COUNT))&lt;/pre&gt;
  &lt;p&gt;После этого создаем файл вывода с необходимым разрешением и скоростью передачи кадров, аналогичной той, что была в файле ввода.&lt;/p&gt;
  &lt;p&gt;Загружаем изображение спикера в качестве образца для распознания его на видео:&lt;/p&gt;
  &lt;pre&gt;image = face_recognition.load_image_file(&amp;quot;sample_image.jpeg&amp;quot;)
face_encoding = face_recognition.face_encodings(image)[0]
 
known_faces = [
face_encoding,
]&lt;/pre&gt;
  &lt;p&gt;Закончив, запускаем цикл, который будет:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Извлекать кадр из видео.&lt;/li&gt;
    &lt;li&gt;Находить все лица и идентифицировать их.&lt;/li&gt;
    &lt;li&gt;Создавать новое видео, которое будет сочетать в себе оригинал кадра с указанием местонахождения лица спикера с подписью.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Посмотрим на код, который будет это выполнять:&lt;/p&gt;
  &lt;pre&gt;# Initialize variables
face_locations = []
face_encodings = []
face_names = []
frame_number = 0
 
while True:
	
# Grab a single frame of video
	
ret, frame = input_movie.read()
	
frame_number += 1
 
	
# Quit when the input video file ends
	
if not ret:
    	
break
 
	
# Convert the image from BGR color (which OpenCV uses) to RGB color (which face_recognition uses)
	
rgb_frame = frame[:, :, ::-1]
 
	
# Find all the faces and face encodings in the current frame of video
	
face_locations = face_recognition.face_locations(rgb_frame, model=&amp;quot;cnn&amp;quot;)
	
face_encodings = face_recognition.face_encodings(rgb_frame, face_locations)
 
	
face_names = []
	
for face_encoding in face_encodings:
    	
# See if the face is a match for the known face(s)
    	
match = face_recognition.compare_faces(known_faces, face_encoding, tolerance=0.50)
 
    	
name = None
    	
if match[0]:
        	
name = &amp;quot;Phani Srikant&amp;quot;
 
    	
face_names.append(name)
 
	
# Label the results
	
for (top, right, bottom, left), name in zip(face_locations, face_names):
    	
if not name:
        	
continue
 
       # Draw a box around the face
    	
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
 
    	
# Draw a label with a name below the face
    	
cv2.rectangle(frame, (left, bottom - 25), (right, bottom), (0, 0, 255), cv2.FILLED)
        font = cv2.FONT_HERSHEY_DUPLEX
    	
cv2.putText(frame, name, (left + 6, bottom - 6), font, 0.5, (255, 255, 255), 1)
 
	
# Write the resulting image to the output video file
	
print(&amp;quot;Writing frame {} / {}&amp;quot;.format(frame_number, length))
	
output_movie.write(frame)
 
# All done!
input_movie.release()
cv2.destroyAllWindows()&lt;/pre&gt;
  &lt;p&gt;Код даст вам вот такой результат:&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/uOcN6FhX6gY?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;a href=&quot;https://habr.com/ru/company/netologyru/blog/434354/&quot; target=&quot;_blank&quot;&gt;Источник&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;Подписывайтесь на наши каналы: &lt;br /&gt;Python &lt;a href=&quot;https://t.me/python_lounge&quot; target=&quot;_blank&quot;&gt;@python_lounge&lt;/a&gt;&lt;br /&gt;Программирование &lt;a href=&quot;http://t.me/cccoding&quot; target=&quot;_blank&quot;&gt;@cccoding&lt;/a&gt;&lt;br /&gt;ИТ Безопасность &lt;a href=&quot;http://t.me/it_ha&quot; target=&quot;_blank&quot;&gt;@it_ha&lt;/a&gt;&lt;/p&gt;

</content></entry></feed>