Обучение семантической сегментации Unet в PyTorch

Поделиться
HTML-код
  • Опубликовано: 4 янв 2025

Комментарии • 31

  • @sashabelyy7528
    @sashabelyy7528 5 месяцев назад +3

    0:00 5:55 Описание задачи
    5:55 30:05 Разметка изображения
    30:05 33:35 Выгрузка разметки
    33:35 35:41 Описание папок в проекте
    35:40 37:05 Библиотеки smp и A blumentations
    37:05 40:43 Начало работы. Инициализация констант
    40:43 43:47 U Net и параметры обучения
    43:47 48:10 Описание процесса обучения
    48:10 49:28 метрики IoU, F1
    49:28 51:14 функция потерь DiceLoss
    51:14 53:05 Inference размер изображений
    53:05 54:05 Вспомогательные функции
    54:05 58:14 DataLoader
    58:14 1:04:35 Аугментации на train
    1:04:35 1:05:11 Аугментации на валидации
    1:05:11 1:06:45 Модель
    1:06:43 1:07:52 Нормализация
    1:07:52 1:10:08 Батчи и их размеры
    1:10:08 1:10:23 Метрики и настройки оптимайзера
    1:10:23 1:10:45 Настройки для эпохи
    1:10:45 1:12:08 Обучение
    1:12:08 1:13:18 JIT и сохранение модели
    1:13:18 1:14:00 Возможные проблемы
    1:14:00 1:16:34 Запускаем обучение
    1:16:34 1:17:43 Результаты обучения
    1:17:43 1:18:33 Загрузка модели
    1:18:33 1:21:34 Визуализация результата
    1:21:34 1:23:19 Описание приложения
    1:23:19 1:27:34 Инференс фотографии для произвольных фото
    1:27:34 1:29:03 Прогон через сеть
    1:29:03 1:32:21 Обрезка фото, полезные советы
    1:32:21 1:41:55 Свой веб сервис

    • @Koldim2001
      @Koldim2001  5 месяцев назад +2

      @@sashabelyy7528 ого красавчик! Спасибо большое 😊

    • @sashabelyy7528
      @sashabelyy7528 5 месяцев назад

      @@Koldim2001 еще такой вопрос небольшой а вот твоя стратегия для инференсов единственная или есть еще?

    • @Koldim2001
      @Koldim2001  5 месяцев назад

      @@sashabelyy7528 может быть любая. Главное правило - как обучал так и подаешь через сеть. Такие вот сложности у меня проявились только из-за того, что фотки на вход могут дать любого размера. Чаще всего я работаю с кейсами где обрабатываю видео поток с камер а значит можно так не париться и просто отучить с идеей что нужен просто ресайз кадра и даже паддинги не нужны

  • @vuydaster8915
    @vuydaster8915 12 дней назад +1

    Теперь понял, как бэкграунд делать проще!

    • @Koldim2001
      @Koldim2001  11 дней назад +1

      Там в конце показал как сайт сделать. Я его вот захостил и теперь любой может им пользоваться не имея питон. Это вот как пример как делиться приложениями со всеми. Вы как раз про это спрашивали под другим видео

  • @bozzaru
    @bozzaru 2 месяца назад +1

    Я пока на 29 минуте, но в шоке от того, что в видео автор не поленился прям рисовать и рисовать! Это надо хотеть такой туториал создать. Прям +100 в карму!

  • @bozzaru
    @bozzaru 2 месяца назад +1

    Мужик, я могу потом забыть написать. Ты супер-лектор. Я сейчас учусь на курсе по нейронкам, не буду говорить, где. Но если бы ты там вел, то был бы звездой!

    • @Koldim2001
      @Koldim2001  2 месяца назад

      @@bozzaru спасибо большое 😊
      Можешь глянуть у меня есть видео одно из недавних где я бесплатный ютуб курс собрал чтоб в правильно порядке видосы на канале были

  • @raushanrush4696
    @raushanrush4696 4 месяца назад +2

    Молодец 👍 было бы интересно послушать про Multi-Task сети)

  • @bbbbbb9193
    @bbbbbb9193 8 месяцев назад +2

    Ну это 10 из 10. Царский лайк!!! Спасибо!

  • @user-wr2dp6jt8s
    @user-wr2dp6jt8s 8 месяцев назад +1

    Отличная работа!

  • @deviceai
    @deviceai 2 месяца назад

    Спасибо за видео и за то, что делишься информацией! Такой вопрос, а пробовал ли применить AutoCVAT для сегментации частей лица? Или Yolo модели пока не умеют так?

    • @Koldim2001
      @Koldim2001  2 месяца назад +2

      @@deviceai yolo это модели под детекцию и инстанс сегментацию так что тут не оч помогут ведь тут семантическая сегментация в примере. Тут только SAM в помощь но его я как раз показал в примере на видео

  • @serg-s
    @serg-s 7 месяцев назад +3

    Что за сумасшедная база, спасибо!

    • @Koldim2001
      @Koldim2001  7 месяцев назад +1

      Хех спасибо))

  • @Dr.Whatson
    @Dr.Whatson 8 месяцев назад +1

    Спасибо за видео!
    А я правильно понимаю, что модели из этой библиотеки не получится использовать без предварительного обучения, поскольку веса подгружаются не для всей модели, а только для энкодера?

    • @Koldim2001
      @Koldim2001  8 месяцев назад

      Да все верно. Единственный вариант - найти готовые веса под вашу уникальную задачу у кого-то в инете и выгрузить их в модель и далее от этого стартовать обучение

  • @АлександрДергилёв-п8х
    @АлександрДергилёв-п8х 8 месяцев назад +2

    Опа, опа) лайк

  • @com-fh9ts
    @com-fh9ts 7 месяцев назад

    а сделай прогу с помощью segment anything которая будет работать на видео потоке) я так понял на гит хабе открытый код

    • @Koldim2001
      @Koldim2001  7 месяцев назад

      Да это вполне реально. Так что могу пример кода скинуть сюда который с вебки обработку делает и выводит результаты в отдельном окне. Сейчас напишу и пришлю следующим комментарием (если что визуализацию сможешь подстроить под себя в библиотеке patch base inference). не забудь перед запуском pip install patched_yolo_infer

    • @Koldim2001
      @Koldim2001  7 месяцев назад

      import cv2
      from ultralytics import FastSAM
      from patched_yolo_infer import visualize_results_usual_yolo_inference
      def process_stream(model, camera_id=0):
      # Open the input video file
      cap = cv2.VideoCapture(camera_id)
      while True:
      ret, frame = cap.read()
      if not ret:
      break
      result = visualize_results_usual_yolo_inference(
      frame,
      model,
      imgsz=640,
      conf=0.5,
      iou=0.7,
      segment=True,
      thickness=1,
      show_boxes=False,
      show_class=False,
      show_confidences=False,
      fill_mask=True,
      return_image_array=True,
      random_object_colors=True
      )
      # Display the resulting frame
      cv2.imshow('Processed Frame', result)
      if cv2.waitKey(1) & 0xFF == ord('q'):
      break
      cap.release()
      cv2.destroyAllWindows()
      # Example usage
      model = FastSAM("FastSAM-x.pt") # or FastSAM-s.pt
      process_stream(model)

  • @Aimusic_g
    @Aimusic_g 7 месяцев назад +1

    Здравствуйте крутое видео!Хотел узнать у вас,получается это классификация и сегментация в одном?Простите если глупый вопрос просто я начинающий и не всё еще понимаю

    • @Koldim2001
      @Koldim2001  7 месяцев назад +1

      Добрый день. Нет это именно сегментация (просто сегментации по определению это классификация каждого пикселя). Туториал по классификации изготовлений выйдет в середине июня на канале 👍🏻так что скоро будет

    • @Aimusic_g
      @Aimusic_g 7 месяцев назад +1

      Круто!Круто!Спасибо за ответ

    • @Aimusic_g
      @Aimusic_g 7 месяцев назад

      Как с вами можно связаться?Если можно?

    • @Koldim2001
      @Koldim2001  7 месяцев назад

      @@Aimusic_g да по тг @kolesnikov_dima

  • @Motskin_AI
    @Motskin_AI 7 месяцев назад +1

    Спасибо за видео!
    Правда хотелось бы по разметке сказать пару слов. Вот вы потратили время, чтобы разметить контур глаз и контур рта и сразу же потеряли эту информацию. И если теперь заказчик придёт, и скажет что желает какие-то действия проводить с глазами и ртом, то вам придётся всю работу повторять. Короче, всегда более предпочтительно разметку делать полигонами, причём соответствующими классами. Вот вы вырезали глаза, но более правильно было бы разметить глаза. А уже с помощью скриптов вырезать так как вам хочется. Например из слоя лицо вырезать все фрагменты с классом глаза и рот.
    В любом случае я понимаю, что разметка в этом видео является вспомогательным действием, но всё же проблемы с разметкой сразу проявились в конце видео, когда ползунками изменяли характеристики. И в первую очередь из-за того, что рот и глаза не являются фоном. Да, к тому моменту вы это могли понять, только самое простое решение проблемы заключалось в переразметке.
    Кроме того, что разметка полигонами позволяет редактировать контур, но и сама разметка контура проще, особенно если соседний класс уже размечен, тогда можно привязаться к ранее выполненному контуру.
    Ну а я стараюсь всегда смотреть ваши видео - практичные и живые Так держать!!!

    • @Koldim2001
      @Koldim2001  7 месяцев назад +2

      Спасибо это очень правильное замечание. 😊Поддерживаю на 100%. Просто я пытался кейс максимально упросить чтоб было понятно всем даже только начинающим разрабам. Мне порой подписчики задают вопросы о том, как питон установить, так что у всех уровень разный. Писать скрип чтобы вырезать области частей тела было бы дополнительным усложнением на уровне кодинга чего я старался избежать))
      Приятно что есть такие вовлеченные подписчики как вы😎🔥

  • @valeogamer
    @valeogamer 8 месяцев назад +2

    🦾👍