GithubHelp home page GithubHelp logo

supervisely-test's Introduction

supervisely-test

Весь код выложен в этот репозиторий. В каждой директории есть код и результаты к соответствующей задаче. Задача с ClickSEG имеет свой репозиторий с кодом.

1. ClickSEG on Cracks

Датасет трещин взят с kaggle: https://www.kaggle.com/datasets/lakshaymiddha/crack-segmentation-dataset

В среднем, модели нужно 1-3 клика для хороших результатов. Многие трещины хорошо предсказываются и в один клик.

Для этой задачи я сделал отдельный репозиторий, т.к. было много изменений в коде ClickSEG. Все подбробности обучения и метрики есть там: https://github.com/max-unfinity/ClickSEG-cracks (там я писал ридми на английском.. так вышло)))

2. Split and Merge

dependencies: numpy, opencv-python

Особенности:

border mode. Метод split реализован 3-мя вариантами, разница в том как будут обрабатываться границы изображения:

  • обрезка на границе (padding=False)
  • padding
  • padding_all_sides (картинка будет в центре, а паддинг по краям).

smart merge. 2 варианта merge: naive и "smart" (default)

  • naive: все нарезанные картинки загружаются одна за одной, восстановивая изображение небольшими кусочкам.
  • smart: выбирается минимально возможное число изображений. Каждое восстанавливает значительную часть исходной картинки. Это хорошо ускоряет обработку, когда картинка была нарезана с маленьким шагом (strides << window_size)

multithreding. В split и в merge добавлена поддержка multithreding на загрузку и сохранение нарезанных изображений (параметр n_threads > 0). Это значительно ускоряет выполнение функций.

В test.py split и merge тестируются на случайном шуме со случайными входными параметрами.

3. Segmentation Visualizer

За основу взят метод instances2rgb из imgviz

В visualize.py реализована основная функция - visualize(...), которая принимает на вход всё что нужно: img, bboxes, masks, labels, probs, colors. Остальные функции - вспомогательные, они нужны для предобработки данных.

Код instances.py из imgviz был изменен в некоторых местах. Были добавлены:

  • адаптивный размер текста, который зависит от площади ббокса в log шкале
  • сортировка масок по размеру. Так, на заднем плане окажутся большие объекты, а на переднем - маленькие. Это можно показать на первом примере - без этой сортировки большая маска стола заслоняла собой всё остальное:

4. Making Video Grid

Здесь нужен только ffmpeg с его -filter_complex и overlay. Скрипт работает на любом наборе видео клипов. То есть они могут быть разных разрешений, ориентаций и длительности. Каждому будет сделан паддинг, а длительность выбирается по самому короткому клипу. Вся мощь ffmpeg внутри))

python make_grid.py sample_data2 --width 1920 --height 1080 --output result.mp4

5. SegNeXt on 6 Lemons

Всего 6 сэмплов для обучения. mmsegmentation очень удобен и запускается на раз-два. Нужно всего лишь сделать правильный конфиг. Я взял tiny модель, обученную на ADE датасете, добавил сильные аугментации (RandomMosaic, RandomRotate, RandomFlip, RandomCrop). Модель показывает неплохие результаты на тесте (визуально). Можно сравнить модели со слабыми и сильными аугментациями (обе модели учились до схождения):

Light augmentations (450 iters):

Hard augmentations (700 iters):

Download checkpoints:

https://drive.google.com/drive/folders/1rmccjEZ_ckx0wNQe7viflY8FNvnr1o-8?usp=share_link

6. YOLOv7 YouTube Detector

Как работает:

  1. Получаем ссылку на видео с помощью pytube
  2. Скачиваем только нужные нам кадры с помощью ffmpeg
  3. Детектим с YOLOv7

Как запустить:

  • install ffmpeg
  • install requirements.txt and yolov7/requirements.txt
  • download yolov7 weights
  • run main.py

cd 6_yolov7_youtube_detector

python main.py https://www.youtube.com/watch?v=b41k2_MQNBk --n_frames 50 --fps 1.0 --device cpu --weights yolov7.pt

Results:

supervisely-test's People

Contributors

max-unfinity avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.