• Грядущий релиз Linux 5.8: миллион строк нового кода и 14 000 изменений
    0
    Вообще-то вектор можно программно растеризовать, если нативный фреймворк не поддерживает вектор. А то опа! — фреймворк не поддерживает вектор — поэтому мы будем пихать иконки под 99% разрешений (и все равно найдется 1% разрешений, в которых это не будет работать). «Как тебе такое, Илон Маск?» (с)
  • Андрей Зарецкий, Александр Труханов (продолжение): «У нас не было имени, но была наглость»
    0
    Кстати, я с удивлением узнал от коллеги, что когда у него появился «Поиск», то он пошел в библиотеку (городка Конотоп!) и нашел там полную документацию на русском.
  • Вы делаете это неправильно: расчет глубины
    –2
    Ок, но приборы все-таки шумят и всегда можно заложить некоторую неопределенность, связанную с внешними неучтенными/неизвестными факторами.
  • Вы делаете это неправильно: расчет глубины
    0
    Шум измерений. На выходе точность получается выше, чем у каждого из измерений, взятых по отдельности. Это очень хороший инструмент инженера и его не так сложно освоить, как кажется, когда смотришь в теорию.

    Почитать можно здесь How a Kalman filter works in pictures
  • Вы делаете это неправильно: расчет глубины
    0
    А еще глубину можно измерить несколькими девайсами и объединить измерения фильтром Кальмана.
  • Python (+numba) быстрее Си — серьёзно?! Часть 2. Практика
    0
    Одна из базовых проблем быстродействия Питона кроется в невозможности файнтюнить выделения памяти. Питон все время выделяет маленькие кусочки памяти и это сразу ложится грузом на быстродействие.

    Особенно ярко это проявляется, когда пытаешься распарсить какой-нибудь XML. Для каждого нода, для каждого аттрибута будет выделение памяти даже в том случае, если 99% этих данных ты даже не будешь считывать. Как позорное напоминание, есть С++ библиотека RapidXML++ с кастомным менеджером памяти, к которому Питон даже близко не может подойти по быстродействию.

    Однажды молодые инженеры делали робота и у них был итеративный модуль «смягчения» пути: по грубым точкам пути надо было сделать более плавный путь, вставив промежуточные точки, и при этом уложиться в две миллисекунды. Проблема решилась написанием кастомного модуля на Cython только после того, как убрали выделение памяти с кучи (вся память выделялась на стеке).
  • Как я не стал специалистом по машинному обучению
    +1
    Да, с нулевым. Именно так я начал работать в области Computer Vision — изучил небольшую тему, поискал задачу, решил, изучил следующую тему и т.д. Точно такая же история с нейросетями — предложил клиенту экспериментальное решение — получилось, уверенность в своих силах повысилась, работаю дальше. Семья с двумя детьми прилагается.
  • Увеличь это! Современное увеличение разрешения
    0
    Просто у камеры видеонаблюдения в подъезде разрешение совершенно случайно оказалось как у телескопа Хаббл
    Кстати говоря, у телескопа Хаббл довольно долго разрешение было 640х480 (или около того), поэтому сравнение неуместно =)
  • Что не так с Raspberry Pi
    0
    Сейчас автор ответит, что у него там нейросеть в реальном времени распознает снимки камеры и вам станет стыдно!
  • Senior Engineer в поисках работы. Как я прошел 20 собеседований с HR и что я об этом думаю
    +1
    В Украине говорят «те самые $5k» подразумевая общепринятый потолок для синьйоров разработчиков. На фрилансе, разумеется, можно зарабатывать и больше. Особенно в сфере data science и computer vision.
  • Самодельная лазерная установка «Lightsaber»: как это было. Часть 2
    0
    Конечно! Что же может пойти не так с такой конфигурацией?
  • Как стать датасайнтистом, если тебе за 40 и ты не программист
    0
    Для датасаентиста при 50 долларах в час можно получать и больше 8000 в месяц, ведь можно пойти на перекус не выключая таймтрекер, пока комп тренирует модель. Это программисту надо беспокоиться — включил таймер, выключил, в итоге из восьмичасового дня получается шестичасовой.
  • Python: как уменьшить расход памяти вдвое, добавив всего одну строчку кода?
    0
    Немного смешно читать про оптимизацию Python программ средствами самого Python. 1000 объектов теперь занимают не 100МБ, а 50МБ. Вау! При том, что на C/C++ эти же 1000 объектов уместяться в 64к.

    А вообще, писать ускоряющие С/С++/Cython библиотеки для Python — это мой хлеб. И первое, что дает прирост в десятки, а иногда и сотни раз — отказ от использования питоновских объектов и питоновского же менеджера памяти. Больше всего мне нравится, когда в конце разработки клиент замеряет скорость работы и у него округляются глаза. Вычисления зависели, скажем, как O(n) и клиент начинал уже придумывать, как ему уменьшить «n», чтобы вложиться во временной интервал. А после ускорения оказывалось, что даже самый большой «n» клиента вписывается с запасом в одну миллисекунду.

    Python хорош для прототипирования. Для Computer Vision или Machine Learning хорошо пробовать много разных вещей и Python тут раскрывается во всей красе. Но если надо запилить свой математический алгоритм, то это неподходящий инструмент.
  • Как Vim украл моё сердце
    0
    У меня так произошла революция, когда я перешел с винды на стационарном компе на легкий MacBook Air. С макбуковским тачпадом мышка оказалась не нужна. POSIX-friendly операционная система. Да, сейчас посматриваю на линукс (нативный докер, huge pages и все такое), но сомневаюсь.
  • Нейросеть для разработчиков C++
    +3
    Cравнение с «PyTorch» на примере MNIST:

    PyTorch: Accuracy: 98%, Time: 140 sec
    SkyNet: Accuracy: 95%, Time: 150 sec

    Т.е. работает хуже и медленнее?

  • Amazon сдался и повысил зарплаты сотрудникам
    +2
    Так а что, это работа мечты? Надо какое-то образование, чтобы получать эти $15 в час в США? Человек не хочет учиться, зачем ему больше возможностей по самореализации?
  • Apple блокирует возможность независимого ремонта новых моделей MacBook
    0
    Аналогично, коллега =) Срочно ищем кривую Даннинга-Крюгера.
  • Кривые Безье и Пикассо
    0
    Недавно разбирался с кривыми Безье для организации плавного движения манипулятора робота. Чем более плавное движение, тем большую скорость он может развить без нарушения физических ограничений движения => сможет сделать больше операций => больше профит при коммерческом использовании.

    Обнаружил, что кривую Безье лучше сэмплировать не равномерным приростом аргумента, а по первой производной (= равномерно по интегралу второй производной).

    Еще обнаружил занимательное исследование, что длина кривой Безье ограничена длиной задающих ее точек, поэтому ее длину можно найти итеративно с любой точностью, разбивая ее пополам на каждой итерации.
  • Firecore — нескучная игра на AVR
    0
    Поиск пересечения прямоугольников можно сделать еще компактнее и эффективнее: https://gamedev.ru/terms/AABB

    Для кривых Безье для максимальной плавности вам надо искать аргумент, который даст следующий прирост по x/y, для этого вы можете взять первую производную — она проще для вычисления.
  • Apple блокирует возможность независимого ремонта новых моделей MacBook
    0
    Это была утечка документации Apple, но на самом деле уже проверено, что пока что новые ноуты Apple ремонтнопригодны сторонними производителями. Конечно, нет гарантии, что в будущем с очередным апдейтом операционной системы не активируется запрет на ремонт.
  • Apple блокирует возможность независимого ремонта новых моделей MacBook
    0
    Я вам подскажу, какие дополнительные жесты действительно удобны:

    1. Переключение между тремя полноэкранными приложениями свифтом:
    Firefox — Sublime — iTerm

    2. Три пальца на неизвестном английском слове — всплывает ABBY словарь с переводом
  • Хватит подозревать разрабов в самозванстве. Научитесь лучше собеседовать
    0
    Я понимаю вашу боль. У меня ощущение, что большая часть молодых разработчиков обучается по stackoverflow, а не по книгам. В итоге смотришь в task manager, а там приложение Upwork стабильно съедает 30-40% CPU. И это чат + трекер времени! С каких пор трекер времени требует столько ресурсов? Это если умножить на количество пользователей Upwork, то можно посчитать, сколько электроэнергии/угля сжигается от лени разработчиков писать эффективный код. Видимо, для получения меньшего числа в массиве сначала сортируется весь массив, потом берется первый элемент, не иначе.
  • Хватит подозревать разрабов в самозванстве. Научитесь лучше собеседовать
    0
    What Every Programmer Should Know About Memory
    What Every Programmer Should Know About
    Floating-Point Arithmetic


    Держите и не благодарите. Когда это знаешь, то иногда получаешь х10 производительности, просто переставив порядок операций. С плавающей точкой аналогично — иногда, решая нелинейные уравнения, результат надо нормализовать по заданному эпсилону, чтобы случайно не взять sqrt(-1e-18), когда должен быть sqrt(0), и не получить nan во всех последующих результатах.
  • Губозакаточная машинка для этикеток — разворачиваем цилиндрическое искажение программно
    0
    NumPy удобен, но на каждую операцию он создает новый объект в памяти, даже если записать `a[:] = b + c`. Это приводит к поразительному количеству аллокаций/деаллокаций там, где на плюсах будет прямая работа со структурами в стеке. Это хорошо, если задачу можно векторизовать и привести к операциям на матрицах большого размера, и то — на С++ при грамотном использовании SIMD инструкций и грамотном использовании кэша получится быстрее. Но иногда процесс итеративный и нелинейный, для каждой строки матрицы данных может понадобится разное количество итераций, в итоге Python вязнет, как в болоте.
  • Губозакаточная машинка для этикеток — разворачиваем цилиндрическое искажение программно
    0
    Дело в том, что здесь у нас строгая математическая модель цилиндра и строгая математическая модель проекции цилиндра на плоскость. Зачем обучать нейронную сеть, тратить ресурсы, память, если вся необходимая информация у нас уже есть? Грубо говоря, массив надо просто отсортировать. А для машинного обучения, чтобы модель обнаружила нужные свертки, надо еще предоставить миллион изображений под разными углами, и все ради чего, ради нескольких формул, которым она обучится, но которые, при этом, были известны априори?

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

    Что касается производительности Python в задачах CV, то если дергать только стандартные методы, то все ок. В компьютерном зрении приходится много экспериментировать, поэтому Питон здесь хорошо работает. Но проблема Питона в том, что он осуществляет постоянную аллокацию/деаллокацию маленьких объектов, поэтому если надо делать какие-то низкоуровневые микрооперации, то Питон сильно уступает C/C++. Иногда в сотни раз! Попробуйте реализовать преобразование Хафа, чтобы это было быстро на Питоне.
  • Губозакаточная машинка для этикеток — разворачиваем цилиндрическое искажение программно
    0
    Машинное обучение не нужно там, где можно написать алгоритм. Вы же не будете писать нейронку, которая сортирует массив?

    Получение градиента изображения — хорошо. Нахождение линий цилиндра — тоже, хотя надо написать свое преобразование Хафа, поскольку в имплементации OpenCV есть два дефекта: он не взвешивает точки по силе градиента (т.е. для него пиксели бинарны — или ноль, или не ноль) и не возвращает аккумулятор. Имея аккумулятор можно, например, брать в анализ только самые сильные линии. Можно размывать (не забывая про wrap around) по rho, чтобы получить самые сильные толстые линии. Правда, на Питоне его не напишешь, слишком медленный язык, разве что на Cython.

    Как альтернатива, можно использовать LSD детектор (в том же OpenCV), он быстрый и хорошо находит фрагменты линии. Далее их можно соединять и получать длинные отрезки.

    Следующий момент — поскольку у нас уже есть две линии, то можно их преобразовать, чтобы сделать их параллельными. Это в том числе упростит поиск эллипсов.

    Еще вариант — собрать точки градиента и рассмотреть задачу как задачу оптимизации модели цилиндра под перспективными искажениями, как это делается в фотограмметрии.

    А вообще классная задача, такие приятно решать.
  • Недостатки фриланса. Личный опыт
    0
    Такие задачи появляются с частотой где-то раз в два дня на Upwork.
    Средние скиллы — линейная алгебра/матстатистика/обработка изображений (базовые курсы), 3 года программирования на C++ или Python, несколько книг по компьютерному зрению.
    Можно начинать с простых заданий, потом переходить на более сложные. Типичные задания ограничены только фантазией =)
    Самые простые: скрипт, повторяющий операции фотошопа; считывание показаний фиксированного прибора по изображению с камеры; поиск и чтение определенных регионов на скриншотах.
  • Прибор для измерения СО2
    0
    Видно-видно, даже не сомневайтесь. Выравнивания не соблюдаются, строки не режутся, блоки скачут, как хотят. У такого кода нет ни эстетической, ни обучающей составляющей.
  • Аппарат для выдачи печенья «Кукинатор 3000»
    0
    А в винде можно запустить хром в докер контейнере с GUI так, чтобы он был неотличим от других десктопных приложений, но при этом не мог жрать больше одного процессора и 512 Мб оперативки? Нет? Ну ладно.
  • Недостатки фриланса. Личный опыт
    0
    Гарантия на Upwork еще та байда. Если вдруг возникает конфликт и не удается договориться, то за суд третьей стороной и клиент, и заказчик должны заплатить безвозвратные $300. Т.е. если заказ, скажем, в $500, то даже если суд будет в твою пользу, то выйграешь ты от него $200. С другой стороны, если ты заплатил $300 за суд, а заказчик — нет, то ты выигрываешь конфликт в любом случае, и тебе возвращаются и $300, и $500. Такая вот проверка серьезности намерений.

    Раньше была еще хорошая биржа, VWork, пока ее не купил freelancer.com. Так вот там если выигрываешь суд (бесплатный), то выигрывшая сторона имеет право поставить отзыв хоть в единицу, а проигравшая не может оставить отзыв вообще.
  • Недостатки фриланса. Личный опыт
    0
    При долгосрочных заказчиках новую работу искать не надо. Да, можно позволить себе месяц отдохнуть.
  • Недостатки фриланса. Личный опыт
    0
    Фрилансер не обязательно должен «постоянно искать новый проект». Долгосрочные заказчики — нередкое явление среди фрилансеров. Иногда заказчик сразу сообщает, что ищет долгое сотрудичество, иногда так получается само собой, что одна работа тянет за собой другую.
  • Недостатки фриланса. Личный опыт
    0
    WordPress, PHP и натягивание дизайнов на шаблончики всегда и в любом количестве, но время от времени попадаются крутые стартаперы, софт для роботов и долгосрочные заказы на R&D.
  • Недостатки фриланса. Личный опыт
    +1
    останавливает от фриланса именно понимание, что рост как специалиста закончится в целом
    Почему-то многие повторяют эту фразу, как само собой разумеющееся, хотя я не понимаю, как можно расти как специалист имея постоянный поток задач в офисе. Когда учить новые вещи, после рабочего дня и в выходные, что ли?

    Я работал в офисе во многих областях — embedded, gamedev, mobile development, и в каждой из них рост в первые полгода-год, дальше — рутина на изученном стеке технологий своего проекта.

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

    Забудьте этот штамп — в мире слишком много интересных вещей в области IT, чтобы рост как специалиста остановился. По крайней мере фриланс уж точно будет последней причиной.
  • Недостатки фриланса. Личный опыт
    0
    Был похожий случай, когда мне надоело брать заказы — стал повышать цену, и случилось невероятное — рейт поднялся в два раза! По общей сумме я стал получать на 10% меньше из-за уменьшения количества заказов, но по времени выйгрыш в два раза.
  • Недостатки фриланса. Личный опыт
    0
    Вы правильно говорите — авторские права на проекты, за которые было заплачено, принадлежат заказчику. Хотя это подразумевается законодательством, на Upwork, например, еще при регистрации подписывается публичный договор, где это четко прописано.
  • Недостатки фриланса. Личный опыт
    0
    В компьютерном зрении найти 40-50/час при средних скиллах не так сложно.
  • Светодиодные лампы в Японии
    0
    Это вы еще не видели, как возле одного монастыря в Японии все камни в ручье скованы друг с другом цепью! Вроде как — чтобы не смещались вдоль ручья (а то безобразие!)
  • Как нам удалось прочитать рукопись, найденную в 80-х возле третьего крематория в Аушвице-Биркенау
    0
    Теоретически можно было бы перебрать разные варианты цвета чернил/бумаги до получения наилучшего контраста. Представляю себе программу, которая перебирает варианты и оценивает контраст автоматически.
  • Как нам удалось прочитать рукопись, найденную в 80-х возле третьего крематория в Аушвице-Биркенау
    0
    Какой хороший плагин! Там еще очень интересные примеры на сайте.