Сборка, разборка и эмуляция с использованием Python

Бывают такие нелегкие для прикладника времена, когда надо работать на низком уровне и просто ловить биты в центральном процессоре. Бывают они не часто, но случилось. Последний раз что-то подобное мне приходилось делать лет этак 30-35 назад. Так, что вспоминаем молодость и различные архитектуры процессоров, но уже не с «С++», а на Python. Он теперь ближе…

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

Дизассемблер — это процесс, обратный сборке, байты данных анализируются и преобразуются в инструкции сборки (которые более удобочитаемы для пользователей).
Читать далее «Сборка, разборка и эмуляция с использованием Python»

Как с помощью Python преобразовать pdf‑файлы в картинки

Ещё одно вечернее развлечение посвящаю разработке легкого инструмента командной строки для преобразования файлов PDF в картинки.

Будем использовать PyMuPDF, универсальное настраиваемое решение для интерпретатора PDF, XPS и электронных книг, которое можно использовать в широком спектре приложений, таких как средство визуализации PDF, средство просмотра или набор инструментов.
Читать далее «Как с помощью Python преобразовать pdf‑файлы в картинки»

Как с помощью Python преобразовать pdf‑файлы в doc

Развлечение на сегодняшний вечер — показать вам, как можно использовать библиотеку pdf2docx для преобразования файлов PDF в расширение docx.

Наша задача — разработать Python-модуль для преобразования одного или нескольких файлов PDF, расположенных в одной папке, в форме легкой утилиты командной строки не полагаясь на какие-либо внешние утилиты за пределами экосистемы Python.
Читать далее «Как с помощью Python преобразовать pdf‑файлы в doc»

Разведочный анализ данных в Python: руководство для новичков на 2021 год

Мне часто приходится говорить, что для понимания проще нарисовать, лучше всего нарисовать. В подавляющем большинстве случаев, после того, как всё стало понятно, остальное не так и сложно, становится делом техники. То же самое и в науке о данных, и этап, на котором всё «понимается» называется Exploratory Data Analysis (EDA) или разведочный анализ данных. EDA играет важнейшую роль после получения набора данных и ставит своей целью выяснить, как с ним работать и получить требуемый результат.

Итак, в этой статье познакомлю новичков с EDA. Не волнуйтесь, всё когда-то впервые и если вы только что узнали, что EDA существует, то к концу статьи вы будете иметь четкое представление обо всех основных моментах, связанных с EDA и вместе с тем увидите пошаговые практические примеры кодирования. Давайте разбираться!
Читать далее «Разведочный анализ данных в Python: руководство для новичков на 2021 год»

Генеративная и дискриминативная модели

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

  • Классификация изображения, например, собаки или кошки, которое подпадает под дискриминативное моделирование.
  • Создание реалистичного изображения, той же собаки или кошки — задача генеративного моделирования.

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

Что нужно для взлёта?   

Базовое понимание машинного обучения и глубокого обучения — это то, с чего нужно начать. После того, как появится основа, переходите к более сложным темам, таким как генеративные состязательные сети или GAN. Если у вас есть какой-то опыт в задачах классификации изображений (дискриминация) или реконструкции изображений (генерация), то это будет значительным бонусом. Не понимать, что именно скрывается под капотом и как моделируются проблемы — это нормально.
Читать далее «Генеративная и дискриминативная модели»

Вспомни молодость или как раскрасить черно‑белое фото из прошлого века

В жаркую последнюю субботу весны 2021 года, когда на улице за 30°С, природа с озёрами и горами далеко, а кондиционер вместе с увлажнителем создаёт в квартире комфортную обстановку и совершать телодвижения лениво, посмотрел юношеские чёрно‑белые фотографии. В то время, когда я учился в школе, у меня по наследству было три фотоаппарата — ФЭД (Феликс Эдмундович Дзержинский), собранный бывшими малолетними беспризорниками в колонии, которой командовал Макаренко А.С. в начале 30-х годов прошлого века, найденный в деревне, но исправно выполнявший свою работу в 70-х; Зенит-Е, один из первых зеркальных фотоаппаратов СССР образца 1966 года и моя любимая Смена-8М, как говорили раньше «мыльница», не отличающаяся качеством оптики и соответственно качественной фотографий, но свободно помещающаяся в карман. В нашем классе мало у кого не было своего фотоаппарата. В конце этих записок вы увидите галерею старых раскрашенных фотографий, большинство из которых сделаны именно «мыльницами».

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

Этот проект целью своей имеет автоматическое преобразование старых черно-белых фотографий в цветные с помощью Python, используя библиотеки OpenCV, DNN и Caffe. Написанный и отлаженный скрипт Python bw2c-ru.py принимает черно-белое изображение на входе и автоматически возвращает цветное изображение на выходе.
Читать далее «Вспомни молодость или как раскрасить черно‑белое фото из прошлого века»

Чтение и запись видео с использованием OpenCV

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

Читать далее «Чтение и запись видео с использованием OpenCV»