Pull to refresh
-11
0
Send message

Нейронные сети предпочитают текстуры и как с этим бороться

Reading time7 min
Views32K


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


В первой статье Approximating CNNs with bag-of-local features models works surprisingly well on ImageNet авторы берут модель, похожую на bag-of-words, и в качестве "слов" используют фрагменты из изображения. Эти фрагменты могут быть вплоть до 9х9 пикселей. И при этом, на такой модели, где полностью отсутствует какая-либо информация о пространственном расположении этих фрагментов, авторы получают точность от 70 до 86% (для примера, точность обычной ResNet-50 составляет ~93%).


Во второй статье ImageNet-trained CNNs are biased towards texture авторы приходят к выводу, что виной всему сам набор данных ImageNet и то, как изображения воспринимают люди и нейронные сети, и предлагают использовать новый датасет – Stylized-ImageNet.


Более подробно о том, что на картинках видят люди, а что нейронные сети

Читать дальше →

Полезные расширения Google Chrome для программиста

Reading time4 min
Views41K
Работа программиста настолько сложна и разнообразна, что в ней просто не обойтись без помощи различных инструментов. Подготовил список из 34 полезных расширений Google Chrome, которые облегчат вашу жизнь и сэкономят время.

image

1. Octotree

Если вы любите GitHub и помногу читаете код, то, вероятно, знаете, как неудобно устроен обзор GitHub-файлов онлайн. Теперь этот процесс можно упростить при помощи расширения Octotree. Здесь предоставляется панель инструментов с удобной навигацией, также поддерживающая приватные репозитории.

2. PerfectPixel by WellDoneCode

Это расширение позволяет разработчикам накладывать изображения полупрозрачным слоем поверх HTML и делать попиксельное сравнение.

3. GitHub Repository Size

Удобный и простой плагин, отображающий как объем отдельного репозитория, так и размер кажого файла в нем.
Читать дальше →

Глубокое погружение в Linux namespaces

Reading time7 min
Views123K

Часть 1
Часть 2
Часть 3
Часть 4


В этой серии постов мы внимательно рассмотрим один из главных ингредиентов в контейнере – namespaces. В процессе мы создадим более простой клон команды docker run – нашу собственную программу, которая будет принимать на входе команду (вместе с её аргументами, если таковые имеются) и разворачивать контейнер для её выполнения, изолированный от остальной системы, подобно тому, как вы бы выполнили docker run для запуска из образа.

Читать дальше →

Погружение в свёрточные нейронные сети. Часть 5 / 10 — 18

Reading time27 min
Views27K

Полный курс на русском языке можно найти по этой ссылке.
Оригинальный курс на английском доступен по этой ссылке.



Выход новых лекций запланирован каждые 2-3 дня.

Читать дальше →

Как я сделал удобной разработку на Vue.js с server-side рендерингом

Reading time10 min
Views38K
Всем привет!

Начну с небольшой предыстории.

Свой новый проект я решил попробовать сделать на Vue.js. Мне нужен был серверный рендеринг (SSR), CSS модули, code-splitting и прочие прелести. Разумеется, для повышения производительности разработки нужна была горячая перезагрузка (HMR).

Я не хотел использовать готовые решения, типа Nuxt.js, т.к. при разрастании проекта важно иметь возможность кастомизации. А любые высокоуровневые решения, как правило, не дают этого делать, или дают, но с большими усилиями (был похожий опыт с использованием Next.js для React).

Основная проблема локальной разработки при использовании серверного рендеринга и горячей перезагрузки состояла в том, что мало запустить один webpack-dev-server. Мы должны также что-то сделать с исходниками, которые запускает Node.js, иначе при следующей перезагрузке страницы мы получим код, который не был обновлен на сервере, но обновился на клиенте.

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


Читать дальше →

Создание софтверного движка 2.5D

Reading time11 min
Views24K
В настоящее время интерес к софтверным движкам, как из игр Quake, DOOM или Duke Nukem 3D практически нулевой. Однако, эти движки имели своё очарование и мне, например, очень нравится графика именно таких вот движков с нереалистичными текстурами на стенах. Конечно, такие текстуры можно накладывать без фильтрации и в OpenGL, получая такой же уровень графики, но всё же, написать собственный софтверный движок было весьма интересно. Движок уровня Quake я написать в своё время не смог, так как не удалось создать редактор 3D карты – я просто не представлял, как вообще рисовать в 3D карту. Да и с большой вероятность текстурирование в произвольном случае в моём исполнении (без ассемблера) было бы очень медленно. Но движок уровня DOOM мне покорился. Основу такого движка я написал в 2002 году, пользуясь книжкой Шикина и Борескова “Компьютерная графика. Полигональные модели”. На базе того движка используя графику из Doom я написал некое подобие игры под MS-DOS на Watcom C. Несколько лет назад я решил вынуть из той игры код движка и переработать его под мои текущие знания языка Си++ и представления о том, как стоило бы устроить этот движок. Ну и заодно перенести этот движок под Windows и дополнить наклонами головы, как в Blood или Duke Nukem. О том, что в результате получилось, я и написал в этой статье.
Читать дальше →

Пишем движок трёхмерного ретро-шутера с нуля

Reading time15 min
Views35K

Мне всегда нравились классические шутеры от первого лица 90-х. Я часами просиживал за моим 386-м, играя Doom, потрясённый тем, как кому-то удалось написать код, отрисовывающий на моём экране 3D-графику в реальном времени с отличным разрешением 320x200. Я немного знал программирование (только что начал изучать BASIC), поэтому осознавал, что глубоко внутри это всего лишь куча математики и байтов, записываемых в видеопамять. Но в то время даже массивы для меня были довольно сложным понятием, поэтому я не мог даже начать постигать всю сложность 3D-рендеринга.

В то время все писали 3D-движки с нуля, потому что другого способа не было. Но сегодня написание логики 3D-рендеринга с нуля скорее всего окажется плохой идеей. Очень плохой. Почти как изобретение колеса! При наличии огромного количества 3D-движков и библиотек, намного более хорошо протестированных и оптимизированных, чем то, что вы можете сделать сами, нет никаких причин для разумного разработчика начинать писать собственный движок.

Если только…

Представьте, что вы можете вернуться в машине времени назад в 90-е, когда ещё не было OpenGL и DirectX, не было видеопроцессоров. Всё что у вас есть — ЦП и экран, заполненный пикселями. Вам всё придётся писать самому.

Если эта идея кажется вам интересной, то вы не одиноки: это именно то, что можно сделать на такой выдуманной консоли, как TIC-80.
Читать дальше →

У цветового треугольника не два, а один угол

Reading time16 min
Views42K
Как увидеть цвет, которого в природе не бывает?

image


Четыре года назад на Хабре был пост с интересным и полезным видео «Как устроен цвет». Лектор — Дмитрий Николаев, заведующий сектором зрительных систем ИППИ РАН.

Я сделал расшифровку (в меру своего понимания материала), потому что считаю и тему важной и подачу — отличнейшей. Пока набирал текст, чуть не поменял своё φ(λ). Слово спикеру:


Поговорим о математике и геометрии цвета, о том, какие абстрактные структуры заложены в этом слове.

Что такое «цвет» не знает никто.

Цвет — это что-то, о чем говорит человек, наблюдающий и познающий мир с помощью глаза.

Глаз регистрирует какие-то свойства электромагнитного излучения, называемого светом, попадающего в глаз, преломляющегося на хрусталике, проецируемого на сетчатку. «Колбочки» регистрируют какие-то мощностные свойства. И дальше внезапно человек говорит о каком-то «цвете».

В физике нет цвета, а есть спектральные свойства излучения.

«Цвет» связан с относительным распределением спектральной энергии, мощности или потока излучения. (При прохождении через призму человек видит характерную «радугу».)

Совершенно точно, «цвет» — психологический феномен. Цвет — это ощущение, к объективной физике не имеющий отношения.

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

Переезд на работу за границу: 6 сервисов в помощь эмигрантам в США и Канаду

Reading time5 min
Views25K


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

Как GPU справляются с ветвлением

Reading time11 min
Views18K
image

О статье


Этот пост — небольшая заметка, предназначенная для программистов, которым хочется больше узнать о том, как GPU обрабатывает ветвление. Можно считать её введением в эту тему. Рекомендую для начала просмотреть [1], [2] и [8], чтобы получить представление о том, как в общем виде выглядит модель выполнения GPU, потому что мы будем рассматривать только одну отдельную деталь. Для любопытных читателей в конце поста есть все ссылки. Если найдёте ошибки, то свяжитесь со мной.

Содержание


  • О статье
  • Содержание
  • Словарь
  • Чем ядро GPU отличается от ядра ЦП?
  • Что такое согласованность/расхождение?
  • Примеры обработки маски выполнения
    • Выдуманная ISA
    • AMD GCN ISA
    • AVX512
  • Как бороться с расхождением?
  • Ссылки
Читать дальше →

Карта средств защиты ядра Linux

Reading time3 min
Views12K
Защита ядра Linux — очень сложная предметная область. Она включает большое количество сложно взаимосвязанных понятий, и было бы полезным иметь ее графическое представление. Поэтому я разработал карту средств защиты ядра Linux. Вот легенда:

Читать дальше →

Современный подход к конкурентности в Android: корутины в Kotlin

Reading time10 min
Views26K
Привет, Хабр!

Напоминаем, что у нас уже открыт предзаказ на долгожданную книгу о языке Kotlin из знаменитой серии Big Nerd Ranch Guides. Сегодня мы решили предложить вашему вниманию перевод статьи, рассказывающей о корутинах Kotlin и о правильной работе с потоками в Android. Тема обсуждается очень активно, поэтому для полноты картины также рекомендуем посмотреть эту статью с Хабра и этот подробный пост из блога компании Axmor Software.
Читать дальше →

Привычка делать сейчас

Reading time4 min
Views42K

Привычка делать сейчас Нила Фиоре — это самоучитель о понимании и преодолении прокрастинации.


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


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

Читать дальше →

Играем в Тетрис в AR

Reading time10 min
Views6.4K
Пришла мне в голову немного странная мысль, что дом мог бы быть неплохой площадкой для игры в Тетрис. Недалеко от меня как раз располагалось одно подходящее для этого здание. Результат можно увидеть на видео:


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

Исходный код

Встань и иди. Операции на позвоночнике: когда делать, чем опасно

Reading time13 min
Views164K
ТОП3 мифов про больную спину, которые мешают людям раз и навсегда решить свою проблему.

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

Читать дальше →

В этой статье слишком много воды

Reading time9 min
Views41K
«Мы начинаем разработку новой игры, и нам нужна классная вода. Такую сможешь?»


, — cпросили меня. «Да не вопрос! Конечно, смогу», — ответил я, но голос предательски задрожал. «А, еще и на Unity?», — и мне стало понятно, что впереди очень много работы.
Читать дальше →

Ультразвуковой GPS

Reading time6 min
Views9.7K

Ультразвуковой GPS. Концептуальная модель


Перед тем как отправляться в столь долгое плавание стоит проверить, а так ли все реально сделать на коленке.

О чем эта статья: как быстро и недорого сделать простую ультразвуковую GPS.

Список необходимых устройств


  • HC-SR04 3 шт.
  • Arduino 1 шт.
  • Моток проводов.

Концепция


image
Рис. 1 – Общая идея устройства

Русская расширенная клавиатурная раскладка

Reading time3 min
Views40K
image

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

Зарубежные создатели интерфейсов редко заботятся об их адаптации к чужим культурам. Ярким примером такого интерфейса является широко используемая всеми компьютерная клавиатура (здесь и далее подразумевается клавиатура по стандарту 104 ANSI).
Читать дальше →

Увеличение видео 1080P до 4K, или Как я научился не волноваться и полюбил апскейл с помощью нейросетей

Reading time27 min
Views208K
Читая недавно очередную статью про апскейл (Upscale — масштабирование изображения до более высокого разрешения), на этот раз про коммерческий продукт Topaz AI Gigapixel, я оставил комментарий следующий содержания:
Жаль, что пост — простой перевод, хотелось бы сравнения с чем-нибудь бесплатным, вроде того же waifu2x. Полагаю, разницу найти будет очень сложно, даже несмотря на то, что waifu2x предназначена для анимации.
Ну а раз статья была переводом, я решил взять дело в свои руки. Итак, не будем тратить времени, знакомьтесь:


Под катом лонгрид, а также гайды по апскейлу видео с помощью Instant 4K, Waifu2x, Lanczos и Topaz Gigapixel AI.

Читать дальше →

Information

Rating
7,182-nd
Registered
Activity