Как стать автором
Обновить
13
0

Пользователь

Отправить сообщение

pyqtdeploy, или упаковываем Python-программу в exe'шник… the hard way

Время на прочтение16 мин
Количество просмотров42K

КДПВ


Наверняка, каждый, кто хоть раз писал что-то на Python, задумывался о том, как распространять свою программу (или, пусть даже, простой скрипт) без лишней головной боли: без необходимости устанавливать сам интерпретатор, различные зависимости, кроссплатформенно, чтобы одним файлом-exe'шником (на крайний случай, архивом) и минимально возможного размера.


Для этой цели существует немало инструментов: PyInstaller, cx_Freeze, py2exe, py2app, Nuitka и многие другие… Но что, если вы используете в своей программе PyQt? Несмотря на то, что многие (если не все) из выше перечисленных инструментов умеют упаковывать программы, использующие PyQt, существует другой инструмент от разработчиков самого PyQt под названием pyqtdeploy. К моему несчастью, я не смог найти ни одного вменяемого гайда по симу чуду, ни на русском, ни на английском. На хабре и вовсе, если верить поиску, есть всего одно упоминание, и то — в комментариях (из него я и узнал про эту утилиту). К сожалению, официальная документация написана довольно поверхностно: не указан ряд опций, которые можно использовать во время сборки, для выяснения которых мне пришлось лезть в исходники, не описан ряд тонкостей, с которыми мне пришлось столкнуться.


Данная статья не претендует на всеобъемлющее описание pyqtdeploy и работы с ним, но, в конце концов, всегда приятно иметь все в одном месте, не так ли?

Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии10

3D моделирование в Python

Время на прочтение21 мин
Количество просмотров79K

Допустим, вам потребовалось на языке программирования python, построить трёхмерную модель некоторого объекта, затем визуализировать его, или подготовить файл для печати на 3D принтере. Существует несколько библиотек, помогающих в решении этих задач. Поговорим о том, как строить трёхмерные модели из точек, граней и примитивов в python. Как выполнять элементарные приемы 3D моделирования: перемещение, поворот, объединение, вычитание и другие.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии26

Создание генетического алгоритма для нейросети и нейроcети для графических игр с помощью Python и NumPy

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.3K

Привет, Хабр!

Сегодня я расскажу и покажу, как сделать Genetic Algorithm(GA) для нейросети, чтобы с помощью него она смогла проходить разные игры. Я его испробовал на игре Pong и Flappy bird. Он себя показал очень хорошо. Советую прочитать, если вы не читали первую статью: "Создание простого и работоспособного генетического алгоритма для нейросети с Python и NumPy" , так как я доработал свой код который, был показан в той статье.

Я разделил код на две скрипта, в одной нейросеть играет в какую-то игру, в другой обучается и принимает решения(сам генетический алгоритм). Код с игрой представляет из себя функцию которая возвращает фитнес функцию (она нужна для сортировки нейросетей, например, сколько времени она продержалась, сколько очков заработала и т.п.). Поэтому код с играми(их две) будет в конце статьи. Генетический алгоритм для нейросети для игры Pong и игры Flappy Bird различаются лишь параметрами.

Используя скрипт, который я написал и описал в предыдущей статье, я создал сильно изменённый код генетического алгоритма для игры Pong, который я и буду описывать больше всего, так как именно на него я опирался, когда я уже создавал GA для Flappy Bird.

Вначале нам потребуется импортировать модули, списки и переменные:

Читать далее
Всего голосов 11: ↑9 и ↓2+11
Комментарии4

Как составить договор с помощью нейросетей

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.8K

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

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

