Image processing
162 subscribers
13 photos
3 videos
25 links
Некоторые мысли об обработке изображений и computer vision

По вопросам сотрудничества / tech talk / статей / выступлений - обращаться к

https://t.iss.one/pavelkatunin
Download Telegram
🧩 Говорят, что научили робота собирать незнакомые вещи с успехом в 86% случаев. Для обучения придумали остроумную вещь: сначала заставили робота разбирать вещи, что довольно просто реализовать (детали просто кладутся в случайные места), а потом обучали на прокурученных назад записях.

https://www.youtube.com/watch?v=O8l4Kn-j-5M
Тут подогнали новый state of the art алгоритм сегментации объектов на изображении:

https://arxiv.org/pdf/2001.00309.pdf
🏛 Как же детектировали объекты на изображениях древние? (70е - 80е)

🏢 Шаблоном по скользящему окну.

1. Выделяем границы, например, детектором Canny. (Композиция гауссовой свертки и дифференцирования + пороговая функция + некоторый способ сохранения связности линий)
2. Берем наш шаблон в виде какого-то контура и начинаем идти по изображению скользящим окном.
3. Используем Distance Transform, чтобы ускорить следующую операцию.
4. Используем одну из метрик: Chamfer Distance, Hausdorff Distance. (Суммируем или вычисляем максимум расстояния от нашего шаблона до выделенных краев на изображении)

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

⚙️ Например, вам нужно определять правильной ли формы у вас детали на конвейере в какой-то момент.
Конечно, у себя на заводе вы часто можете фиксировать освещение, фон, да и правильные детали всегда одной формы.

✈️ 🛰 🗺 Или например их можно использовать для более интересных, военных целей.
Представьте себе снимок со спутника, нормаль поверхности практически всегда смотрит в камеру, количество разновидностей,
например, самолетов не такое уж и большое. Размер одинаковых объектов не меняется из-за одинаковой высоты.
🤖 Kornia и tensorflow.image - альтернативы для OpenCV с фокусом на работе с GPU

Kornia под собой использует PyTorch, а tensorflow.image соответственно tensorflow.

В них реализованы основные классические методы обработки изображений и еще их удобно встраивать в пайплайны ML.

https://kornia.github.io/
https://www.tensorflow.org/api_docs/python/tf/image
◀️ ︎ От уголков, кружков и пятен к AR

👁Как работают алгоритмы фотограмметрии и позиционирования камеры в AR?

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

Именно по этому все AR приложения обычно просят немного поводить камерой туда сюда для определения своего положения.

Чтобы понять, как изменился угол обзора, нам нужно найти точки, соответствующие одной и той же точке в пространстве на двух изображениях. Найти самые характерные точки, желательно чтобы они были инвариантны к масштабу, освещению и тд.
Если мы найдем много таких точек, то мы сможем компенсировать то, что некоторые из них потеряются или перестанут быть инвариантаными.
После сопоставления этих характерных точек, можно попробовать понять, какое геометрическое преобразование привело к такому изменению расположения характерных точек, и даже понять какую трехмерную форму имеют объекты. + конечно же нам может помочь акселерометр.

🧠 Что мы можем считать характерными точками?

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

⁃ Первое, что мы можем рассмотреть - это углы на изображении. Еще бы хорошо нам уметь определять, что эти углы примерно равны, и примерно равны в масштабе.
⁃ Вторыми характерными признаками могут оказаться круги разного размера!
⁃ И наконец иногда могут помочь характерные пятна.

Алгоритмы для определения углов:
⁃ Harris (Frostner)
⁃ Harris-Laplace

Круги:
⁃ LoG
⁃ DoG

Пятна:
⁃ IBR
⁃ MSER

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

https://news.met.police.uk/news/met-begins-operational-use-of-live-facial-recognition-lfr-technology-392451
Boston Dynamics опубликовала свою SDK для управления роботом Spot. Там можно получать карты глубин со стереокамер на роботе, данные о поверхности и тд.

Надеюсь рост популярности этого робота даст нам ещё очень много датасетов с использованием их сенсоров. Ведь они могут снимать и сохранять данные практически постоянно.


https://nplus1.ru/news/2020/01/24/spot-sdk
Задача:

На видео появляются подобные артефакты, см. изображение. Внутри красных окружностей.

Можете ли вы объяснить природу их появления?

#задача
Участвую в биологическо / computer vision / робото проекте в University of Sheffield.

Вот видео системы автоматической фокусировки микроскопа.
https://twitter.com/CalcNeuro/status/1222118221614059520

Подписывайтесь на твиттер, будем постить всякое интересное:
https://twitter.com/CalcNeuro

Блог проекта:
https://neurocalc.blog/
📔Обзор журнала Computer Vision News - Январь 2020

https://www.rsipvision.com/ComputerVisionNews-2020January/

