Супер доклад Ozon про прогнозирование спроса (за наводку спасибо Анатолию, у которого нет в тг юзернейма, а то я бы его тегнул, чтобы знали героев в лицо!)
https://youtu.be/UThlbrS3AUU
UPD:
Анатолий пообещал постить клевые ссылки сюда: https://news.1rj.ru/str/AspiringDataScience
https://youtu.be/UThlbrS3AUU
UPD:
Анатолий пообещал постить клевые ссылки сюда: https://news.1rj.ru/str/AspiringDataScience
YouTube
Машинное обучение (lightGBM) и теория вероятностей для предсказания продаж / Александр Алексейцев
Приглашаем на конференцию HighLoad++ 2025, которая пройдет 6 и 7 ноября в Москве!
Программа, подробности и билеты по ссылке: https://highload.ru/moscow/2025
________
При поддержке AvitoTech мы впервые публикуем все видео с HighLoad++ 2019 в открытый доступ.…
Программа, подробности и билеты по ссылке: https://highload.ru/moscow/2025
________
При поддержке AvitoTech мы впервые публикуем все видео с HighLoad++ 2019 в открытый доступ.…
🔥9😁1
InFarm, европейский лидер рынка вертикальных ферм, единорог серии D с $600M инвестиций (согласно Crunchbase, возможно больше), сокращает 500 из 900 сотрудников и уходит из девяти стран. Компания делала мини-фермы в супермаркетах. Стратегия без шансов стать прибыльной, потому что агро требует больших масштабов, а вертикальные фермы стерильной среды. InFarm собрали бинго: маленький масштаб, неизбежное использование людей, грязная среда, продукция с маленькой маржой. Теперь компания делает пивот в сторону фабрик и производства, где ей придется начинать с нуля.
Отличные новости для PlanetFarms, потому что у нас есть план, который может сработать. При 1/20 инвестиций и с командой в 10 раз меньше мы продолжаем строить фабрики и будем нанимать в следующем году.
Отличные новости для PlanetFarms, потому что у нас есть план, который может сработать. При 1/20 инвестиций и с командой в 10 раз меньше мы продолжаем строить фабрики и будем нанимать в следующем году.
👍18🔥5😱3
Снова минутка бесплатной рекламы
Недавно мне написал @andrey_kiselev и показал демо everinfer.ai. Это serverless платформа для ML инференса.
Самая крутая часть демки: тяжелый UNET из StableDiffusion отправляется на удаленную машину, компилируется в C++ ONNX и обслуживается сервером на Rust. Ты локально запускаешь генерацию картинки, легкие чести модели исполняются на CPU, а тяжелые делегируются удаленной машине с GPU. Я думал, что замена локальных вычислений на обращение к сети сделает генерацию сильно медленнее, но нет. И GPU не нужна, и работает быстрее за счет ONNX.
Давно казалось, что должна появится такая штука, когда ты пишешь pytorch код локально, а исполняется он где-то далеко в оптимизированной среде. А не вот это вот все с арендой инстансов, настройкой CUDA версий в контейнерах и драками на ножах с коллегами за GPU.
Вот какие фичи заявляют сами everinfer.ai:
- запускать ML модельки на удаленных видеокартах в три строчки кода из любого окружения
- автоматически параллелить обработку по множеству машин
- обращаться к моделям с минимальным оверхедом на сеть и получать впечатляющий latency на запросы
Ребята только запускаются и хотят найти первых пользователей. Готовы давать бесплатно и софт, и GPU/CPU железо для ваших проектов и лично помогать запуститься/
Заходите на сайт everinfer.ai, посмотрите на доки, если интересно услышать больше и посмотреть демо на звонке с фаундером - пишите @andrey_kiselev
Недавно мне написал @andrey_kiselev и показал демо everinfer.ai. Это serverless платформа для ML инференса.
Самая крутая часть демки: тяжелый UNET из StableDiffusion отправляется на удаленную машину, компилируется в C++ ONNX и обслуживается сервером на Rust. Ты локально запускаешь генерацию картинки, легкие чести модели исполняются на CPU, а тяжелые делегируются удаленной машине с GPU. Я думал, что замена локальных вычислений на обращение к сети сделает генерацию сильно медленнее, но нет. И GPU не нужна, и работает быстрее за счет ONNX.
Давно казалось, что должна появится такая штука, когда ты пишешь pytorch код локально, а исполняется он где-то далеко в оптимизированной среде. А не вот это вот все с арендой инстансов, настройкой CUDA версий в контейнерах и драками на ножах с коллегами за GPU.
Вот какие фичи заявляют сами everinfer.ai:
- запускать ML модельки на удаленных видеокартах в три строчки кода из любого окружения
- автоматически параллелить обработку по множеству машин
- обращаться к моделям с минимальным оверхедом на сеть и получать впечатляющий latency на запросы
Ребята только запускаются и хотят найти первых пользователей. Готовы давать бесплатно и софт, и GPU/CPU железо для ваших проектов и лично помогать запуститься/
Заходите на сайт everinfer.ai, посмотрите на доки, если интересно услышать больше и посмотреть демо на звонке с фаундером - пишите @andrey_kiselev
👍34
Forwarded from DLStories
Помните, я летом говорила, что ездила на съемки лекций? Так вот, курс, который мы тогда записывали, наконец готов и выложен на Степик!
Это полностью бесплатный и довольно подробный курс по машинному обучению с самых азов и до продвинутых тем. Делали мы его частью команды DLS + несколько других отличных специалистов. Ориентирован он на школьников, так что изложение старались делать очень понятным языком. Но проходить, разумеется, могут все желающие.
Темы курса начинаются с введения в Python, знакомства с нужными библиотеками, математики для анализа данных и идеи машинного обучения. Затем переходим к изучению моделей, метрик и других аспектов прикладной машинки. Ну и дальше идут нейросети.
Подробную программу можно посмотреть тут. Она обширнее, чем программа DLS (в DLS мы учим в первую очередь глубокому обучению, и про классическое машинное обучение мы рассказываем не так подробно). Ну и, как обычно, мы постарались дать довольно много практики. В будущем к курсу еще выйдут дополнительные модули с новыми темами (сейчас идет монтаж записей).
Хочу сказать, что работы над курсом было проделано много: он отлично проработан методически. Тексты лекций были составлены заранее и записаны на профессиональное оборудование. Смотреть будет приятно!
К курсу прилагаются чатик для общения/помощи с учебой. В нем также будут ассистенты, которые будут отвечать на ваши вопросы. Ну и я там тоже буду =)
Приходите сами, а также зовите друзей!⬇️
Начать учиться тут
Это полностью бесплатный и довольно подробный курс по машинному обучению с самых азов и до продвинутых тем. Делали мы его частью команды DLS + несколько других отличных специалистов. Ориентирован он на школьников, так что изложение старались делать очень понятным языком. Но проходить, разумеется, могут все желающие.
Темы курса начинаются с введения в Python, знакомства с нужными библиотеками, математики для анализа данных и идеи машинного обучения. Затем переходим к изучению моделей, метрик и других аспектов прикладной машинки. Ну и дальше идут нейросети.
Подробную программу можно посмотреть тут. Она обширнее, чем программа DLS (в DLS мы учим в первую очередь глубокому обучению, и про классическое машинное обучение мы рассказываем не так подробно). Ну и, как обычно, мы постарались дать довольно много практики. В будущем к курсу еще выйдут дополнительные модули с новыми темами (сейчас идет монтаж записей).
Хочу сказать, что работы над курсом было проделано много: он отлично проработан методически. Тексты лекций были составлены заранее и записаны на профессиональное оборудование. Смотреть будет приятно!
К курсу прилагаются чатик для общения/помощи с учебой. В нем также будут ассистенты, которые будут отвечать на ваши вопросы. Ну и я там тоже буду =)
Приходите сами, а также зовите друзей!⬇️
Начать учиться тут
❤21🔥2
Раньше я писал про рынки предсказаний и как часто они бывают правы. Сегодня о том, когда они бывают неправы.
Все слышали про дефолт FTX по своим обязательствам. Метакулус по этому вопросу всегда предсказывал вероятность ноля и ошибся. Скорее всего это худший результат по бинарному вопросу за всю историю сервиса.
https://www.metaculus.com/questions/7230/what-is-a-counterparty-risk-of-ftx/
Все слышали про дефолт FTX по своим обязательствам. Метакулус по этому вопросу всегда предсказывал вероятность ноля и ошибся. Скорее всего это худший результат по бинарному вопросу за всю историю сервиса.
https://www.metaculus.com/questions/7230/what-is-a-counterparty-risk-of-ftx/
Metaculus
Will FTX default on an obligation to hand over their users’ assets on request by the end of 2022?
The aggregate of 38 Metaculus community forecasters was 2% on May 14, 2024.
🔥8
Намедни составлял для себя новый план по доходам и инвестициям. Вводные поменялись: доходы, расходы и потеря всех предыдущих накоплений.
Я стремлюсь к FIRE (Financial Independence, Retire Early): как можно раньше придти в ту точку, когда я могу не работать. Я не планирую переставать работать, но хотел бы иметь возможность.
Вот лучший калькулятор FIRE, что я нашел:
https://engaging-data.com/fire-calculator
Позволяет оценить, когда я смогу стать финансово независимым при текущих вложениях, росте доходов и прочих параметрах.
Я стремлюсь к FIRE (Financial Independence, Retire Early): как можно раньше придти в ту точку, когда я могу не работать. Я не планирую переставать работать, но хотел бы иметь возможность.
Вот лучший калькулятор FIRE, что я нашел:
https://engaging-data.com/fire-calculator
Позволяет оценить, когда я смогу стать финансово независимым при текущих вложениях, росте доходов и прочих параметрах.
Engaging Data
FIRE Calculator: When can I retire early? - Engaging Data
How long will it take you to save up for retirement? This interactive early retirement calculator will estimate your retirement age for a range of inputs.
🔥20👍6👎2😁1
Мой самый оптимистичный сценарий получился такой.
Было бы очень круто выйти на финансовую независиоть в 33+-1.
Но этот сценарий требует:
* Откладывать 45% доходов
* Растить доходы на 20% каждый год
* После ретайрмента жить не более чем на $30 000 в год
* После ретайрмента снимать не более 4% накоплений в год
Это очень агрессивная стратегия. Практически нереально осуществить. Думаю реалистичный сценарий при текущих усилиях это где-то 37+-3.
Но это все равно гораздо лучше, чем базовый сценарий. Если ввести параметры, где ты чуть-чуть откладываешь, растишь доходы на 1% в год, растишь свои расходы пропорионально доходам (больше зарабатываем - больше потребляем), и планируешь после ретайрмента не менять свой образ жизни, то тебя ждет пенсия к 77 годам. Какое-то издевательство.
Было бы очень круто выйти на финансовую независиоть в 33+-1.
Но этот сценарий требует:
* Откладывать 45% доходов
* Растить доходы на 20% каждый год
* После ретайрмента жить не более чем на $30 000 в год
* После ретайрмента снимать не более 4% накоплений в год
Это очень агрессивная стратегия. Практически нереально осуществить. Думаю реалистичный сценарий при текущих усилиях это где-то 37+-3.
Но это все равно гораздо лучше, чем базовый сценарий. Если ввести параметры, где ты чуть-чуть откладываешь, растишь доходы на 1% в год, растишь свои расходы пропорионально доходам (больше зарабатываем - больше потребляем), и планируешь после ретайрмента не менять свой образ жизни, то тебя ждет пенсия к 77 годам. Какое-то издевательство.
🔥6
Нарастить доход на 20% в год на первый взгляд кажется не так уж сложно. На текущий момент это что-то около $12000 в год. Разве это не легко для программиста? Типичный рейз зарплаты около 10%, а рост при смене работы вообще наверное 20% с большой дисперсией. Можно одним прыжком залететь на US рынок, в идеале на L5 в Google за $300k в год, и одним махом перевыполнить всю пятилетку.
Однако залетания в Google, рейзы и переходы это штуки мало прогнозируемые. Работа это само-собой. Интереснее вопрос: как помочь себе чем-то кроме работы?
Когда начинаешь считать оказывается, что поднять свой доход на 20% чем-то кроме работы это монументальное свершение.
Например, если преподавать в ОТУС раз в неделю, то едва ли выйдет $5000 за год. Чаще раза в неделю можно только если рассказывать одно и то же по кругу, но я так делать принципиально не хочу. Та же история с Solvery: там топовые ребята зарабатывают около 6000р в час. Опять же наберется от силы $5000 если не задолбаешься. В преподавание и менторство надо ввязываться ради интереса.
Если пытаться набрать $12к помогая в поиске работы, то, по моим оценкам, надо будет провести за год 40 человек. Просто нереально.
Если запустить сайд-проект с месячной подпиской за $20, который купят 100 клиентов, то набирается $24000. Выглядит как успех, но если прикинуть матождание доходов от такого предприятия, то есть домножить на вероятность сделать и найти 100 клиентов, то получается $24000*10% = $2400. 10% это еще очень оптимистично, если оценивать мой прошлый трек рекорд. Я своего рода бизнесмен: однажды сделал сайт на фрилансе и меня кинули, в другой раз сделал мод для игры и заработал $100 и еще как-то раз сделал задачку на upwork, но не смог вывести заработанные $40, был забанен Paypal и забил.
Минимальные расчеты быстро снимают розовые очки. Мой джун на днях спросил меня: почему ты еще не забутстрапишь дома проект и не слезешь с иглы капитализма? Я раньше и сам задавался этим вопросом. Казалось, что я такой особенный молодец. Все эти там распределения доходов и количества провалов стартапов ко мне не относятся, я ведь не такой как все. Сейчас что-то замучу, у меня обязательно все получится и результат превзойдет ожидания. Но едва начинаешь представлять как же именно оно должно получится и становится ясно, что ожидаемый доход от работы гораздо выше почти любого сайдхастла. Кто бы мог подумать! Так оказывается все работают на работе не потому, что дураки, вау.
И ведь с каждым годом поднимать доход на 20% будет сложнее.
Чтобы слезть с иглы “от зарплаты до зарплаты” или хотя бы ослабить ее давление надо сделать что-то нетривиальное. По крайней мере легких путей не будет. Мой текущий план: продолжать преподавать и делать прочие вещи ради интереса, искать хороший сайд-проект, работать на рейзы и держать нос по ветру.
Однако залетания в Google, рейзы и переходы это штуки мало прогнозируемые. Работа это само-собой. Интереснее вопрос: как помочь себе чем-то кроме работы?
Когда начинаешь считать оказывается, что поднять свой доход на 20% чем-то кроме работы это монументальное свершение.
Например, если преподавать в ОТУС раз в неделю, то едва ли выйдет $5000 за год. Чаще раза в неделю можно только если рассказывать одно и то же по кругу, но я так делать принципиально не хочу. Та же история с Solvery: там топовые ребята зарабатывают около 6000р в час. Опять же наберется от силы $5000 если не задолбаешься. В преподавание и менторство надо ввязываться ради интереса.
Если пытаться набрать $12к помогая в поиске работы, то, по моим оценкам, надо будет провести за год 40 человек. Просто нереально.
Если запустить сайд-проект с месячной подпиской за $20, который купят 100 клиентов, то набирается $24000. Выглядит как успех, но если прикинуть матождание доходов от такого предприятия, то есть домножить на вероятность сделать и найти 100 клиентов, то получается $24000*10% = $2400. 10% это еще очень оптимистично, если оценивать мой прошлый трек рекорд. Я своего рода бизнесмен: однажды сделал сайт на фрилансе и меня кинули, в другой раз сделал мод для игры и заработал $100 и еще как-то раз сделал задачку на upwork, но не смог вывести заработанные $40, был забанен Paypal и забил.
Минимальные расчеты быстро снимают розовые очки. Мой джун на днях спросил меня: почему ты еще не забутстрапишь дома проект и не слезешь с иглы капитализма? Я раньше и сам задавался этим вопросом. Казалось, что я такой особенный молодец. Все эти там распределения доходов и количества провалов стартапов ко мне не относятся, я ведь не такой как все. Сейчас что-то замучу, у меня обязательно все получится и результат превзойдет ожидания. Но едва начинаешь представлять как же именно оно должно получится и становится ясно, что ожидаемый доход от работы гораздо выше почти любого сайдхастла. Кто бы мог подумать! Так оказывается все работают на работе не потому, что дураки, вау.
И ведь с каждым годом поднимать доход на 20% будет сложнее.
Чтобы слезть с иглы “от зарплаты до зарплаты” или хотя бы ослабить ее давление надо сделать что-то нетривиальное. По крайней мере легких путей не будет. Мой текущий план: продолжать преподавать и делать прочие вещи ради интереса, искать хороший сайд-проект, работать на рейзы и держать нос по ветру.
👍38🔥9🤔1
Forwarded from Никита и его пшд
На неделе накидал каких-то мыслей в пост: https://telegra.ph/The-Dark-Side-of-PhD-Abroad-12-03, получилось довольно абстрактно, но в целом главную идею я вроде выразил.
Telegraph
The Dark Side of PhD Abroad
Disclaimer: да, я употребляю в своей речи довольно много английских слов, потому что мне так проще выражать свои мысли. Don't get too overwhelmed by this and chill. Как я уже обещал это сделать в одном из своих последних постов в моем канале, в этом тексте…
🔥9
# Of all possible timelines, we live in the one of boring AI
Вот, что мне сегодня сказал мой ментор когда мы обсуждали ChatGPT.
Мы оба скептики относительно AGI и оба думали, что для настоящего ИИ нужна какая-то особая звездная пыль. Symbolic reasoning, causual modelling или что-то еще. Что у интеллекта есть нечто за пределами паттерн-метчинга. Теперь уверенность сдвинулась в сторону того, что звездная пыль интеллекта это просто emergent behavior. Паттерн-метчишь достаточно и оно появляется. Я не верил в scaling laws, то есть в то, что для ИИ достаточно лишь накидывать в нейронку побольше параметров и данных, но модели вышедшие в этом году сдвинули мои убеждения.
Метакулус прогнозирует появление Weak AGI в 2027 году. Эксперты как правило дают оценку на пять-десять лет попозже. В любом случае мы увидим слабый ИИ в течение нашей жизни. Скорее всего полноценный ИИ тоже. Мы вероятно живем в эпоху самого грандиозного открытия в истории. Я спросил Joao: стоит ли задаться целью и попасть в OpenAI, Deepmind или Stability, чтобы увидеть историю своими глазами?
Он рассказал про то, что знает об этих компаниях от своих знакомых. Boring AI означает, что не будет никакого момента эврики. Не будет профессора с белой бородой, который закричит: “Вот он, ключ к интеллекту и сознанию!” Просто grad student descent: сотни ученых проводят маленькие эксерименты, смотрят как график ползет по тензорборду, следят как ошибка падает на сотые доли процентов. Однажды в твиттере напишут, что появился ИИ. Вклад каждого отдельного ученого пренебрежительно мал. В итоге знакомые Joao из этих компаний в основном говорят про свою зарплату и выращивают так называемый “Google belly”. Многие из них долго карабкались, чтобы попасть туда, а потом сдувались. Расслабляешься, начинаешь прицепляться к заведомо успешным проектам, становишься 5-ым в публикации из 10 авторов. Потому что есть парочка рок-звезд, которые все тянут, а есть все остальные. Вывод: потрогать ИИ из первых рук вероятно не сильно более впечатляюще, чем потрогать его как один из первых пользователей.
Теперь вопрос: как планировать свою жизнь с учетом появления AGI? Скупать стоки Nvidia или, может быть, складировать тушенку и патроны? Приглашаю обсуждать научную фантастику в комментариях.
P.S. Стоило идти в Planet Farms хотя бы за тем, чтобы было с кем обсудить такие вещи.
Вот, что мне сегодня сказал мой ментор когда мы обсуждали ChatGPT.
Мы оба скептики относительно AGI и оба думали, что для настоящего ИИ нужна какая-то особая звездная пыль. Symbolic reasoning, causual modelling или что-то еще. Что у интеллекта есть нечто за пределами паттерн-метчинга. Теперь уверенность сдвинулась в сторону того, что звездная пыль интеллекта это просто emergent behavior. Паттерн-метчишь достаточно и оно появляется. Я не верил в scaling laws, то есть в то, что для ИИ достаточно лишь накидывать в нейронку побольше параметров и данных, но модели вышедшие в этом году сдвинули мои убеждения.
Метакулус прогнозирует появление Weak AGI в 2027 году. Эксперты как правило дают оценку на пять-десять лет попозже. В любом случае мы увидим слабый ИИ в течение нашей жизни. Скорее всего полноценный ИИ тоже. Мы вероятно живем в эпоху самого грандиозного открытия в истории. Я спросил Joao: стоит ли задаться целью и попасть в OpenAI, Deepmind или Stability, чтобы увидеть историю своими глазами?
Он рассказал про то, что знает об этих компаниях от своих знакомых. Boring AI означает, что не будет никакого момента эврики. Не будет профессора с белой бородой, который закричит: “Вот он, ключ к интеллекту и сознанию!” Просто grad student descent: сотни ученых проводят маленькие эксерименты, смотрят как график ползет по тензорборду, следят как ошибка падает на сотые доли процентов. Однажды в твиттере напишут, что появился ИИ. Вклад каждого отдельного ученого пренебрежительно мал. В итоге знакомые Joao из этих компаний в основном говорят про свою зарплату и выращивают так называемый “Google belly”. Многие из них долго карабкались, чтобы попасть туда, а потом сдувались. Расслабляешься, начинаешь прицепляться к заведомо успешным проектам, становишься 5-ым в публикации из 10 авторов. Потому что есть парочка рок-звезд, которые все тянут, а есть все остальные. Вывод: потрогать ИИ из первых рук вероятно не сильно более впечатляюще, чем потрогать его как один из первых пользователей.
Теперь вопрос: как планировать свою жизнь с учетом появления AGI? Скупать стоки Nvidia или, может быть, складировать тушенку и патроны? Приглашаю обсуждать научную фантастику в комментариях.
P.S. Стоило идти в Planet Farms хотя бы за тем, чтобы было с кем обсудить такие вещи.
👍27🔥5
Борис опять pinned «# Of all possible timelines, we live in the one of boring AI Вот, что мне сегодня сказал мой ментор когда мы обсуждали ChatGPT. Мы оба скептики относительно AGI и оба думали, что для настоящего ИИ нужна какая-то особая звездная пыль. Symbolic reasoning…»
Разбирался в апскейле изображений, bilinear и bicubic интерполяции, aliasing.
Процесс апскейла изображений на пальцах такой:
1. Создаем новое изображение большего размера, добавляя "пустые” пиксели между пикселями изначальной сетки.
2. Применяем интерполяцию, чтобы определить значения “пустых" пикселей на основе значений соседних пикселей изначального изображения.
* Простейший вариант: nearest neighbor. Берем значение ближайшего пикселя.
* Поумнее: bilinear. Значение "пустого" пикселя расчитывается как взвешенная сумма ближайших четырех исходных пикселей. Веса зависят от расстояния: чем ближе пиксель, тем больше он влияет.
* Еще умнее: bicubic. Принцип как у billinear, но используюстя пиксели в окне 16х16 и уравнение посложнее. Соответственно результат более гладкий.
3. Применям алгоритм anti-aliasing, чтобы убрать артефакты апскейла. Например, "лесенки" на диагональных линиях, которые можно наблюдать, если повращать какой-нибудь контур в пейнте.
Unfun fact: по умолчанию torch.nn.functional.interpolate использует nearest-neighbor интерполяцию. Самую быструю и самую плохую по качеству.
Unfun fact 2: из Python библиотек для обработки изображений только Pillow делает интерполяцию нормально. По умолчанию использует bicubic.
Вывод: при ресайзе изображений для CV стоит обращать внимание на то, каким образом происходит интерполяция. Если вы по-разному ресайзите трейн и тест, это может внести в данные сдвиг распределения. Особенно опасно, если при обучении вы делаете ресайз одной библиотекой, а в продакшне другой.
Как правило можно использовать bilinear/bicubic из Pillow и не волноваться.
Хорошие статьи:
* https://zuru.tech/blog/the-dangers-behind-image-resizing
* https://www.cambridgeincolour.com/tutorials/image-interpolation.htm
Процесс апскейла изображений на пальцах такой:
1. Создаем новое изображение большего размера, добавляя "пустые” пиксели между пикселями изначальной сетки.
2. Применяем интерполяцию, чтобы определить значения “пустых" пикселей на основе значений соседних пикселей изначального изображения.
* Простейший вариант: nearest neighbor. Берем значение ближайшего пикселя.
* Поумнее: bilinear. Значение "пустого" пикселя расчитывается как взвешенная сумма ближайших четырех исходных пикселей. Веса зависят от расстояния: чем ближе пиксель, тем больше он влияет.
* Еще умнее: bicubic. Принцип как у billinear, но используюстя пиксели в окне 16х16 и уравнение посложнее. Соответственно результат более гладкий.
3. Применям алгоритм anti-aliasing, чтобы убрать артефакты апскейла. Например, "лесенки" на диагональных линиях, которые можно наблюдать, если повращать какой-нибудь контур в пейнте.
Unfun fact: по умолчанию torch.nn.functional.interpolate использует nearest-neighbor интерполяцию. Самую быструю и самую плохую по качеству.
Unfun fact 2: из Python библиотек для обработки изображений только Pillow делает интерполяцию нормально. По умолчанию использует bicubic.
Вывод: при ресайзе изображений для CV стоит обращать внимание на то, каким образом происходит интерполяция. Если вы по-разному ресайзите трейн и тест, это может внести в данные сдвиг распределения. Особенно опасно, если при обучении вы делаете ресайз одной библиотекой, а в продакшне другой.
Как правило можно использовать bilinear/bicubic из Pillow и не волноваться.
Хорошие статьи:
* https://zuru.tech/blog/the-dangers-behind-image-resizing
* https://www.cambridgeincolour.com/tutorials/image-interpolation.htm
❤8👍6🔥5🤔1
Unfun fact 3: there is a Tensorflow
https://medium.com/hackernoon/how-tensorflows-tf-image-resize-stole-60-days-of-my-life-aba5eb093f35
https://medium.com/hackernoon/how-tensorflows-tf-image-resize-stole-60-days-of-my-life-aba5eb093f35
Medium
How Tensorflow’s tf.image.resize stole 60 days of my life
That’s a short warning to all Tensorflow users working with visual content. Short notice: don’t use any tf.image.resize functions!
😁6❤1👍1
#лабораторный_журнал
Притча про пользу юнит-тестов.
У джуна была задачка. В БД лежат сущности А и Б, у обеих есть координата Х. Надо сделать API ручку, которая принимает на вход сущность А и возвращает ближайшую к ней сущность Б.
Джун сделал. Для проверки написал огромный скрипт, который скачивает все А из прода, подает в эндпоинт, сохраняет полученные Б, потом делает сопоставление отдельным SQL запросом в БД, сравнивает результаты. Приходит ко мне, говорит: двадцать пять тысяч сопоставилось верно, а четыре тысячи неверно и я не понимаю почему. Как искал проблему: смотрел на координаты, которые неправильно сопоставились, искал закономерности. Не нашел.
Я говорю: Господь дал нам грешным юнит-тесты, используй их! Делаешь тест, где для каждой Б создаешь в той же точке одну А. Запускаешь сопоставлялку. Каждой А должна сопоставится одна конкретная Б. Проверяешь, что все, что должно было сопоставиться, сопоставилось. Джун спрашивает: какой смысл проверять, что то, что я уже сопоставил, сопоставилось верно?
А вот какой. В твоем скрипте может быть проблема в трех местах: при загрузке данных из прода, в твоем коде сопоставления, в коде сопоставления через SQL запрос. В юнит-тесте ты фиксируешь входы и ожидаемые выходы: проблема может быть только в коде сопоставления. Никаких движущихся частей. И не надо перебирать тысячи примеров, чтобы поймать ошибку.
Джун мне не поверил, посмотрел на меня как на дурного, но согласился попробовать. Позже пишет: написал тест и сразу нашел проблему. Оказалось, что float координата на входе тихо конвертилась в int, поэтому иногда сущности сопоставлялись неверно.
В мире стало на одного просветленного больше.
Притча про пользу юнит-тестов.
У джуна была задачка. В БД лежат сущности А и Б, у обеих есть координата Х. Надо сделать API ручку, которая принимает на вход сущность А и возвращает ближайшую к ней сущность Б.
Джун сделал. Для проверки написал огромный скрипт, который скачивает все А из прода, подает в эндпоинт, сохраняет полученные Б, потом делает сопоставление отдельным SQL запросом в БД, сравнивает результаты. Приходит ко мне, говорит: двадцать пять тысяч сопоставилось верно, а четыре тысячи неверно и я не понимаю почему. Как искал проблему: смотрел на координаты, которые неправильно сопоставились, искал закономерности. Не нашел.
Я говорю: Господь дал нам грешным юнит-тесты, используй их! Делаешь тест, где для каждой Б создаешь в той же точке одну А. Запускаешь сопоставлялку. Каждой А должна сопоставится одна конкретная Б. Проверяешь, что все, что должно было сопоставиться, сопоставилось. Джун спрашивает: какой смысл проверять, что то, что я уже сопоставил, сопоставилось верно?
А вот какой. В твоем скрипте может быть проблема в трех местах: при загрузке данных из прода, в твоем коде сопоставления, в коде сопоставления через SQL запрос. В юнит-тесте ты фиксируешь входы и ожидаемые выходы: проблема может быть только в коде сопоставления. Никаких движущихся частей. И не надо перебирать тысячи примеров, чтобы поймать ошибку.
Джун мне не поверил, посмотрел на меня как на дурного, но согласился попробовать. Позже пишет: написал тест и сразу нашел проблему. Оказалось, что float координата на входе тихо конвертилась в int, поэтому иногда сущности сопоставлялись неверно.
В мире стало на одного просветленного больше.
👍55😁6🔥4👎1