Поехали(:

Читать далее
Всего голосов 19: ↑15 и ↓4+11
Комментарии11

Автоматическое построение плоской панорамы

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5.2K

В статье представлен простой алгоритм автоматического сшивания нескольких фотографий в плоское (иногда называют перспективное) панорамное изображение (planar/perspective panoramic image). Статья содержит код на языкеPythonс использованием библиотекиOpenCV.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Распознавание и перевод жестовых языков: обзор подходов

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.5K

Всем привет! В статье «Slovo и русский жестовый язык» мы рассказывали, как решаем задачу распознавания изолированных жестов, в статье «Русский жестовый язык: первое место в американском бенчмарке» делились результатами решения, а в статье «GigaChat и русский жестовый язык» речь шла о реализации прототипа общения с генеративной языковой моделью GigaChat. В этой статье речь пойдет о распознавании и переводе жестового языка и передовых подходах для их решениях. 

Читать далее
Всего голосов 19: ↑18 и ↓1+25
Комментарии1

Создание 3D-сетки из изображения с помощью Python

Время на прочтение7 мин
Количество просмотров12K


Несколько лет назад генерация 3D-сетки из единственного двумерного изображения была сложной задачей. Но сегодня благодаря продвижению глубокого обучения разработано множество монокулярных моделей оценки глубины, дающих точную оценку карты глубины изображения. С помощью этой карты, выполнив реконструкцию поверхности, можно создать сетку. Подробности — к старту нашего курса по Fullstack-разработке на Python.

Читать дальше →
Всего голосов 11: ↑9 и ↓2+9
Комментарии6

Адаптация Qt-приложений под мониторы высокой чёткости. Часть 1

Время на прочтение15 мин
Количество просмотров17K

В связи с техническим прогрессом рынок мониторов постоянно обновляется моделями с повышенным разрешением, плотностью пикселей и/или размером экрана. Году в 2010 стандартным монитором можно было считать экземпляр 19’’ c разрешением WXGA++ (1600*900) и фактической плотностью пикселей 97 DPI (dots per inch). Сейчас (2021 год) стандартным монитором, думаю, можно признать экземпляр 24’’ c разрешением Full HD (1920*1080) и плотностью пикселей 92 DPI. Под «стандартным» я понимаю тот монитор, который стоит на рабочем месте у большинства работающего люда: инженеры, бухгалтеры, переводчики и т.д. (при этом, конечно, «стандартность» — это субъективная и приблизительная оценка). Относительно новые и отчасти нишевые модели (для фотографов, видеографов, геймеров) имеют характеристики: 4K UHD (3840*2160) и 28’’ (157 DPI) или UWQHD (3440x1440) и 34" (109 DPI) или QHD (2560x1440) и 27" (109 DPI) или UWHD (2560x1080) и 29" (96 DPI). Таким образом, наблюдается рост в связанных группах признаков: разрешение+размер экрана, или разрешение+плотность пикселей, или даже разрешение+плотность пикселей+размер экрана. На рынке ноутбуков в плане экранов похожая ситуация – растет разрешение+плотность пикселей.

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

Что касается высокой чёткости (большой плотности пикселей), то в ОС Windows давно есть такие настройки, как масштабирование шрифта и изображений (масштаб экрана), которые применяются для увеличения слишком малых элементов GUI на мониторах с высокой чёткостью (High DPI). Также есть поддержка в платформе Qt (с нюансами, об этом далее). Однако способно ли Ваше, конкретное ПО их адекватно учитывать, применять?

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии6

ONNX Runtime, OpenVINO и TVM: обзор инструментов для ускорения ML-моделей

Время на прочтение7 мин
Количество просмотров8.1K

Большинство вычислений при работе ML-моделей — матричные. Для работы с ними подходят Tensor и CUDA — специальные графические ядра, интегрированные в GPU. Это дает видеокартам преимущества перед CPU в машинном обучении. Однако они стоят дороже. Если нужно развернуть инференс на процессоре, есть компромисс — использовать инструменты для оптимизации.

По мотивам выступления Артема Земляка, инженера-программиста Smart Consulting, рассказываем о том, какие фреймворки лучше использовать для эффективного продакшена ML-сервисов. Подробности под катом.
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии11

YOLO-World: распознавание произвольного числа объектов с высокой точностью и скоростью

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров13K

Всем привет! Буквально несколько дней назад была представлена новая модель семейства Yolo. Ее основная фишка заключается в том, что в отличие от своих старших братьев, она способна распознавать на изображении фактически любые объекты (которые интересуют человека) без предварительного обучения и делает все это в real-time режиме! Звучит неплохо, не так ли?

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

Читать далее
Всего голосов 19: ↑17 и ↓2+18
Комментарии10

Всемогущий FFmpeg: скриншаринг в WebRTC

Время на прочтение9 мин
Количество просмотров14K

Когда мы пишем статьи о своем сервере в комментариях очень часто находится читатель, который говорит:

"И зачем такой огород городить? Все это одной FFmpeg командой делается!"

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии8

Простая нейронная сеть без библиотек и матриц. Эволюционный алгоритм

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров11K

Руководство? Гайд? В общем вторая часть описания моего опыта в создании простой, а главное понятной любому новичку нейросети :)

