Pull to refresh
1
0
Роман @rawzes

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

Send message

Как я организовал хранение фотографий

Reading time9 min
Views135K
Привет Хабр! Каждый из нас хранит какую-нибудь информацию, некоторые для этого используют секретики и лайфхаки. Лично я люблю понажимать кнопку фоторужья и сегодня хотел бы поделиться своим опытом хранения информации, к которому я шёл-шёл и пришёл.



Сразу предупрежу: под катом нет «серебряной пули», которая умножит на 0 проблему хаоса в файлах на ваших устройствах. И даже ни строчки про нейросети, распознавание чего-либо кем-либо и прочие нанотехнологии. Под катом — немного текста и дубовая табличка, которую ещё и заполнять придётся вручную =) Но которая работает.
Читать дальше →
Total votes 96: ↑89 and ↓7+82
Comments276

SciPy, оптимизация

Reading time8 min
Views85K

SciPy (произносится как сай пай) — это пакет прикладных математических процедур, основанный на расширении Numpy Python. С SciPy интерактивный сеанс Python превращается в такую же полноценную среду обработки данных и прототипирования сложных систем, как MATLAB, IDL, Octave, R-Lab и SciLab. Сегодня я хочу коротко рассказать о том, как следует применять некоторые известные алгоритмы оптимизации в пакете scipy.optimize. Более подробную и актуальную справку по применению функций всегда можно получить с помощью команды help() или с помощью Shift+Tab.

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments19

256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов

Reading time8 min
Views142K
Публикую очередную главу из моего курса лекций по компьютерной графике (вот тут можно читать оригинал на русском, хотя английская версия новее). На сей раз тема разговора — отрисовка сцен при помощи трассировки лучей. Как обычно, я стараюсь избегать сторонних библиотек, так как это заставляет студентов заглянуть под капот.

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

Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

Итак, сегодня я покажу, как отрисовывать подобные картинки:


Читать дальше →
Total votes 241: ↑241 and ↓0+241
Comments124

Реализация алгоритма Левенберга-Марквардта для оптимизации нейронных сетей на TensorFlow

Reading time23 min
Views29K

Это tutorial по библиотеке TensorFlow. Рассмотрим её немного глубже, чем в статьях про распознавание рукописных цифр. Это tutorial по методам оптимизации. Совсем без математики здесь не обойтись. Ничего страшного, если вы её совершенно забыли. Вспомним. Не будет никаких формальных доказательств и сложных выводов, только необходимый минимум для интуитивного понимания. Для начала небольшая предыстория о том, чем этот алгоритм может быть полезен при оптимизации нейронной сети.




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


Kushnir, D., Velker, N., Bondarenko, A., Dyatlov, G., & Dashevsky, Y. (2018, October 29). Real-Time Simulation of Deep Azimuthal Resistivity Tool in 2D Fault Model Using Neural Networks (Russian). Society of Petroleum Engineers. doi:10.2118/192573-RU


Одним вечером я показал, как keras реализовать простую нейронную сеть, и друг на работе запустил обучение на насчитанных данных. Через пару дней обсудили результат. С моей точки зрения он выглядел перспективно, но друг сказал, что нужны вычисления с точностью прибора. И если средняя квадратичная ошибка (mean squared error) получилась в районе 1, то нужна была 1е-3. На 3 порядка меньше. В тысячу раз.

Читать дальше →
Total votes 73: ↑70 and ↓3+67
Comments15

Git happens! 6 типичных ошибок Git и как их исправить

Reading time5 min
Views233K


Прим. перев.: На днях в блоге для инженеров любимого нами проекта GitLab появилась небольшая, но весьма полезная заметка с инструкциями, которые помогают сохранить время и нервы в случае различных проблем, случающихся по мере работы с Git. Вряд ли они будут новы для опытных пользователей, но обязательно найдутся и те, кому они пригодятся. А в конец этого материала мы добавили небольшой бонус от себя. Хорошей всем пятницы!

