• Типичные ошибки начинающих работать с изображениями

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


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


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

    Читать дальше →
  • Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 2

      Мы продолжаем рассказывать о курсе «How to Win Coding Competitions: Secrets of Champions», который Университет ИТМО запустил на платформе edX в этом году (первую часть материала читайте здесь).

      Во второй части нашей беседы с авторами и инструкторами курса — Максимом Буздаловым и Павлом Кротковым, чемпионами ACM ICPC, и Дарьей Яковлевой, призером Google Code Jam for Women, речь пойдет о том, важен ли победителям олимпиад правильный настрой, как развить навык поиска креативных решений и кому будет полезен курс от чемпионов Университета ИТМО.

      Читать дальше →
    • Как стать первым в спортивном программировании: Университет ИТМО делится опытом. Часть 1

        В этом материале мы расскажем о новом курсе, который был запущен Университетом ИТМО на платформе edX в этом году. Под катом – рассказ о проекте «How to Win Coding Competitions: Secrets of Champions» и большое интервью с авторами и инструкторами курса, в котором они рассуждают о том, что должен знать и уметь будущий победитель, и делятся своим опытом и воспоминаниями от участия в олимпиадах по программированию.

        Читать дальше →
      • Чему нас не научил профессор Ng

          Как видно по дискуссиям на хабре, несколько десятков хабровчан прослушали курс ml-class.org Стэнфордского университета, который провел обаятельнейший профессор Andrew Ng. Я тоже с удовольствием прослушал этот курс. К сожалению, из лекций выпала очень интересная тема, заявленная в плане: комбинирование обучения с учителем и обучения без учителя. Как оказалось, профессор Ng опубликовал отличный курс по этой теме — Unsupervised Feature Learning and Deep Learning (спонтанное выделение признаков и глубокое обучение). Предлагаю краткий конспект этого курса, без строгого изложения и обилия формул. В оригинале все это есть.
          Читать дальше →
        • Метод Виолы-Джонса (Viola-Jones) как основа для распознавания лиц

            Хотя метод был разработан и представлен в 2001 году Полом Виолой и Майклом Джонсом [1, 2], он до сих пор на момент написания моего поста является основополагающим для поиска объектов на изображении в реальном времени [2]. По следам топика хабраюзера Indalo о данном методе, я попытался сам написать программу, которая распознает эмоцию на моём лице, но, к сожалению, не увидел на Хабре недостающей теории и описания работы некоторых алгоритмов, кроме указания их названий. Я решил собрать всё воедино, в одном месте. Сразу скажу, что свою программу успешно написал по данным алгоритмам. Как получилось рассказать о них ниже, решать Вам, уважаемые Хабрачитатели!
            Добро пожаловать под кат!
          • Таблица виртуальных методов и техника безопасности

              Техника безопасностиВ качестве небольшой разминки перед статьёй хотелось бы, чтобы читатель задал себе следующий вопрос: нужно ли фотографу для получения качественных снимков знать, как работает фотоаппарат? Ну, по крайней мере, должен ли он знать понятие «диафрагма»? «Отношение сигнал-шум»? «Глубина резкости»? Практика подсказывает, что даже со знанием таких сложных слов снимки могут получиться у наиболее «рукастых» не особо лучше снятых на мобильник через 0.3-МПикс-дупло. И наоборот, по-настоящему хорошие снимки могут получаться благодаря исключительно опыту и наитию при полном незнании матчасти (хотя это, скорее, исключения из правил, но всё же). Однако вряд ли со мной кто-то будет спорить, что профессионалам, которые хотят выжать из своей техники всё (а не только количество мегапикселей на квадратный миллиметр матрицы), эти знания нужны в обязательном порядке, поскольку в противном случае ему и называться профессионалом-то нельзя. И верно это не только для отрасли цифровой фотографии, но и для практически любой другой.

              Верно это и для программирования, а для программирования на языке С++ – вдвойне. В этой статье будет описано важное понятие языка, известное как «Виртуальный табличный указатель», что присутствует почти во всех сложных классах, и то, каким образом его можно случайно повредить. Это может, в свою очередь, вести к едва поддающимся отладке ошибкам. Сначала напомню, что это вообще такое, а затем и поделюсь своими соображениями по поводу того, как и что может там сломаться.
              Читать дальше →
            • OpenWorm: цифровая модель червя-нематоды в браузере

                Крошечная нематода, или круглый червь Caenorhabditis elegans длиной около миллиметра — один из самых изученных организмов на Земле. Это первый многоклеточный организм, геном которого был полностью секвенирован. У C. elegans два пола — самцы и гермафордиты. Взрослая гермафордитная особь состоит всего из 959 клеток, а её нервная система — из 302 нейронов. Все связи между нейронами C. elegans (коннектом) также полностью описаны. Обилие всесторонней научной информации об этом черве и относительная простота его устройства несколько лет назад вдохновили сотрудников лаборатории моделирования сложных систем института систем информатики имени А. П. Ершова СО РАН создать исчерпывающую компьютерную модель C. elegans.

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


                Читать дальше →
              • Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д

                  image

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

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

                  UPD: добавлено видео.

                  Читать дальше →
                • Обзор наиболее интересных материалов по анализу данных и машинному обучению №20 (27 октября — 2 ноября 2014)


                    Представляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения.
                    Читать дальше →
                    • +23
                    • 12,7k
                    • 3
                  • Моделируем электрическую активность нейронов

                    Вступление


                    Сразу сообщу, что данная заметка не имеет отношения к перцептронам, сетям Хопфилда или любым другим искусственным нейронным сетям. Мы будем моделировать работу «настоящей», «живой», биологической нейронной сети, в которой происходят процессы генерации и распространения нервных импульсов. В англоязычной литературе такие сети ввиду их отличия от искусственных нейронных сетей называются spiking neural networks, в русскоязычной же литературе – нет устоявшегося названия. Кто-то называет их просто нейронными сетям, кто-то – импульсными нейронными сетями, а кто-то – спайковыми.
                    Читать дальше →
                  • Вечная жизнь: замена мозга другим носителем с сохранением сознания и личности


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

                      1. Управляемое бесконечное деление биологической клетки
                      2. Перенос сознания на другой более отказоустойчивый носитель.

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

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

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

                        На данный момент существуют три наиболее проработанных и отчасти экспериментально проверенных теории строения сознания в области теоретической нейробиологии: теория функциональных систем П.К. Анохина, теория селекции нейрональных групп (нейродарвинизм) Джеральда Эдельмана и теория глобальных информационных пространств Жана-Пьера Шанже (изначально сформулирована Бернардом Баарсом). Остальные теории либо являются модификациями названных, либо не подтверждены никакими экспериментальными данными. В данной статье речь пойдет о первой из этих теорий — Теории функциональных систем П.К. Анохина.
                        Читать дальше →
                      • ПО для взаимодействия ПК и смартфона

                          С момента покупки смарта на Android меня заинтересовало его функциональное наполнение. На практике оказалось, что Android способен выполнять практически любую задачу, решаемую на обычном ПK, только медленнее и не всегда удобнее. Зато дополняет ПК он прекрасно, и механизмов использования возможностей смарта на ПК и возможностей ПК на смарте — уйма.

                          Статья ориентирована в основном на формирующихся и будущих пользователей Android-смартфонов; надеюсь, что продвинутые пользователи также найдут в ней что-то новое и/или внесут свою лепту. Под катом по пунктам, в вопрос-ответном стиле.
                          Читать дальше →
                        • Ускоренное расширение Вселенной: несколько популярных слов

                          Некоторая ирония природы состоит в том, что наиболее изобильная форма энергии во Вселенной есть и наиболее загадочная. После ошеломляющего открытия ускоренного расширения Вселенной довольно быстро возникла согласованная картина, указывающая на то, что 2/3 космоса «сделаны» из «темной энергии» — некоторого сорта гравитационно отталкивающего материала. Но достаточно ли убедительны доказательства, подтверждающие новые экзотические законы природы? Может имеются более простые астрофизические объяснения этих результатов?
                          Читать дальше →
                        • Пузырьковая сортировка и все-все-все


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

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

                            image: пузырьки

                            Сделать первый шаг в изучении сортировок
                          • The Human Brain Project: Вы спрашивали – мы отвечаем


                              Источник: Nature

                              Некоторое время назад на Хабре была опубликована заметка о возможностях 3D SEM-микроскопии применительно к исследованию структуры человеческого мозга в рамках европейского мегапроекта «The Human Brain Project». Под катом мы постарались максимально подробно – а это значит будет много текста – ответить на заданные вопросы, но начнём по традиции с некоторого введения.
                              Attention! Впереди очень много текста
                              Добро пожаловать в мир мозга
                            • Фильтр Блума

                                И снова здравствуйте! Сегодня я поведаю о фильтре Блума — структуре данных гениальной в своей простоте. По сути, этот фильтр реализует вероятностное множество всего с двумя операциями: добавление элемента к множеству и проверка принадлежности элемента множеству. Множество вероятностное потому, что последняя операция на вопрос «принадлежит ли этот элемент множеству?» даёт ответ не в форме «да/нет», а в форме «возможно/нет».

                                Как фильтр это делает?
                              • Trie, или нагруженное дерево

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

                                Что это ?


                                Нагруженное дерево — структура данных реализующая интерфейс ассоциативного массива, то есть позволяющая хранить пары «ключ-значение». Сразу следует оговорится, что в большинстве случаев ключами выступают строки, однако в качестве ключей можно использовать любые типы данных, представимые как последовательность байт (то есть вообще любые).
                                Читать дальше →
                              • Простой wifi бот для мониторинга помещений или «кухонное» роботостроение

                                Вступление.


                                Сегодня у каждого из нас дома присутствует выделенная линия с весьма «толстым» каналом. Так же у большинства есть wifi роутер, и опять таки большинство из нас не заботится о его отключении когда уходим из дома. И действительно зачем? Протоколы защиты wifi весьма надежны, потребление роутера ничтожно. Следовательно ваш дом часто или всегда on-line. Но что это нам дает? Торентокачалки, личные разнообразные сервера и т.д.

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

                                Тем не менее обострения паранойи, гиперответственность или схожие факторы (вспомним классическую ситуацию – «А выключил ли я утюг?») создают нам определенный дискомфорт когда мы оставляем свое жилище. Особенно на длительный срок. Возникает вопрос – как так получается что квартира все время on-line, а я ничего не вижу и не контролирую. Странно.

                                Читать дальше →
                              • Оценка сложности алгоритмов

                                  Не так давно мне предложили вести курс основ теории алгоритмов в одном московском лицее. Я, конечно, с удовольствием согласился. В понедельник была первая лекция на которой я постарался объяснить ребятам методы оценки сложности алгоритмов. Я думаю, что некоторым читателям Хабра эта информация тоже может оказаться полезной, или по крайней мере интересной.
                                  Читать дальше →