Как стать автором
Обновить
-8
0
Дмитрий @dim2r

Программирование

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

Уроки по SDL 2: Урок 15 Многопоточность и Тиллинг

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

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

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

Кариес и как он работает

Время на прочтение12 мин
Количество просмотров50K
image
Нет, это уже не кариес, это полость, сформированная алмазным бором, когда все поражённые ткани удалены

Кариес нельзя вылечить, можно только приостановить. С учётом что от 93 до 99 % взрослого населения страдает кариесом — это пандемия.

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

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

И ещё — почему у, например, домашних животных кариес есть, а у диких почти никогда нет.
Всего голосов 108: ↑102 и ↓6+96
Комментарии74

Делаем вечную лампочку

Время на прочтение3 мин
Количество просмотров297K
На упаковках светодиодных ламп указывают срок службы 30, 40 или 50 тысяч часов, но многие лампочки не живут и года.

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

Читать дальше →
Всего голосов 243: ↑238 и ↓5+233
Комментарии361

Быстрый поиск касательных и пересечений у выпуклых многоугольников

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

Я недавно сделал маленькую библиотеку для решения задачи поиска кратчайшего пути на 2D карте с выпуклыми препятствиями. В процессе реализации я придумал пару алгоритмов и трюков, описания которых я нигде не встречал. Поэтому делюсь этими "изобретениями" с общественностью.


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

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

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

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



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

Дайджест новостей машинного обучения и искусственного интеллекта за ноябрь

Время на прочтение4 мин
Количество просмотров7.5K
Привет, Хабр! Отфильтровав для вас большое количество источников и подписок, сегодня собрал все наиболее значимые новости из мира будущего, машинного обучения, роботов и искусственного интеллекта за ноябрь. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие новости.

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

Итак, а теперь дайджест за ноябрь:

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

image
Всего голосов 51: ↑51 и ↓0+51
Комментарии6

Ускорение файлового ввода-вывода C/C++, не особо напрягаясь

Время на прочтение4 мин
Количество просмотров24K
image

Предисловие


Есть на свете такая простая и очень полезная утилита — BDelta, и так вышло, что она очень давно укоренилась в нашем производственном процессе (правда её версию установить не удалось, но она точно была не последней доступной). Используем её по прямому назначению — построение бинарных патчей. Если взглянуть, что там в репозитории, — становится слегка грустно: по сути он давным-давно заброшен и многое там сильно устарело (когда-то туда внёс несколько правок мой бывший коллега, но давно это было). В общем, решил я это дело воскресить: форкнулся, выкинул то, что не планирую использовать, перегнал проект на cmake, заинлайнил «горячие» микрофункции, убрал со стека большие массивы (и массивы переменной длины, от которых у меня откровенно «бомбит»), прогнал в очередной раз профилировщик — и узнал, что около 40% времени тратится на fwrite
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии34

Глубокое обучение с подкреплением: пинг-понг по сырым пикселям

Время на прочтение24 мин
Количество просмотров14K
Это давно назревшая статья об обучении с подкреплением Reinforcement Learning (RL). RL – крутая тема!

Вы, возможно, знаете, что компьютеры теперь могут автоматически учиться играть в игры ATARI (получая на вход сырые игровые пиксели!). Они бьют чемпионов мира в игру Го, виртуальные четвероногие учатся бегать и прыгать, а роботы учатся выполнять сложные задачи манипуляции, которые бросают вызов явному программированию. Оказывается, что все эти достижения не обходятся без RL. Я также заинтересовался RL в течение прошлого года: я работал с книгой Ричарда Саттона (прим.пер.: ссылка заменена), читал курс Дэвида Сильвера, смотрел лекции Джона Шульмана, написал библиотеку RL на Javascript, летом проходил практику в DeepMind, работая в группе DeepRL, и совсем недавно — в разработке OpenAI Gym, – нового инструментария RL. Так что я, конечно, был на этой волне, по крайней мере, год, но до сих пор не удосужился написать заметку о том, почему RL имеет большое значение, о чем он, как все это развивается.


Примеры использования Deep Q-Learning. Слева направо: нейросеть играет в ATARI, нейросеть играет в AlphaGo, робот складывает Лего, виртуальный четвероногий бегает по виртуальным препятствиям.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Открытый курс «Deep Learning на пальцах»

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

После 18-го февраля начнется открытый и бесплатный курс "Deep Learning на пальцах".


Курс предназначен для того, чтобы разобраться с современным deep learning с нуля, и не требует знаний ни нейросетей, ни machine learning вообще. Лекции стримами на Youtube, задания на Питоне, обсуждения и помощь в лучших русскоязычных DS-сообществах — ODS.ai и ClosedCircles.


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


Одновременно и в том же объеме курс будет читаться для магистрантов Новосибирского Государственного Университета, а также студентов CS центра Новосибирска.


Выглядеть объяснение на пальцах будет примерно так:



Главная ссылка — dlcourse.ai. Подробности ниже.

Читать дальше →
Всего голосов 94: ↑92 и ↓2+90
Комментарии72

Математические модели хаоса

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

Введение


На Habr уже обсуждалась теория хаоса в статьях [1,2,3]. В этих статьях рассмотрены следующие аспекты теории хаоса: обобщённая схема генератора Чуа; моделирование динамики системы Лоренца; программируемые логическими интегральными схемами аттракторы Лоренца, Ресслера, Рикитаке и Нозе-Гувера.

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

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

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

Статья написана с целью обучения, но позволит, даже не имеющему опыта программирования читателю, используя приведенные программы, самостоятельно решить большинство новых учебных задач по теме моделирования явлений хаоса.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии10

Можно ли считать статистику при малом количестве данных?

Время на прочтение6 мин
Количество просмотров14K
В целом ответ – да. Особенно, когда есть мозги и знание теоремы Байеса.

Напомню, что среднее и дисперсию можно считать только, если у вас имеется определенное количества событий. В старых методичках СССР РТМ (руководящий технический материал) говорилось, что чтобы считать среднее и дисперсию необходимо 29 измерений. Сейчас в ВУЗах немного округлили и используют число 30 измерений. С чем это связано – вопрос философский. Почему я не могу просто взять и посчитать среднее, если у меня есть 5 измерений? По идее ничто не мешает, только среднее получается нестабильным. После еще одного измерения и пересчета оно может сильно измениться и полагаться на него можно начиная где-то с 30 измерений. Но и после 31го измерения оно тоже пошатнется, только уже не так заметно. Плюс добавляется проблема, что и среднее можно считать по разному и получать разные значения. То есть из большой выборки можно выбрать первые 30 и посчитать среднее, потом выбрать другие 30 и тд … и получить много средних, которые тоже можно усреднять. Истинное среднее бывает недостижимо на практике, так как всегда имеем конечное количество измерений. В таком случае среднее является статистической величиной со своим средним и дисперсией. То есть измеряя среднее на практике мы имеем в виду «предположительное среднее», которое может быть близко к идеальному теоретическом значению.

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

Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии49

Управляем стоимостью проекта с Earned Value Management

Время на прочтение10 мин
Количество просмотров36K
Как измерять и контролировать эффективность исполнения планов проектов — такие вопросы являются постоянной головной болью их руководителей. Подходов к решению этих задач много. В данной статье мы рассмотрим основные элементы техники по управлению освоенным объемом (Earned Value Management, EVM), которая применяется повсеместно в проектах США, а у нас только набирает популярность в проектном управлении с учетом обновления Practice Standard for Earned Value Management, PMI. (В 2012 году я уже писал в одном известном в узких кругах журнале о ней.) Вы сможете узнать, как использовать EVM, а в комментариях давайте обсудим, у кого и как на опыте это получалось.

Источник
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии55

Mask R-CNN: архитектура современной нейронной сети для сегментации объектов на изображениях

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


Времена, когда одной из самых актуальных задач компьютерного зрения была способность отличать фотографии собак от фотографий кошек, уже остались в прошлом. На данный момент нейронные сети способны выполнять куда более сложные и интересные задания по обработке изображений. В частности, сеть с архитектурой Mask R-CNN позволяет выделять на фотографиях контуры («маски») экземпляров разных объектов, даже если таких экземпляров несколько, они имеют различный размер и частично перекрываются. Сеть так же способна к распознаванию поз людей на изображении.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии9

Обзор техник реализации игрового ИИ

Время на прочтение55 мин
Количество просмотров56K
image

Введение


Эта статья познакомит вас с широким диапазоном концепций искусственного интеллекта в играх («игрового ИИ»), чтобы вы понимали, какие инструменты можно использовать для решения задач ИИ, как они работают совместно и с чего можно начать их реализацию в выбранном движке.

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

Что же такое «игровой ИИ»?


Игровой ИИ в основном занимается выбором действий сущности в зависимости от текущих условий. В традиционной литературе по ИИ называет это управлением "интеллектуальными агентами". Агентом обычно является персонаж игры, но это может быть и машина, робот или даже нечто более абстрактное — целая группа сущностей, страна или цивилизация. В любом случае это объект, следящий за своим окружением, принимающий на основании него решения и действующий в соответствии с этими решениями. Иногда это называют циклом «восприятие-мышление-действие» (Sense/Think/Act):

  • Восприятие: агент распознаёт — или ему сообщают — информацию об окружении, которая может влиять на его поведение (например, находящиеся поблизости опасности, собираемые предметы, важные точки и так далее)
  • Мышление: агент принимает решение о том, как поступить в ответ (например, решает, достаточно ли безопасно собрать предметы, стоит ли ему сражаться или лучше сначала спрятаться)
  • Действие: агент выполняет действия для реализации своих решений (например, начинает двигаться по маршруту к врагу или к предмету, и так далее)
  • … затем из-за действий персонажей ситуация изменяется, поэтому цикл должен повториться с новыми данными.
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии15

Получаем данные со счетчиков Меркурий 203.2Т по RS-485

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


Организовать удаленный сбор показаний с электросчетчиков — задача вроде не сложная, счетчики с каждым годом все умнее и умнее и должны сами все отправлять, ан нет, информация конечно есть, но она разрозненная. Производители оборудования видимо тоже хотят зарабатывать на продаже своего ПО. Пишу эту статью чтобы сэкономить время всем, у кого есть похожие задачи.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии23

Ускоряем умножение матриц float 4x4 с помощью SIMD

Время на прочтение19 мин
Количество просмотров21K
Уже немало лет прошло, как я познакомился с инструкциями MMX, SSE, а позже и AVX на процессорах Intel. В своё время они казались какой-то магией на фоне x86 ассемблера, который уже давно стал чем-то обыденным. Они меня настолько зацепили, что пару лет назад у меня появилась идея написать свой собственный софт рендерер для одной известной игры. Сподвигло меня на это то, какую производительность обещали эти инструкции. В какой-то момент я даже думал об этом написать. Но писать текст оказалось куда сложнее кода.

В то время я хотел избежать проблем с поддержкой на разных процессорах. Хотелось иметь возможность проверить мой рендерер на максимально доступном количестве. У меня до сих пор остались знакомые со старыми AMD процессорами, и их потолок был SSE3. Поэтому на тот момент я решил ограничиться максимум SSE3. Так появилась векторная математическая библиотека, чуть менее, чем полностью реализованная на SSE, с редким включением до SSE3. Однако в какой-то момент мне стало интересно, какую максимальную производительность я смогу выжать из процессора для ряда критичных операций векторной математики. Одной из таких операций является умножение матриц float 4 на 4.

Если интересно, что из этого получилось, добро пожаловать под кат
Всего голосов 68: ↑67 и ↓1+66
Комментарии72

Курс о Deep Learning на пальцах

Время на прочтение2 мин
Количество просмотров173K
Я все еще не до конца понял, как так получилось, но в прошлом году я слово за слово подписался прочитать курс по Deep Learning и вот, на удивление, прочитал. Обещал — выкладываю!

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

Материалы курса были опробованы на студентах кафедры АФТИ Новосибирского Государственного Университета, поэтому есть шанс, что по ним действительно можно чему-то научиться.


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

Алгоритм распознавания образов обучающийся с одного раза (One-Shot learning)

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

Введение


Я хочу представить вам результат своих экспериментов с алгоритмами распознавания образов с обучением с первого раза (так называемый One-Shot Learning). В результате экспериментов выработались определённые подходы к структуризации изображения и в итоге они воплотились в несколько взаимосвязанных алгоритмов и тестовое приложение на Android, которым можно проверить качество и работоспособность алгоритмов.


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

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

Handmade: Программируемая клавиатура для онлайн-трейдинга своими руками

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

Пользователи форума для инвесторов и трейдеров Bear Bull Traders нередко обсуждают вопросы гаджетов для торговли на бирже. В одном из тредов участник по имени Райан поделился своим опытом превращения цифровой панели на клавиатуре в специализированный гаджет с горячими клавишами для сверхбыстрой торговли. Мы подготовили подробную адаптацию его истории.
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии11

Разработка AI для пошаговой игры на Node.js (часть 2)

Время на прочтение16 мин
Количество просмотров8.1K
И снова здравствуйте, друзья!

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

А я перейду к рассказу о следующем этапе работы!
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии15

Информация

В рейтинге
Не участвует
Откуда
Самарская обл., Россия
Зарегистрирован
Активность