Все мы делаем ошибки, особенно при работе с такими сложными системами, как Git. Но помните: Git happens!
Читать дальше →
Total votes 63: ↑62 and ↓1+61
Comments62

Нейросетевой синтез речи своими руками

Reading time12 min
Views92K
Синтез речи на сегодняшний день применяется в самых разных областях. Это и голосовые ассистенты, и IVR-системы, и умные дома, и еще много чего. Сама по себе задача, на мой вкус, очень наглядная и понятная: написанный текст должен произноситься так, как это бы сделал человек.

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



Я решил попробовать сделать полностью нейросетевой синтез своими руками, а заодно и поделиться с сообществом своим опытом. Что из этого получилось, можно узнать, заглянув под кат.
Total votes 62: ↑61 and ↓1+60
Comments22

Цвет: от шестнадцатеричных кодов до глаза

Reading time16 min
Views53K


Почему мы воспринимаем background-color: #9B51E0 как этот конкретный фиолетовый цвет?



Долгое время я думал, что знаю ответ на этот вопрос. Но хорошенько поразмыслив, осознал значительные пробелы в своих знаниях.
Читать дальше →
Total votes 104: ↑104 and ↓0+104
Comments27

Нейросетевая игра в имитацию

Reading time25 min
Views43K

Здравствуйте, коллеги. В конце 1960-ых годов прошлого века Ричард Фейнман прочитал в Калтехе курс лекций по общей физике. Фейнман согласился прочитать свой курс ровно один раз. Университет понимал, что лекции станут историческим событием, взялся записывать все лекции и фотографировать все рисунки, которые Фейнман делал на доске. Может быть, именно после этого у университета осталась привычка фотографировать все доски, к которым прикасалась его рука. Фотография справа сделана в год смерти Фейнмана. В верхнем левом углу написано: "What I cannot create, I do not understand". Это говорили себе не только физики, но и биологи. В 2011 году, Крейгом Вентером был создан первый в мире синтетический живой организм, т.е. ДНК этого организма создана человеком. Организм не очень большой, всего из одной клетки. Помимо всего того, что необходимо для воспроизводства программы жизнедеятельности, в ДНК были закодированы имена создателей, их электропочты, и цитата Ричарда Фейнмана (пусть и с ошибкой, ее кстати позже исправили). Хотите узнать, к чему эта прохладная тут? Приглашаю под кат, коллеги.

Читать дальше →
Total votes 75: ↑75 and ↓0+75
Comments32

Просто о D3.js

Reading time6 min
Views82K


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

Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments21

Топливо для ИИ: подборка открытых датасетов для машинного обучения

Reading time6 min
Views80K


Связанные проекты сообщества Open Data (проект Linked Open Data Cloud). Многие датасеты на этой диаграмме могут включать в себя данные, защищенные авторским правом, и они не упоминаются в данной статье


Если вы прямо сейчас не делаете свой ИИ, то другие будут делать его вместо вас для себя. Ничто более не мешает вам создать систему на основе машинного обучения. Есть открытая библиотека глубинного обучения TensorFlow, большое количество алгоритмов для обучения в библиотеке Torch, фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных Spark и множество других инструментов, облегчающих работу.


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


Мы разобрались в этом вопросе и собрали данные по датасетам, удовлетворяющим критериям открытости, востребованности, скорости работы и близости к реальным задачам.

Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments10

Методы оптимизации нейронных сетей

Reading time17 min
Views213K

В подавляющем большинстве источников информации о нейронных сетях под «а теперь давайте обучим нашу сеть» понимается «скормим целевую функцию оптимизатору» лишь с минимальной настройкой скорости обучения. Иногда говорится, что обновлять веса сети можно не только стохастическим градиентным спуском, но безо всякого объяснения, чем же примечательны другие алгоритмы и что означают загадочные \inline \beta и \inline \gamma в их параметрах. Даже преподаватели на курсах машинного обучения зачастую не заостряют на этом внимание. Я бы хотел исправить недостаток информации в рунете о различных оптимизаторах, которые могут встретиться вам в современных пакетах машинного обучения. Надеюсь, моя статья будет полезна людям, которые хотят углубить своё понимание машинного обучения или даже изобрести что-то своё.