В этот раз поговорим про эволюционный/генетический алгоритм и заставим нейросеть балансировать мячи.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии4

Разработка чрезвычайно быстрых программ на Python

Время на прочтение7 мин
Количество просмотров69K
Ненавистники Python всегда говорят, что одной из причин того, что они не хотят использовать этот язык, является то, что Python — это медленно. Но то, что некая программа, независимо от используемого языка программирования, может считаться быстрой или медленной, очень сильно зависит от разработчика, который её написал, от его знаний и от умения создавать оптимизированный и высокопроизводительный код.



Автор статьи, перевод которой мы сегодня публикуем, предлагает доказать то, что те, кто называет Python медленным, неправы. Он хочет рассказать о том, как улучшить производительность Python-программ и сделать их по-настоящему быстрыми.
Читать дальше →
Всего голосов 64: ↑57 и ↓7+76
Комментарии47

Использование инерциальной навигационной системы (ИНС) с несколькими датчиками на примере задачи стабилизации высоты квадрокоптера

Время на прочтение8 мин
Количество просмотров85K
В данной статье я постараюсь рассказать о своем опыте создания и реализации алгоритма для обработки сигналов с нескольких стандартных датчиков, входящих в состав ИНС (в английской версии IMU), для решения задачи стабилизации высоты многороторного летательного аппарата (в моем случае — квадрокоптера). На хабре уже был ряд статей, описывающих, что это за игрушка и как её сделать самому. Как программисту по профессии, мне было интересно не только его собрать, но и поковыряться в «мозгах» и сделать что-то полезное для сообщества. В качестве «мозгов» я выбрал Arduino и замечательный проект MultiWii. Он полностью открытый, динамично развивается, но в нем пока есть «белые пятна». Например, неудовлетворительно работает стабилизация положения по высоте. И я решил разобраться, можно ли с имеющимся оборудованием улучшить эту часть системы.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии37

Распознавание русского жестового языка: распознаём до 3+ жестов в секунду на обычном ПК без видеокарты

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров4.8K

Привет!

Меня зовут Максим Новопольцев, я техлид RnD команды Центра развития технологий AI во благо общества, Sber AI. Мы занимаемся проектами, направленными на решение важных социальных и экологических задач, таких как сохранение биоразнообразия, создание инклюзивной среды, прогнозирование климатических рисков.

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

Сегодня в России нет достаточного количества специалистов-переводчиков русского жестового языка (РЖЯ), с помощью которого общаются люди с ограничением слуха. По данным Всероссийского общества глухих, нехватка специалистов в этой сфере в России - около 4 тыс.

А между тем, глухие или неговорящие - достаточно большая группа людей, которая посещает государственные учреждения, ходит в магазины, банки и пр. По данным ВОЗ, более 5% населения мира, или 430 миллионов человек, имеют проблемы со слухом, а к 2050 г. с этой проблемой столкнется каждый десятый, или более 700 миллионов человек.

