Pull to refresh
-15
-0.1
Send message

Нейронные сети для планирования движения беспилотных автомобилей

Reading time16 min
Views15K

Планировщик движения беспилотного автомобиля — это алгоритм-помощник, который общается с другими участниками движения посредством манёвров. То есть он действует так, чтобы другим было понятно, куда поедет беспилотник, и сам по действиям других пытается определить, кто куда будет двигаться и почему.

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

Под катом — детальный разбор логики движения беспилотника, примеры свёрточных и трансформерных архитектур моделей для предсказания движения и много формул для расчёта вероятных траекторий других машин и пешеходов. А ещё я расскажу, в чём преимущества машинного обучения перед эвристиками и чем может помочь Reinforcement Learning.

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

Самая сложная задача в Computer Vision

Reading time13 min
Views69K
Среди всего многообразия задач Computer Vision есть одна, которая стоит особняком. К ней обычно стараются лишний раз не притрагиваться. И, если не дай бог работает, — не ворошить.
У неё нет общего решения. Практически для каждого применения существующие алгоритмы надо тюнинговать, переобучать, или судорожно копаться в куче матриц и дебрях логики.

Статья о том как делать трекинг. Где он используется, какие есть разновидности. Как сделать стабильное решение.
Total votes 127: ↑127 and ↓0+127
Comments42

Kaggle для футболистов. Разбираем подходы призеров соревнований по детекции столкновений (1 и 2 место)

Level of difficultyMedium
Reading time8 min
Views2.1K


Продолжаем разбирать подходы призеров Kaggle-соревнований от американской национальной футбольной лиги (NFL). Участники этого челленджа детектировали столкновения игроков в американском футболе, анализируя данные с видеокамер и датчиков, прикрепленных к форме футболистов. В продолжении первой части статьи расскажу про самые успешные подходы к этой задаче.

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

Шаблоны C++: как итерировать по std::tuple — основы

Reading time9 min
Views19K

Для большинства стандартных контейнеров перебор элементов можно осуществлять просто с помощью цикла for с диапазоном прямо во время выполнения. Но что насчет кортежей (std::tuple)? В этом случае мы не можем использовать обычный цикл, так как он не «понимает» список аргументов кортежа во время компиляции. В этой статье я покажу вам несколько приемов, которые вы можете использовать для итерации по элементам кортежа.

Читать далее
Total votes 13: ↑12 and ↓1+14
Comments1

Почему tar.xz-файлы, созданные с Python tar, оказались в 15 раз меньше, чем у macOS tar

Reading time3 min
Views22K

Прим. перев.: это не совсем обычный перевод, потому что в его основе не отдельно взятая статья, а недавний случай со Stack Exchange, ставший главным хитом ресурса в этом месяце. Его автор задает вопрос, ответ на который можно отнести к базовым знаниям в области ИТ, но в то же время оказавшийся откровением для некоторых посетителей сайта.

Сжимая каталоги по ~1,3 ГБ, в каждом из которых по 1440 файлов JSON, я обнаружил 15-кратную разницу между размером архивов, сжатых с помощью tar на macOS или Raspbian 10 (Buster), и архивов, полученных при использовании библиотеки tarfile, встроенной в Python.

Читать далее
Total votes 65: ↑62 and ↓3+74
Comments24

Понимание LDAP-протокола, иерархии данных и компонентов записей

Reading time13 min
Views194K

Введение


LDAP, или Lightweight Directory Access Protocol, является открытым протоколом, используемым для хранения и получения данных из каталога с иерархической структурой. Обычно используемый для хранения информации об организации, ее активах и пользователях, LDAP является гибким решением для определения любого типа сущностей и их свойств.


Big Tree

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

Читать дальше →
Total votes 12: ↑11 and ↓1+15
Comments8

Написание системы попарно взаимодействующих частиц на C++ с использованием DirectX 11

Reading time12 min
Views11K


На Хабре уже есть много статей про использование вычислительных шейдеров с Unity, однако статью о использовании вычислительного шейдера на "чистом" Win32 API + DirectX 11 найти затруднительно. Однако эта задача ненамного сложнее, подробнее — под катом.


Для этого будем использовать:


  • Windows 10
  • Visual Studio 2017 Community Edition с модулем "Разработка классических приложений на C++"
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments17

Мифы о кэше процессора, в которые верят программисты

Reading time6 min
Views75K
Как компьютерный инженер, который пять лет занимался проблемами кэша в Intel и Sun, я немного разбираюсь в когерентности кэша. Это одна из самых трудных концепций, которые пришлось изучить ещё в колледже. Но как только вы действительно её освоили, то приходит гораздо лучшее понимание принципов проектирования систем.

Вы можете удивиться: зачем же разработчику ПО думать о механизме кэширования в CPU? Отвечу. С одной стороны, многие понятия из концепции когерентности кэша непосредственно применимы в распределённых системах и на уровнях изоляции СУБД. Например, представление реализации когерентности в аппаратных кэшах помогает лучше понять разницу в моделях согласованности (консистентности) — отличие строгой согласованности (strong consistency) от согласованности в конечном счёте (eventual consistency). У вас могут появиться новые идеи, как лучше обеспечить согласованность в распределённых системах, используя исследования и принципы из аппаратного обеспечения.

С другой стороны, неправильные представления о кэшах часто приводят к ложным утверждениям, особенно когда речь идёт о параллелизме и состоянии гонки. Например, часто говорят о трудности параллельного программирования, потому что «у разных ядер в кэшах могут быть разные/устаревшие значения». Или что квалификатор volatile в языках вроде Java нужен, чтобы «предотвратить локальное кэширование общих данных» и принудительно «читать/записывать только в основную память».
Читать дальше →
Total votes 75: ↑70 and ↓5+65
Comments72

Книга «С++17 STL. Стандартная библиотека шаблонов»

Reading time10 min
Views32K
image В книге описана работа с контейнерами, алгоритмами, вспомогательными классами, лямбда-выражениями и другими интересными инструментами, которыми богат современный С++. Освоив материал, вы сможете коренным образом пересмотреть привычный подход к программированию. Преимущество издания — в подробном описании стандартной библиотеки шаблонов С++, STL. Ее свежая версия была выпущена в 2017 году. В книге вы найдете более 90 максимально реалистичных примеров, которые демонстрируют всю мощь STL. Многие из них станут базовыми кирпичиками для решения более универсальных задач. Вооружившись этой книгой, вы сможете эффективно использовать С++17 для создания высококачественного и высокопроизводительного ПО, применимого в различных отраслях.

Далее представлен отрывок «Лямбда-выражения».
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments11

Оптимизация обработки изображений на C++ с использованием SIMD. Медианный фильтр

Reading time8 min
Views28K

Введение


Ранее во вступительной статье я поднимал список проблем, с которыми придется столкнуться разработчику, если он захочет оптимизировать оптимизацию обработки изображения при помощи SIMD инструкций. Теперь пришло время на конкретном примере показать, как указанные выше проблемы можно решить. Я долго думал, какой алгоритм выбрать для первого примера, и решил остановиться на медианной фильтрации. Медианная фильтрация является эффективным способом подавления шумов, которые неизбежно появляются на цифровых камерах в условиях малого освещения сцены. Алгоритм этот достаточно ресурсоемок – так например, при обработке серого изображения медианным фильтром 3х3 требуется порядка 50 операций на одну точку изображения. Но в тоже время он оперирует только с 8-битными числами и ему для работы требуется сравнительно не много входных данных. Эти обстоятельства делают алгоритм достаточно простым для SIMD оптимизации и в тоже время позволяют получить из нее весьма существенное ускорение.

image
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments28

Оптимизация обработки изображений с использованием GPU на примере Медианной фильтрации

Reading time10 min
Views11K

Введение


Издавна графические ускорители (ГПУ) были созданы для обработки изображения и видео. В какой то момент ГПУ стали использоваться для вычислений общего назначения. Но развитие центральных процессоров тоже не стояло на месте: компания Intel ведет активные разработки в сторону развития векторных расширений (AVX256, AVX512, AVX1024). В итоге, появляются разные процессоры — Core, Xeon, Xeon Phi. Обработку изображений можно отнести к такому классу алгоритмов, которые легко векторизуются.
Но как показывает практика, несмотря на довольно высокий уровень компиляторов и технологичность центральных процессоров и сопроцессоров Xeon Phi, сделать обработку изображения с использованием векторных инструкций не так просто, так как современные компиляторы плохо справляются с автоматической векторизацией, а использовать векторные intrinsic функции достаточно трудоемко. Также возникает вопрос о совмещении векторизованного вручную кода и скалярных участков.

Стоит ли использовать GPU, вместо AVX? ответ далее
Total votes 4: ↑4 and ↓0+4
Comments17

Самые распространённые вопросы на собеседовании программиста графики

Reading time5 min
Views50K
Недавно я проходил собеседования в игровых студиях на младшего программиста графики. По итогу я узнал, каких навыков они ожидают от начинающего программиста и какие вопросы могут задать. В этой статье я собрал вопросы в удобный список. Смысл в том, чтобы другие начинающие программисты могли использовать его для подготовки, прежде чем идти на первое собеседование. Но хочу оговориться, что я не рекомендую просто запоминать ответы на эти вопросы. Темы в списке — это темы, которые следует понять и освоить, чтобы решать реальные проблемы программирования графики. Их нужно понять, а не запомнить ответы.

Вопросы делятся по темам: С++, математика, оптимизация и компьютерная графика. Очевидно, это главные темы в повседневной работе. C++ часто используется в реальных задачах, поэтому естественно, что на собеседовании задают много вопросов по нему. Кроме того, в программировании графики требуется лучшее знание математики, чем в большинстве других видов программирования, поэтому математические навыки имеют первостепенное значение. Наконец, для достижения 60 FPS и рендеринга с высокой графической точностью обязательными являются сильные навыки оптимизации. Давайте рассмотрим популярные вопросы в каждой категории.
Читать дальше →
Total votes 59: ↑54 and ↓5+49
Comments53

MMO с нуля. Часть 2. Наращивание функционала + алгоритм Diamond Square

Reading time127 min
Views15K
Всем привет! В предыдущей части мы разобрались с базовой архитектурой, сетью и обменом сообщениями. Нарастим теперь функционал. Сделаем возможность войти, зарегистрироваться получив при этом сессионный id, который можно в будущем использовать для управления клиентом в процессе игры. Далее мы добавим чат, по сути все работает по его принципу: получили сообщение — разослали подписантам. Сделаем возможность создавать игровые комнаты, где будем собирать игроков и отправлять в бой. Синхронизировать перемещение клиентов и напоследок проверять выстрел на проверочном сервере. Будет много кода, я продолжаю пошаговое описание, чтобы можно было быстро разобраться и воспроизвести для своих нужд. Для тех, кто не знаком с первой частью, но хочет вынести для себя что-то полезное здесь и сейчас, я добавил реализацию алгоритма генерации фрактальных ландшафтов Diamond Square, в начало. Happy coding!

Часть 1. Общая картина, сборка библиотек, подготовка клиента и сервера к обмену сообщениями
Часть 2. Наращивание игрового функционала + алгоритм Diamond Square


Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments4

Потоки, блокировки и условные переменные в C++11 [Часть 1]

Reading time8 min
Views442K
В первой части этой статьи основное внимание будет уделено потокам и блокировкам в С++11, условные переменные во всей своей красе будут подробно рассмотрены во второй части
Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments14

Мысли об идеальной анонимности

Reading time6 min
Views51K
image

Червь непонимания между людьми рождается из-за разных потребностей и разных моделей угроз. Допустим, что вы хотите оставить самый анонимный комментарий на свете в социальной сети. Что вам для этого нужно? VPN? Tor? SSH-туннель? Вовсе нет, достаточно купить на ближайшем развале «пустую» симкарту и там же б/у смартфон. Отъехать подальше от места своего проживания, вставить одно в другое, написать сообщение  и утопить телефон. Вы справились с поставленной задачей с оценкой «отлично».

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

Читать дальше →
Total votes 22: ↑17 and ↓5+12
Comments130

Парадокс Ферми

Reading time17 min
Views156K
В чудную звёздную ночь каждый ощущает нечто особенное, когда обращает свой взор в небо и видит подобную картину:




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

Вот это самое нечто ощутил и физик Энрико Ферми, задавшийся резонным вопросом: "А где все?".
А ведь и правда, где все?
Total votes 77: ↑71 and ↓6+65
Comments384

Элон Маск: заселение Марса — надежный способ сохранить человечество

Reading time3 min
Views115K
Illustration by Michael Marsicano

Особа Элона Маска вызывает неподдельный интерес многих — и это вполне логично, если учесть успехи Маска и его неординарность. Так вот, на днях Элон дал развернутое интервью Aeon, в котором рассказал, почему он считает заселение Марса необходимым.

По мнению Элона, Марс нужно заселять как можно быстрее, с тем, чтобы к 2100 году на Красной планете было уже около миллиона человек. Миллион человек смогут обеспечить достаточное генетическое разнообразие, чтобы не было проблем в развитии популяции человека, связанных с недостаточным «генетическим фондом».

Читать дальше →
Total votes 103: ↑97 and ↓6+91
Comments174

Особая ракетная магия Илона Маска

Reading time6 min
Views193K
Любое обсуждение российского ракетостроения, можно превратить в многостраничный холивар, если написать слово из четырех букв: «Маск». Тут же найдутся его сторонники, которые вспомнят, что с Байконура летают ракеты, разработанные еще в 60-е, а компания Маска SpaceX появилась всего 12 лет назад, и уже делает многоразовую ракету. В ответ можно будет услышать про «секту любителей Маска» и эксцентричного шарлатана, который решил бросить вызов формуле Циолковского. В любом случае, равнодушные быстро покинут обсуждение, а неравнодушные продолжат схватку за свои идеалы.



Что же это за человек такой Илон Маск, почему его появление вынудило Роскосмос говорить о «наступающих на пятки конкурентов», а его марсианские мечты вдохновляют энтузиастов космоса по обе стороны океана?
Читать дальше →
Total votes 265: ↑255 and ↓10+245
Comments174

Эй, НАСА, а черные дыры таки существуют!

Reading time7 min
Views188K
«Моя цель проста: полностью разобраться в устройстве Вселенной и понять, почему она такая и зачем она существует».
Стивен Хокинг

От переводчика. А ты, хабражитель, заметил, что тема космоса становится всё популярнее? Curiosity покоряет Марс, Virgin Galactic продает билеты на суборбитальные космические полеты, а Китай стал третьей страной, добравшейся до Луны. На самом деле, еще большие изменения происходят в космической теории. В этой статье с Medium речь пойдет о том, как изменилось представление ученых о черных дырах за последние пару лет. Я не физик, поэтому в переводе не исключены ляпы — пишите в личку или подробно (чтобы всем было понятно и интересно) в комментариях. Заранее большое спасибо и приятного чтения!
(Претензии на тему jpeg/png отправлять автору статьи.)

Читать дальше →
Total votes 194: ↑171 and ↓23+148
Comments245

Советская операция по спасению мертвой космической станции

Reading time19 min
Views350K

Источник: Spacefacts.de

Эта история произошла в 1985 году, но в последствии постепенно забылась. Шли годы — многие подробности были искажены, кое-что было выдумано. Даже те, кто первыми рассказал об этих событиях, допускали явные ошибки. Операция «Союза-13» по спасению орбитальной станции «Салют-7» была впечатляющей попыткой проведения ремонта в открытом космосе. Писатель Николай Белаковский собрал все факты воедино и готов впервые за все время предоставить нам полноценный рассказ о тех событиях.
Читать дальше →
Total votes 312: ↑305 and ↓7+298
Comments116
1

Information

Rating
Does not participate
Location
Detroit, Michigan, США
Registered
Activity