image


Под катом много картинок, в том числе анимированных gif.

Читать дальше →
Total votes 78: ↑78 and ↓0+78
Comments74

Научные мультфильмы, что показывать детям без вреда для них?

Reading time4 min
Views78K
image
Объяснение закона гравитации из мультфильма «Физика для самых маленьких»

У меня растет два очень любознательных сына в возрасте три и пять лет. Они очень любят научные мультики, особенно по физике и астрономии, как только в их руки попадает планшет, маленькие пальчики начинают быстро перебирать видеоролики из YouTube в поисках интересного контента. И что же они там находят? Поскольку я не только отец двоих детей, но еще и существенную часть жизни посвятил методике преподавания физики для маленьких детей, я знаю, что показывают детям учителя, а также заботливые родители и добрые бабушки. Скажу сразу, не все из этого стоит показывать детям.
Осторожно! Под катом горькая правда
Total votes 42: ↑38 and ↓4+34
Comments176

Интерфейс JTAG? — Это очень просто

Reading time6 min
Views248K
Многие знакомы со словом «JTAG», но знакомство это скорее всего поверхностное. В этой статье я хочу перевести Вас на новый уровень, так сказать «во френдзону». Возможно, для многих я не открою ничего нового, но надеюсь тем, кто давно хотел ознакомиться, будет интересно почитать. Итак, от винта.
image

Запустить JTAG тестирование
Total votes 90: ↑86 and ↓4+82
Comments17

Raspberry и Telegram: предпосылки создания умного дома

Reading time3 min
Views87K


Один итальянский магазинчик нащупал новые способы использования Телеграма (и ранее WhatsApp'а), установив его на одноплатный миниатюрный компьютер Raspberry Pi. Как выясняется, мессенджер можно использовать для удалённого общения с собственной техникой. Ниже – перевод статей (1, 2) с сайта Instructables.com. Если есть уточнения по переводу, напишите об этом в комментариях.

Читать дальше →
Total votes 52: ↑44 and ↓8+36
Comments62

Конечный автомат (он же машина состояний) на чистом С

Reading time5 min
Views127K
Почти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память и вообще какала бабочками.
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).

Собственно через регулярные выражения я к ним и пришёл.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments50

Что скрывают нейронные сети?

Reading time5 min
Views115K
Статья является вольным переводом The Flaw Lurking In Every Deep Neural Net.

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

В статье "Интригующие свойства нейронных сетей" за авторством Christian Szegedy, Wojciech Zaremba, Ilya Sutskever, Joan Bruna, Dumitru Erhan, Ian Goodfellow and Rob Fergus, команды, включающей авторов из проекта Google по глубокому обучению, кратко описываются два открытия в поведении нейронных сетей, противоречащие тому, что мы думали прежде. И одно из них, честно говоря, поражает.
Читать дальше →
Total votes 109: ↑101 and ↓8+93
Comments96

Time of flight

Reading time4 min
Views85K
Знаете, меня порой удивляет причудливая структура общественного мнения. Взять к примеру технологию 3D-визуализации. Огромный общественный резонанс вызывают в последнее время технологии очков виртуальной реальности: Oculus Rift, Google Glass. Но ведь ничего нового тут нет, первые шлемы виртуальной реальности появились ещё в конце 90-х. Да, они были сложны, они опередили своё время, но почему тогда это не вызывало такого WOW-эффекта? Или 3D-принтеры. Статьи о том, как они круты или как быстро они захватят мир появляются в информационном поле два раза в неделю последние года три. Я не спорю, это круто и мир они таки захватят. Но ведь эта технология была создана ещё в 80х и с тех пор вяло прогрессирует. 3D-телевидение? 1915 год…

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

Что, если я скажу, что в последние 10 лет была изобретена, разработана и внедрена в массовое производство технология 3D съёмки, очень сильно отличающаяся от любой другой? При этом технология уже повсеместно используемая. Отлаженная и доступная простым людям в магазинах. Вы слышали про неё? (наверное только специалисты по робототехнике и сопутствующим областям науки уже догадались, что я говорю про ToF-камеры).

Что такое ToF камера? В русской Википедии (англ) вы не найдёте даже коротенького упоминания о том, что это такое. «Time of flight camera» переводится как «Времяпролётная камера». Камера определяет дальность через скорость света, измеряя время пролёта светового сигнала, испускаемого камерой, и отражённого каждой точкой получаемого изображения. Сегодняшним стандартом является матрица 320*240 пикселей (следующее поколение будет 640*480). Камера обеспечивает точность измерения глубины порядка 1 сантиметра. Да-да. Матрица из 76800 сенсоров, обеспечивающих точность измерения времени порядка 1/10,000,000,000 (10^-10) секунды. В продаже. За 150 баксов. А может вы ею даже пользуетесь.
А теперь чуть подробнее про физику, принцип работы, и где вы встречали эту прелесть.
Читать дальше →
Total votes 76: ↑74 and ↓2+72
Comments65

Краткий экскурс в методы 3D-печати

Reading time6 min
Views51K

Мои предыдущие посты по теме:
Первое мероприятие по 3D-печати в Нидерландах
Мероприятие по 3D-печати (окончание)
Новый бюджетный 3D-принтер
Чтобы ответить на часто задаваемые вопросы я опишу тут популярные технологии 3D-печати — печать расплавленным пластиком, порошком, фотополимером, лазерное спекание. Разумеется эта информация не является истиной в последней инстанции. Это картина, которая сложилась у меня на сегодня в голове из разных источников.
Читать дальше →
Total votes 107: ↑104 and ↓3+101
Comments48

Ночь фракталов

Reading time4 min
Views54K
Шёл уже последний час этого воскресенья, я уже думал идти спать, но добрый sourcerer прислал мне картинку с моего заброшенного сайта, которую можно увидеть ниже, и текст «красиво!». Эти картинки я рисовал лет пять назад, с помощью т. н. алгоритма времени убегания, но для применимости данного алгоритма, нужно уметь для заданного набора преобразований разбивать плоскость на регионы, тогда я не придумал, как это сделать, и больше к этому алгоритму не возвращался. Но сейчас я сразу сообразил, что делать, и написал Диме: «Сначала Random IFS, потом kNN, а затем Escape-Time Algorithm!»



Под рукой у меня был только старый нетбук, который мне дали друзья на время, пока мой ноутбук в ремонте. Дима мне ещё что-то говорил, я ему что-то отвечал, но у меня уже в голове писался код, и я искал на нетбуке хоть какой-нибудь компилятор или интерпретатор и нашёл C++ Builder 6! После этого я понял, что утро я встречу наедине с борландовским компилятором. Через пять часов я отправил Диме новых картинок, но он, как нормальный человек, давно спал…



Читать дальше →
Total votes 85: ↑85 and ↓0+85
Comments3

Компания Wolfram Research открыла сервис Tweet-a-Program: интересных программ на языке Wolfram Language, длина которых не превышает 140 символов

Reading time6 min
Views20K


В языке Wolfram Language небольшой код может делать крайне много. Используя это, мы сделали сервис, который позволит вам получить от этого удовольствие, сегодня мы открываем его — Tweet-a-Program.

Этот сервис соединяет в себе программы на языке Wolfram Language длиной в одно сообщение твиттера и возможность их автоматической отправки в @WolframTaP. Наш Твиттер-бот запустит вашу программу в Wolfram Cloud (Облаке Wolfram), после чего опубликует результат.

Hello World from Tweet-a-Program: GeoGraphics[Text[Style["Hello!",150]],GeoRange->"World"]
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments37
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity