Наш сервис отправляет и принимает примерно 40тыc емейлов в час⠀(я даже писал про это тут, правда тогда было "всего" 25тыс).
Это дофига. Расходуется и траффик, и сторадж. Но самое обидное, что больше половины объема занимает - угадайте что?
Чертовы иконки соцсетей в подписях.
Знаете, менеджеры очень любят втыкать в свою подпись миллион картиночек. "С уважением, Сюзан. Мой линкедин, мой твитор, моя инста, фейсбук, воцапп и телеграм".
И все эти иконки потом путешествуют по интернету в подвале цитируемых сообщений. Ведь цитируемый текст тоже - никто. Никогда. Не убирает.
Да еще и в MIME-кодировке, которая, как и Base64, увеличивает бинарные данные раза в полтора...
И весь этот мусор отжирает гигабайты в день. Только на картинки. Я померял!
В общем, затеял я викенд-проджект по сортировке отходов. Наш продукт должен научиться убирать из емейлов весь этот цифровой мусор.
—
Сначала я придумал революционный алгоритм "если embedded-картинка весит меньше килобайта - нахуй".
Но он показался команде недостаточно молодежным и меня отправили изучать AI и Computer Vision. Мол, нейросети давно уже водят машины и распознают образы с камер видеонаблюдения в риалтайме (30 fps) даже на дохлых Raspberry Pi. Уж как-нибудь справятся увидеть иконку фейсбука в почте. "Ты же математик - иди врубайся в свертки и сетки..."
Ок, давайте сюда ваш TensorFlow.
— прошло два дня —
Я втайне надеялся, что работа дата-сатаниста - это как в кино - сидишь такой в VR шлеме, вокруг тебя Матрица, летают зеленые нули и единицы, а напротив сидит сверхразум и ты ему чтото говоришь на языке Ктулху.
Но оказалось, что ML-будни состоят из круглосуточного глазения в разметочный софт. Ты отсматриваешь сотни картинок, выделаешь области, чистишь, подбираешь модельку, тренируешь, валидируешь, смотришь как работает (вернее "как не работает") - и повторяешь все сначала.
Когда модель обучена - УРА - пришло время пописать хоть какой-то код?
Ахаха, нет. Код на Питоне занимает примерно 5 (пять) строк.
Из которых четыре - это изменение размера и формата входящей картинки. А всю работу делает "tensorflow.dll"
Кстати, я сначала попытался обойтись без Питона и остаться в дотнет-монолите... Но нет. Это, увы, невозможно. Во-первых, при всей моей любви к C#, либа ML .NET - полное говно. Но дело даже не в этом, а в том что все новинки и тренды сначала появятся на Питоне, а уже потом, если повезет, их растащат в другие языки. В общем "ML = Питон", без вариантов.
Короче, вот что мы сделали. Или "как за два часа собрать примитивный классификатор картинок, если ты знаешь про ML примерно ничего":
1. Набрать датасет изображений для обучения (в моем случае - пара тыщ иконок соцсетей), разложить по папочкам ("/twitter", "/facebook" и тд), на глазок отсеять слишком "экстремальные" без значимых фич (поверьте, к концу первого часа вы научитесь это "видеть").
2. Поставить бесплатный https://liner.ai/ Отличная тулза от Дивама Гупты, чувака из фейсбука (а до этого - майкрософта), который занимается AI для VR-шлемов, а в свободное время пилит этот Лайнер.
Если вы далеки от мира ML - просто скачайте ее поиграться. Хорошая штука. Во-первых, потому, что обучить и валидировать модель можно прямо в ней, чтобы не писать скрипты руками. Во-вторых, это одна из немногих прог, поддерживающих MobileNet - быструю и маленькую сетку, рассчитанную на работу на моб. устройствах. Распознает реально моментально. Такая же модель для ResNet-50 получилась в десять (!) раз больше (180мб против 13мб) и жрала 70% cpu.
2а. Если меня читают дотнетчики, которые не хотят трогать Питон (зря) - поставьте в Visual Studio экстеншен "ML NET Model Builder". Там тоже можно приготовить датасет, натренить модель и даже сгенерить какие-то примерчики на C#.
Вот доходчивый видос, где мужик наглядно делает на дотнете распознавалку дорожных знаков на уличных фотографиях.
Собственно, все. Дальше я немного переписал код под свои нужды, обернул во Flask и закинул в облако. И за полдня работы микросервис отрезал 25тыс (!) бесполезных файлов (см скриншот).
Кажется, можно добавлять в резюме "AI + ML"
(нет)
Post #132
5.25K