Skip to content

Решение задачи Онлайн хакатона от Норникеля 2021 года.

Notifications You must be signed in to change notification settings

medphisiker/Nornikel_Hackaton2021

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Финальные питчи хакатона

Представление решения команды(8 минут): https://youtu.be/zqmljRcZI-Q?t=2375.

Описание представленного решения

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

Для решения данной задачи будем использовать обученный FlowNet2: title

Литературные источники:

Расположены в рекомендуемом порядке для ознаколмелния.

Научные статьи:

Ilg E. et al. Flownet 2.0: Evolution of optical flow estimation with deep networks //Proceedings of the IEEE conference on computer vision and pattern recognition. – 2017. – С. 2462-2470. (https://openaccess.thecvf.com/content_cvpr_2017/papers/Ilg_FlowNet_2.0_Evolution_CVPR_2017_paper.pdf)

Видеолекции:

"Оптический поток", Михаил Романов "Samsung AI Innovation Campus - Russia" Статьи на ит порталах:

То, что вы хотели знать про оптический поток, но стеснялись спросить (https://habr.com/ru/post/201406/)

Generating optical flow using NVIDIA flownet2-pytorch implementation (https://towardsdatascience.com/generating-optical-flow-using-nvidia-flownet2-pytorch-implementation-d7b0ae6f8320?gi=840c37088f65)

Описание глобальных переменных.

Укажем путь по которому хранится видео флотации, для которого мы хотим оценивать поле векторов скоростей потока

vid_file= '/content/gdrive/MyDrive/NorNikel_hakaton/dataset1-1/F1_1_1_1.ts'

Задаем путь по которому храниться маска кодирующая область интереса, часть кадра видео по которому будут считать вектора скоростей потока маска == 1 потоки будут показаны, маска == 0 для этих точек произойдет зануление векторов скоростей

FlowNet2 будет оценивать скорости поток для всего кадра в том числе и для потока который стекают в желоб а его нам нужно игнорировать. скорость там существенно выше и при вычислении усредненной скорости тока по всему кадру появятся погрешности.

чтобы этого не происходило надо взять первый кадр видео, в любом растровом редакторе (например MS Paint) закрасить белым ту область где мы хотим вычислять векторные поля скоростей и по кторой будем оценивать средняя скорость.

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

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

mask_path = '/content/gdrive/MyDrive/NorNikel_hakaton/dataset1-1/Mask_F1_1_1_1.jpg'

если мы хоти наложить поверх цветовой визуализации поля векторов скорости линии тока(потока) и вывод усреденнной скорости потока по всей пене, то ставим этот флаг в True ели интересует только цветовая визуализация поля векторов скорости, то ставим False

flag_visualise_flows_and_speed = True

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

Они имет размерность (высота картинки в пикселях, ширина картинки в пикселях) каждый элемент которого представляет собой двумерный вектор скорости потока (x - компонента, у - компонента)

В нашем случае, модель принимает на вход кадр видео (600, 800). Во время предсказания модель пережмет ее в картинку (256, 256). Сделает предсказание векторов скорстей потока и произведет обратное расширение почти до начального размера, но с некоторыми потерями получится (576, 768). И каждым элементом этой матрицы является двумерный вектор (x,y). Поэтому итоговая размерность будет (576, 768, 2)

title

Цветовая визуализация векторного поля скоростей.

Поскольку нарисовать в каждом пикселе изображения вектор не представляется возможным, для визуализации векторов в каждом пикселе изображения используется цветовая кодировка.

Цветовая кодировка модуля и напрвления векторов скоростей в каждом пикселе изображения, приведена на рисунке ниже.

Является общепринятой. Функции ниже придерживаются данной цветовой маркировки.

title

Наложим на изображение с цветовой визуализацией поля векторов скорости flow_on_frame_img, визуализацию векторов в виде линий тока(потока), рассчитывает среднюю скорость по всему что находится в внутри зоны интереса задаваемой маской, расположенной по пути mask_path и сохраняет данную визуализацию в виде картинки по указанному в save_path пути.

Посмотрим на кадр из видео.

title

Посмотрим на визуализацию потоков

title

Кадр дополненнный векторами потока

title

Ссылка на видео.

IMAGE ALT TEXT HERE

About

Решение задачи Онлайн хакатона от Норникеля 2021 года.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 100.0%