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

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

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

Применение машинного обучения и Data Science в промышленности

Время на прочтение22 мин
Количество просмотров68K
Хабр, привет. Перевел пост, который идёт строго (!) в закладки и передаётся коллегам. Он со списком блокнотов и библиотек ML и Data Science для разных отраслей промышленности. Все коды на Python, и размещены на GitHub. Они будут полезны как для расширения кругозора, так и для запуска своего интересного стартапа.

image

Отмечу, что если среди читателей есть желающие помочь, и добавить в любую из подотраслей подходящий проект, пожалуйста, свяжитесь со мной. Я их добавлю в список. Итак, давайте начнём изучение списка.
Читать дальше →
Всего голосов 77: ↑71 и ↓6+65
Комментарии13

Изобретаем JPEG

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

Вы правильно поняли из названия, что это не совсем обычное описание алгоритма JPEG (формат файла я подробно описывал в статье «Декодирование JPEG для чайников»). В первую очередь, выбранный способ подачи материала предполагает, что мы ничего не знаем не только о JPEG, но и о преобразовании Фурье, и кодировании Хаффмана. И вообще, мало что помним из лекций. Просто взяли картинку и стали думать как же ее можно сжать. Поэтому я попытался доступно выразить только суть, но при которой у читателя будет выработано достаточно глубокое и, главное, интуитивное понимание алгоритма. Формулы и математические выкладки — по самому минимуму, только те, которые важны для понимания происходящего.

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

Если есть желание, то предлагаю пройти те же этапы самостоятельно параллельно со статьей. Проверить, насколько приведенные рассуждения подходят для разных изображений, попытаться внести свои модификации в алгоритм. Это очень интересно. В качестве инструмента могу порекомендовать замечательную связку Python + NumPy + Matplotlib + PIL(Pillow). Почти вся моя работа (в т. ч. графики и анимация), была произведена с помощью них.

Внимание, трафик! Много иллюстраций, графиков и анимаций (~ 10Мб). По иронии судьбы, в статье про JPEG всего 2 изображения с этим форматом из полусотни.
Читать дальше →
Всего голосов 356: ↑354 и ↓2+352
Комментарии70

Клубничная чудо-коробка 2.0 всё

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

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

Читать далее
Всего голосов 245: ↑244 и ↓1+307
Комментарии74

Земля круглая, вода мокрая, JPEG шакалит, небо голубое… Или нет?

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

Вы можете сказать, что один факт выбивается из этого ряда в заголовке, потому что он не так очевиден, как остальные. Еще лет 10-15 назад я бы никогда не подумал, что тут могут быть возражения, а сейчас уже и не удивляюсь, что приходится объяснять простые истины: дело в том, что планеты обладают очень большой массой, поэтому гравитация стремится придать им форму шара. Вот и все! Хотел бы на этом закончить статью и поблагодарить за внимание.

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

Как самому за один вечер собрать минимальную ОС Linux из исходного кода

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

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

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

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

Мне всегда хотелось собрать операционную систему Linux самому из исходного кода, но процесс этот всегда казался сложным и запутанным, да и многого я не понимал. Но всё-таки в определённый момент времени я накопил достаточное количество знаний, чтобы осуществить свою мечту. В этой статье я хочу рассказать вам, как собрать минимальную Linux из исходного кода и запустить её у себя на компьютере.
Читать дальше →
Всего голосов 83: ↑82 и ↓1+108
Комментарии83

Фильтр Калмана

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


В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
Читать дальше →
Всего голосов 178: ↑173 и ↓5+168
Комментарии84

Обучение OpenCV каскада Хаара

Время на прочтение8 мин
Количество просмотров195K
На хабре уже есть несколько статей и про то, что такое каскад Хаара (раз, два, три). Есть даже одна, где затронут процесс обучения, но в отношении описанной задачи. На тему обучения есть пара неплохих статей на английском (первая, вторая, третья), но, на мой взгляд, они путанные: либо рассказывают очень мало, либо слишком много и обо всём — выделить нужную мысль сложно.
image
В этой статье я попробую показать, как обучить каскад с нуля за несколько часов, натренировав на поиск простого предмета в видеопотоке (примером будет очаровательная сова с фотографии). Все обучающие выборки и программы будут приложены.
Зачем всё это нужно? Каскад Хаара это один из простейших способов распознавания классов объектов с большой скоростью работы. К ним относятся лица и руки людей, номера автомобилей, пешеходы. Детектором Хаара просто находить животных в кадре (кстати, удивительно, что я не видел ещё ни одной автоматической кормушки для синиц на raspberry pi). К тому же, готовые реализации OpenCV есть под большинство существующих систем (даже для blackfin'a встречал). Всё это делает Хаара одним из самых удобных методов, позволяющих решать задачи видеообработки даже людям, которые никогда не работали с обработкой видео.
Читать дальше →
Всего голосов 59: ↑57 и ↓2+55
Комментарии19

Выжимаем все соки: PGO Оптимизация ядра Linux

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

Сложность вычислительных задач и систем растёт с каждым днём. Для бизнеса ускорение кода даже на пару процентов даёт улучшение производительности, заметное снижение издержек и уменьшение задержки(latency). В первую очередь это касается мобильных и встраиваемых систем, высоконагруженных серверов, научных вычислений и 3D-графики. Так был разработан относительно перспективный и молодой метод оптимизации — Profile-Guided Optimization, далее просто PGO-оптимизация. Данный метод эффективно используют такие известные компании, как Google, Mozilla Foundation, Intel, Oracle, IBM и другие. Практически ни один современный веб-браузер не обходится без PGO-оптимизации.

Не так давно компанией Google был предложен набор патчей, включающий PGO-оптимизацию в ядре Linux. Мною был протестирован этот набор патчей в работе и доработан. Мне хотелось бы рассказать об этом методе оптимизации ядра Linux, о том, с какими трудностями можно столкнуться, и как их решить.

Если вас заинтересовала эта тема, вам интересно развитие технологий и тренды крупных компаний, то добро пожаловать под кат.
Читать дальше →
Всего голосов 49: ↑43 и ↓6+56
Комментарии29

Распознавание номерных знаков. Как все ускорить

Время на прочтение8 мин
Количество просмотров20K
Nomeroff Net. Как ускорить распознавние номерных знаков.

После запуска моделей на прод рано или поздно приходит понимание того, что Ваши сервисы популярны и что KPI растут. Вместе с популярностью приходят тормоза и нестабильность. В этой статье речь пойдет о прикладном аспекте оптимизации быстродействия алгоритмов/моделей на примере движка распознавания автомобильных номеров “Nomeroff Net”. Буду делиться опытом, полученным на протяжении 2-х летней разработки. Если коротко: нам удалось ускорить время распознавания 1 фото более чем в 10 раз.

“Чел догадался в свой сервер вставить RTX 3090” подумаете Вы… Приблизительно так и было, только если взять замеры до установки GPU то все ускорили в 100+ раз :).
Не будет детального описания архитектуры моделей (они давно известны в узких кругах), хочу поделиться важными моментами, на которые стоит обратить внимание при оптимизации ваших ML-сервисов.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии12

Шерудим под капотом Stable Diffusion

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

Вероятно вы уже слышали про успехи нейросетей в генерации картинок по текстовому описанию.

Я решил разобраться, и заодно сделать небольшой туториал, по архитектуре модели Stable Diffusion. Сегодня мы не будем глубоко погружаться в математику и процесс тренировки. Вместо этого сфокусируемся на применении и устройстве основных компонент: UNet, VAE, CLIP.

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

Как разрезать полметра стали, в домашних условиях, почти бесшумно — используя электричество?

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

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

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

Читать дальше →
Всего голосов 101: ↑99 и ↓2+127
Комментарии59

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

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


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

Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.
Читать дальше →
Всего голосов 51: ↑50 и ↓1+49
Комментарии14

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 2

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


Публикуем вторую часть статьи о типах архитектуры нейронных сетей. Вот первая.

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

Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.

Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии2

Создаем личное файловое облако легко и просто (и дешево)

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

А сегодня мы с вами быстро и решительно легко и просто поднимем свое личное файловое облако типа Google Drive или Яндекс.Диск, а если повезет, то еще и очень дешево.

Зачем? Ну, например, потому что не хотим зависеть от корпораций с их кабальными лицензионными соглашениями и сменой условий задним числом. Или потому что нам хочется приватности. Или просто потому что можем. А бонусом на нашем сервере вы потом сможете еще установить VPN или прокси для доступа к запрещенным сайтам, или поднять простенький веб-сайтик.

Я специально будут рассказывать все максимально подробно и пошагово, чтобы даже люди без большого опыта системного администрирования смогли все повторить. В наше время, благодаря развитому инструментарию, такому как docker и snap, установить и настроить все что нужно можно очень быстро всего лишь несколькими командами.

Читать далее
Всего голосов 79: ↑71 и ↓8+84
Комментарии233

Сразу три причины, из-за которых контроллер GD32F450 теряет UDP пакеты

Время на прочтение13 мин
Количество просмотров17K
Периодически на Хабре проскакивают статьи, где проверяется двоичная совместимость контроллеров GD32 с их аналогом STM32. Так получилось, что нам довелось поймать пусть и не на двоичном уровне, а на уровне исходников, ситуацию, где одно и то же проявление проблемы (теряются сетевые пакеты) было вызвано не одной, не двумя, а сразу тремя причинами, из которых две оказались признаками несовместимости с STM32. Вот о том, как мы эти причины ловили, я и хочу сегодня рассказать. Будет детектив, аналогичный тому, какой я приводил в своей старенькой статье про поддельную «голубую пилюлю». Ну, и выводы, куда же без них. Они тоже будут.


Читать дальше →
Всего голосов 74: ↑73 и ↓1+87
Комментарии32

Яндекс выложил в опенсорс бету фреймворка userver

Время на прочтение10 мин
Количество просмотров77K
Сегодня мы анонсируем выход в опенсорс фреймворка userver для создания высоконагруженных приложений. Для нас это важный способ поделиться опытом в разработке микросервисов, который мы накопили. Вот ссылка на Гитхаб-репозиторий c исходным кодом, документацией, примерами, шаблоном для создания своих сервисов (с настроенным CI, сборкой и тестовым окружением) и сервисом динамических конфигов. Всё это опубликовано под лицензией Apache 2.0.



🐙userver позволяет быстро создавать эффективные микросервисы на языке C++ и уже много лет активно используется в Яндекс Go, Еде, Лавке, Доставке, Маркете, финтехе и других проектах. Вот из каких требований мы исходили в процессе разработки:

  • Простота. Стажёр или студент, приходя к нам, может уже через неделю написать и отправить в продакшен новый микросервис.
  • Надёжность. Многие ошибки, в том числе и связанные с многопоточностью, можно поймать на этапе компиляции. Кроме того, фреймворк даёт подсказки по исправлению проблем.
  • Полнота. В userver есть всё необходимое для тестирования, работы с разными базами данных, кеширования, логирования, трейсинга, распределённых блокировок, работы с JSON, BSON, YAML, изменения параметров сервиса на лету и так далее.

Сейчас я расскажу о том, как возникла идея userver, как фреймворк развивался, в каких задачах его сейчас используют и почему именно выход в опенсорс был логичным следующим шагом. А затем приведу пример написания нового микросервиса.
Читать дальше →
Всего голосов 141: ↑137 и ↓4+169
Комментарии142

Клубничная чудо-коробка 2.0. Часть вторая

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

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

Читать далее
Всего голосов 122: ↑120 и ↓2+151
Комментарии72

Неклассические контейнеры в C++

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

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

В стандартную библиотеку C++ входит несколько контейнеров. Кроме этого, в Open Source есть несколько контейнеров, которые покрывают больше юзкейсов. Я опишу устройство интересных контейнеров вне STL и их отличия от классических контейнеров.

Читать далее
Всего голосов 56: ↑54 и ↓2+64
Комментарии24

17 убойных репозиториев GitHub, которые нужно сохранить

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

Здесь собраны лучшие и самые полезные репозитории Github, которые будут служить вам долгое время.

Читать далее
Всего голосов 153: ↑123 и ↓30+114
Комментарии44

Мои вопросы работодателю, когда подаюсь на разработчика

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

За последние 10 лет я поменял 3 работы, прособеседовался с 10+ компаний на позицию разработчика (software engineer) и вел переписку с HR/рекрутерами из нескольких десятков фирм. По ходу дела заметил, что вопросы, которые я задаю на собеседовании с менеджером/командой или с HR, повторяются, и решил их структурировать. Некоторые из них являются общими, и их может задать кандидат на почти любую вакансию; другие касаются только вакансий для программистов. В этой статье поделюсь с вами наиболее типичными и важными вопросами, которые, на мой взгляд, может задать соискатель потенциальному работодателю.

Читать далее
Всего голосов 72: ↑66 и ↓6+78
Комментарии70

Информация

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