🔦 Стр. 4. Статья топящая за PyTorch.
По мнению автора эволюция прошла так:
TensorFlow -> Keras -> PyTorch (как самый крутой)
Показывается пример решения задачи стилизации изображения, где подгружается предтренированная VGG нейронка.
Демонстрируется как просто на PyTorch делегировать какие-то вычисления GPU.

🔬 Стр. 8. Небольшой рассказ про чувака по имени Bernhard Kainz - который преподает в Imperial College London.
Он специализируется на задачах связанных с медицинскими снимками.
Ученый вкладывает свои надежды в domain adaptation method for feature disentanglement.
Вкратце - это возможность адаптировать одни модели, хорошо работающие с одной предметной областью к другой.
Например, модель которая работает с МРТ адаптируется для работы с КТ.
И это не только transfer learning который первым приходит на ум. Для этого используются CycleGAN и тд.
Быстрый гуглинг дал пару статей на эту тему:

https://arxiv.org/pdf/1907.13590.pdf
https://arxiv.org/pdf/1904.12347.pdf

🕸 Стр. 14. Обзор статьи On Exact Computation with an Infinitely Wide Neural Net.
Теоретическая статья, котороя доводит идею DL до крайности.
Что будет если глубина нейронной сети будет стремиться к бесконечности?
Для моделирования такой сети используют Neural tangent kernel (NTK)
https://rajatvd.github.io/NTK/

Вот сама оригинальная статья. Рекомендую, читать интересно.

https://arxiv.org/pdf/1904.11955.pdf

🏅Стр. 18. Освещаются актуальные сейчас прикладные задачи по которым объявлены конкурсы:
⁃ EndoVis 2019
⁃ Depth estimation from stereo camera
⁃ Surgical Workflow analysis and Skill Assessment
⁃ Recognizing families in the wild

https://www.rsipvision.com/challenges-ai-solutions-endoscopy/
https://web.northeastern.edu/smilelab/rfiw2020/

Дерзайте!

#computervisionnews #обзор #nntheory #pytorch #challenge
🎻 Пара ресурсов по Classical Computer Vision (не ML)

Многие задачи мы можем решать, не подходя к ним статистически, а подходя к ним эвристически.

Такой подход к решению CV задач предшествовал бурному развитию ML и DL, и обычно не включает в себя этапы обучения модели.

Так же, в курсы типа “Введение в компьютерное зрение” входят такие критические понятия как:
⁃ Фурье анализ
⁃ Модели представления цветов
⁃ Физика света и тд

Мое субъективное мнение, что путь обучения CV должен быть таким:

0️⃣ Математика (О ней мы говорили в одном из предыдущих постов) ->
1️⃣ Классический CV ->
2️⃣ ML + DL

Пара ресурсов:

Введение в компьютерное зрение. Курс лекций от Антона Конушина.
Ставим на скорость воспроизведение 1.25x и изучаем.

https://www.lektorium.tv/course/22847

Книга A practical introduction to Computer Vision with OpenCV.

https://www.amazon.co.uk/Practical-Introduction-Computer-Imaging-Technology/dp/1118848454

Можно параллельно и смотреть курс и читать книгу.

#education #courses #classicalcv #cv #opencv
This media is not supported in your browser
VIEW IN TELEGRAM
Какая красивая штука. Пока не нашел информацию как конкретно сделали.
🔎 Как работает автофокус? На примере микроскопа.

Для того, чтобы определить в какой момент нам стоит прекратить изменять расстояние от образца до объектива, нам нужно придумать метрику сфокусированности изображения.

Интуитивно мы понимаем, что самая сфокусированная фотография - та на которой больше контраста,
больше четких линий, больше высоких частот.

То есть нам нужно понять на каком изображении больше контрастных границ.

🕸 В этом нам поможет умение определять границы на фотографии:
Мы уже обсуждали это в предыдущих постах (Оператор Собеля, оператор Кенни)

Простой и эффективной мерой сфокусированности является TENG:
https://github.com/vismantic-ohtuprojekti/qualipy/blob/master/qualipy/utils/focus_measure.py

Мы берем оператор Собеля и считаем среднее от каждого пикселя

mean(sobelX^2 + sobelY^2)

Вы можете увидеть график с этой мерой внизу видео (🔬 20*20 X препарат с насекомым)

Теперь остается только посмотреть пики на графике и остановиться на вершине (см красные круги)

📱 Примерно так и работает фокусировка в вашем смартфоне. Только в этом случае двигается не образец или объектив микроскопа, а двигается взад-вперед объектив камеры.
Я даже читал в какой-то статье, что там используются моторчики-степперы, страшно представить какого маленького размера они должны быть. Но может это далеко не у всех так.

#autofocus #sobel #canny #focus #TENG #microscope