Читать далее
Всего голосов 14: ↑13 и ↓1+16
Комментарии11

Создание простого и работоспособного генетического алгоритма для нейросети с Python и NumPy

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров11K

Генетический алгоритм нужен, когда ты знаешь параметры своей нейросети, но не знаешь, что должно получиться на выходе, например, этот алгоритм можно использовать для игры в Google динозаврика или Flappy Bird, потому что там ты не знаешь, что должно быть на выходе, но у тебя есть возможность сортировать наиболее жизнеспособные варианты, например по времени, это называется фитнес функций.

У меня никогда не получалось найти такой алгоритм и чтобы он работал, и был простым, и его можно было использовать, поэтому я приступил к созданию своего легкого, простого, прекрасно работающего Genetic Algorithm.

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

Вначале нам потребуется импортировать модули:

Читать далее
Всего голосов 7: ↑4 и ↓3+1
Комментарии4

Алгоритмы не важны

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров44K

Прошу простить заранее за несколько кликбейтный заголовок )

Не так давно писал в соцсетях хейт‑пост по поводу «алгоритмических секций» при приёме на работу в Яндекс.

Да и многие другие софтверные компании это практикуют и считают навыки написания алгоритмов — чуть ли не самым важным навыком для программистов.

И ставят данной компетенции очень высокий приоритет при приёме на работу.

Попробую сегодня развить эту мысль и объяснить почему ставить навыки написания алгоритмов на первый план — не правильно, почему этот «алгоритмический» критерий не релевантен и не отражает реальной ценности / уровня / потенциальной пользы от данного программиста.

Читать далее
Всего голосов 140: ↑106 и ↓34+99
Комментарии370

История одной фичи в Qt Multimedia

Время на прочтение8 мин
Количество просмотров7.3K

Несмотря на рекомендации мейнтейнеров, этот модуль каждый раз возраждается в Qt Essentials Modules.

Некоторые требовали закопать и не откапывать, чтобы в мире было меньше страданий.

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

Модуль, который хейтили много поколений разработчиков.

Речь пойдет про Qt Multimedia
Всего голосов 14: ↑14 и ↓0+14
Комментарии28

Как помочь pandas в обработке больших объёмов данных?

Время на прочтение4 мин
Количество просмотров10K
Библиотека pandas — это один из лучших инструментов для разведочного анализа данных. Но это не означает, что pandas — это универсальное средство, подходящее для решения любых задач. В частности, речь идёт об обработке больших объемов данных. Мне довелось провести очень и очень много времени, ожидая, пока pandas прочтёт множество файлов, или обработает их, вычислив на основе находящихся в них сведений какие-то интересующие меня показатели. Дело в том, что pandas не поддерживает механизмы параллельной обработки данных. В результате этому пакету не удаётся на полную мощность воспользоваться возможностями современных многоядерных процессоров. Большие наборы данных в pandas обрабатываются медленно.



Недавно я задался целью найти что-то такое, что позволит помочь мне в деле обработки больших данных. Мне удалось найти то, что я искал, я встроил найденный инструмент в свой конвейер обработки данных. Я использую его для работы с большими объёмами данных. Например — для чтения файлов, содержащих 10 гигабайт данных, для их фильтрации и агрегирования. Когда я справляюсь с решением подобных задач, я сохраняю то, что у меня получилось, в CSV-файле меньшего размера, который подходит для pandas, после чего приступаю к работе с полученными данными с помощью pandas.

Вот блокнот Jupyter, содержащий примеры к этому материалу, с которыми можно поэкспериментировать.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+32
Комментарии3

ИИ-помощники для работы с кодом

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров13K

Инструменты на базе ИИ с открытым исходным кодом, которые призваны помочь вам в разработке проектов.

Читать далее
Всего голосов 10: ↑8 и ↓2+7
Комментарии2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность