• Xception: компактная глубокая нейронная сеть

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

      Чтобы улучшить качество распознавания своих сетей, исследователи старались добавлять в сети больше слоёв, однако со временем пришло понимание, что иногда ограничения производительности попросту не позволяют обучать и использовать настолько глубокие сети. Это стало мотивацией для использования depthwise separable convolutions и создания архитектуры Xception.

      Если вы хотите узнать, что это такое, и посмотреть, как использовать такую сеть на практике, чтобы научиться отличать котов от собак, добро пожаловать под кат.
      Читать дальше →
      • +26
      • 17.1k
      • 7
    • Открытый курс машинного обучения. Тема 4. Линейные модели классификации и регрессии


        Всем привет!


        Сегодня мы детально обсудим очень важный класс моделей машинного обучения – линейных. Ключевое отличие нашей подачи материала от аналогичной в курсах эконометрики и статистики – это акцент на практическом применении линейных моделей в реальных задачах (хотя и математики тоже будет немало).


        Пример такой задачи – это соревнование Kaggle Inclass по идентификации пользователя в Интернете по его последовательности переходов по сайтам.


        UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.


        Все материалы доступны на GitHub.
        А вот видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017). В ней, в частности, рассмотрены два бенчмарка соревнования, полученные с помощью логистической регрессии.

        Читать дальше →
      • Отрисовка векторной графики — триангуляция, растеризация, сглаживание и новые варианты развития событий

          В далёком 2013м году вышла игра Tiny Thief, которая наделала много шуму в среде мобильной Flash (AIR) разработки из-за отказа от растровой графики в билдах, включая атласы анимации и прочего — всё что было в сборке хранилось в векторном формате прямиком из Flash редактора.
          Это позволило использовать огромное количество уникального контента и сохранить размер установочного файла до ~70 мегабайт (*.apk-файл из Google Play). Совсем недавно снова возник интерес к теме отрисовки векторной графики на мобильных устройствах (и вообще к теме отрисовки вектора с аппаратной поддержкой), и меня удивило отсутствие информации "начального" уровня по этой теме. Это обзорно-справочная статья по возможным способам отрисовки вектора и уже существующим решениям, а так же о том, как подобные вещи можно сделать самостоятельно.


          Читать дальше →
        • Легендарные усилители: «холод» ламп без трансформатора, DIY-компиляции, десятилетия мучений с классом «Д»

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


            При создании материала я постарался отжать всё информационно ценное из шедевров аудиофильской журналистики, сухих технических описаний и публикаций таких товарищей, как Нил Гадер, Гарри Пирсон, Роберт Грин. Как и в предыдущем материале, я старался отыскать основные характеристики и принципиальные схемы этих устройств, а также цены (на момент производства), о которых нередко умалчивают современные авторы.
            Читать дальше →
          • Оптимизация кода: процессор

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

            image

            В этой статье мы рассмотрим базовые техники оптимизации кода, которые могут увеличить производительность вашей программы во много раз. Мы также коснёмся устройства процессора. Понимание как работает процессор необходимо для написания эффективных программ.
            Читать дальше →
          • Как рендерится кадр нового Doom

            • Translation


            Выпущенный в 1993 году первый DOOM внёс фундаментальные изменения в разработку игр и механик, он стал мировым хитом и создал новых идолов, таких как Джон Кармак и Джон Ромеро.

            Сегодня, 23 года спустя, id Software принадлежит Zenimax, все основатели уже покинули компанию, но это не помешало коллективу id продемонстрировать весь свой талант, выпустив отличную игру.
            Читать дальше →
          • Логика сознания. Часть 2. Дендритные волны

              В предыдущей части мы показали, что в клеточном автомате могут возникать волны, имеющие специфический внутренний узор. Такие волны могут запускаться из любого места клеточного автомата и распространяться по всему пространству клеток автомата, перенося информацию. Соблазнительно предположить, что реальный мозг может использовать схожие принципы. Чтобы понять возможность аналогии, немного разберемся с тем, как работают нейроны реального мозга.
              Читать дальше →
            • Логика сознания. Часть 1. Волны в клеточном автомате

                Начнем разговор о мозге с несколько отвлеченной темы. Поговорим о клеточных автоматах. Клеточный автомат – это дискретная модель, которая описывает регулярную решетку ячеек, возможные состояния ячеек и правила изменений этих состояний. Каждая из ячеек может принимать конечное множество состояний, например, 0 и 1. Для каждой из ячеек определяется окрестность, задающая ее соседей. Состояние соседей и собственное состояние ячейки определяют ее следующее состояние.
                Наиболее известный клеточный автомат – это игра «Жизнь». Поле в игре «Жизнь» состоит из ячеек. Каждая ячейка имеет восемь соседей. Задается начальная комбинация. Затем начинается смена поколений. Если у занятой ячейки два или три занятых (живых) соседа, то ячейка продолжает жить. Если соседей меньше 2 или больше 3, то ячейка умирает. Когда у пустой ячейки оказывается ровно 3 соседа в ней зарождается жизнь. Задав произвольную начальную комбинацию можно пронаблюдать ее эволюцию.
                Читать дальше →
              • Логика сознания. Вступление

                  image В свое время на Хабре был опубликован цикл статей «Логика мышления». С тех пор прошло два года. За это время удалось сильно продвинуться вперед в понимании того, как работает мозг и получить интересные результаты моделирования. В новом цикле «Логика сознания» я опишу текущее состоянии наших исследований, ну а попутно попытаюсь рассказать о теориях и моделях интересных для тех, кто хочет разобраться в биологии естественного мозга и понять принципы построения искусственного интеллекта.

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

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

                  Не должна вводить в заблуждение распространенная фраза о том, что многие идеи искусственных нейронных сетей позаимствованы из исследований реального мозга. Заимствование носит слишком общий характер. По большому счету, оно заканчивается на том, что и там и там есть нейроны и между этими нейронами есть связи.
                  Читать дальше →
                • Логика сознания. Часть 3. Голографическая память в клеточном автомате

                    Ранее мы описали клеточный автомат, в котором могут возникать волны, имеющие хитрый внутренний узор. Мы показали, что такие волны способны распространять информацию по поверхности автомата. Оказалось, что любое место автомата может быть, как приемником, так и источником волн. Чтобы принять волну в каком-либо месте, достаточно посмотреть, какой узор получается в нем в момент прохождения волны. Если этот узор запомнить и впоследствии воспроизвести в том же месте, то от этого узора распространится волна, повторяющая на своем пути узор исходной волны.

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

                    Автомат, который мы описываем обладает памятью. Точнее, памятью обладают все его элементы. Память элемента специфична. Единственное, что видит элемент автомата – это узор, составленный из активности своих соседей. Единственное, как элемент может отреагировать на тот или иной узор – это либо самому стать активным, либо, наоборот, выключиться. Память элемента – это набор запомненных им узоров с указанием, как на них реагировать: включаться или выключаться.
                    Читать дальше →
                  • Не важно, большие у тебя или маленькие. Главное, чтоб не маленькие. Фаршируем Material Design

                      image

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

                      В HeadHunter дизайн, прежде чем уйти в инпрогресс, проходит множество инстанций. Для начала необходимо доказать команде разработки, что решения взяты не с потолка, а ты не «художник, я так вижу». И иногда пользоваться защитой Рексоны 24/7 приходится в самом неожиданном месте.
                      Читать дальше →
                    • Троллейбус из буханки или alias analysis в LLVM

                        В преддверии очередной конференции C++ Siberia, я решил выложить на всеобщее оборзрение запись доклада с февральской конференции C++ Russia, проходившей в городе-герое Санкт-Петербурге.

                        Зачастую, знакомство с алиасингом в C++ у многих программистов начинается и заканчивается одинаково: -fno-strict-aliasing. На вопросы новичка, более опытные коллеги отвечают в стиле: «не трогай! а то все сломаешь!». Новичок и не трогает.

                        В докладе сделана попытка заглянуть под капот компилятора и понять, что же там, внутри? Что такое alias analysis, где он может быть полезен, в чем его преимущества и недостатки. Тема рассмотрена и со стороны программиста и со стороны разработчика компилятора. А по сему, вопрос «зачем?» был центральным.

                        В докладе вы найдете:

                        • Код Quake3 и стандарт IEEE754
                        • Магическую константу 0x5F3759DF
                        • Много ассемблера x86
                        • Много IR кода LLVM
                        • Rust, Java и даже Fortran
                        Читать дальше →
                      • На каком фреймворке вы будете писать PHP приложение в 2016 году?

                        С пятницей коллеги!
                        Заинтересовал меня намедни такой вопрос: какой PHP фреймворк вы выберете для создания среднего или крупного проекта (корпоративный портал, магазин и т.п.) в 2016 году?
                        Уточню, что это не холивар, какой фреймворк лучше, речь идет именно о вашем личном выборе, причины которого, могут быть любыми.
                        И да, Bitrix это не совсем фреймворк, но тем не менее.
                        UPD: Подразумевается, что стадия сравнения, споров и выбора уже прошла, и тимлид или команда или бизнес решили: по факту будем писать на этом. Хочется узнать фактический мейнстрим на 2016 год, то есть, что будет на самом деле, а ни этот хороший, а тот плохой.

                        Only registered users can participate in poll. Log in, please.

                        На каком фреймворке вы будете писать PHP приложение в 2016 году?

                        • 27.2%Laravel 5809
                        • 27.8%Yii 2827
                        • 17.0%Symfony 2504
                        • 2.5%Zend Framework 274
                        • 2.7%Bitrix80
                        • 10.2%Другой303
                        • 12.6%без фреймворка373
                      • Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 4в из 6

                        • Tutorial

                        Содержание основного курса




                        Улучшение кода






                        Official translation (with a bit of polishing) is available here.




                        Новый растеризатор и коррекция перспективных искажений


                        Тема сегодняшего разговора — это коррекция искажений интерполяции, посмотрите на разницу текстурирования на полу:



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

                        Поэтому начнём с того, как работает новый растеризатор, а для этого нам нужно уметь работать с барицентрическими координатами.
                        Читать дальше →
                      • Краткий курс компьютерной графики: задание карт нормалей в касательном пространстве

                        • Tutorial
                        Дошли руки написать очередное дополнение к моему краткому курсу компьютерной графики. Итак, тема для очередного разговора — использование карт нормалей. В чём основное отличие использования карт нормалей от затенения Фонга? Основная разница в плотности задания информации. Для затенения Фонга мы использовали нормальные вектора, заданные к каждой вершине нашей полигональной сетки, интерполируя нормали внутри треугольников. Использование же карт нормалей позволяет задавать нормали для каждой точки нашей поверхности, а не лишь изредка, что просто драматическим образом влияет на детализацию изображений.

                        В принципе, в лекции про шейдеры мы уже использовали карту нормалей, но только заданную в глобальной системе координат. Сейчас же разговор пойдёт про касательное пространство. Итак, вот две текстуры, левая задана в глобальном пространстве (RGB напрямую превращается в вектор XYZ), а правая — в касательном.

                        Читать дальше →
                      • Персонализация IMGUI и редактора Unity. Часть первая

                        • Translation
                        С момента выхода новой системы Unity UI прошло больше года, поэтому Ричард Файн решил написать о ее предшественнице – IMGUI.
                        На первый взгляд, это совсем нелогично. Зачем писать об устаревшей системе UI, если уже давно вышла новая? Что ж, новая система действительно предлагает широкие возможности настройки игровых интерфейсов, но если вы хотите добавить в редактор новые инструменты и функции, вам наверняка пригодится IMGUI.


                        Читать дальше →
                      • Приёмы работы в Blender. Часть 2

                          Серия публикаций

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



                          Можно задать собственный размер участка рендера нажав в рабочем окне Ctrl+B (Render Border). Сбросить размеры этого участка Ctrl+Alt+B.
                          Читать дальше →
                          • +33
                          • 24.5k
                          • 3
                        • WebGL для всех

                          • Tutorial


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

                          WebGL, в отличие от Javascript, имеет высокий порог вхождения, его до сих пор мало кто использует, а ещё меньше тех, кто об этом пишет. Большинство руководств или статей перепрыгивают сразу на использование какой-нибудь библиотеки. Но мы-то с вами знаем, что большие универсальные инструменты не всегда пригодны для наших задач или, возможно, делают это на неприемлемом уровне: проигрывают в скорости, поставляются с ненужным багажом и т.д.

                          Этой статьёй хочется облегчить порог вхождения в чистый WebGL, дать начальное представление и подсказать, куда двигаться дальше.
                          Поехали!
                        • Детализация, отражения и пост-эффекты в GTA V

                          • Translation
                          От переводчика:

                          Данная публикация является продолжением материала
                          «Как происходит рендеринг кадра в GTA V». Теперь автор рассматривает вопросы детализации, освещения и пост-обработки кадра. Приятного чтения.

                          Уровень детализации


                          Если мы говорим об абсолютных преимуществах Rockstar над конкурентами, то показатели уровня детализации продуктов компании, определенно, выше всяких похвал. Лос-Сантос – это целая плеяда всевозможных сцен разной степени детализации/полигональности, причем все данные транслируются в режиме реального времени и это ни на минуту не блокирует экран загрузки. Просто дух захватывает!

                          Огни ночного города


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

                          Именно с таким заявлением Аарон Гарбут, один из основателей и арт-директоров Rockstar North, выступил незадолго до релиза игры на PS3.

                          Так ли это? Давайте рассмотрим вот такую ночную сцену:

                          image
                          Огоньки «До»
                          Осторожно! Трафик!
                          Читать дальше →
                          • +43
                          • 37.2k
                          • 8
                        • Простой Blender. Часть 1

                          image
                          КДПВ. По мотивам.

                          О чем пост


                          Пост написан по мотивам этого комментария . Особенно вдохновила картинка в ответах к этому комментарию. Изначально хотел здесь написать про UI и основы моделлинга в Blender, но выходит многовато (я словообилен). Поэтому, про моделлинг — позже (если публика захочет). А здесь — про UI Blender с точки зрения непрофессионала.
                          Тоже хочу танк нарисовать!