Поиск объектов на изображениях | Проекты по нейросетям
HTML-код
- Опубликовано: 1 окт 2024
- Проект по поиску объектов на изображениях с помощьTensorFlow Object Detection API.
Tensorflow Object Detection API - github.com/ten...
Предварительно обученные модели для поиска объектов на изображениях Tensorflow detection model zoo - github.com/ten...
Набор данных COCO - cocodataset.org
Репозиторий моделей TensorFlow Models - github.com/ten...
Установка Tensorflow Object Detection API в Linux - github.com/ten...
Установка Tensorflow Object Detection API в Windows - / how-to-use-tensorflow-...
Google Protocol Buffers для Windows версии 3.4.0 - github.com/goo...
Полная версия кода из видео - github.com/soz...
Ноутбук с полной версией кода в Colaboratory - colab.research...
Текстовый вариант лекции - www.asozykin.r...
Курс по программированию глубоких нейронных сетей на Python - www.asozykin.r...
Поддержать курсы деньгами можно через Яндекс Кошелек - money.yandex.r...
Заранее спасибо за помощь!
Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках -
goo.gl/kW93MA
Нигде не найду видео, где разметка изображений делается самостоятельно и обучается сеть с нуля на новых данных
Очень интересно, было бы еще интересно узнать о том как тренить под свои данные.)
Почтему то никто на эту тему не делает видосов..
Разобрался. Кому надо? - объясню на примере
@@nikolaydd6219 разобрался как делать под свои данные? помоги плиз! vk.com/emigrate359
@@emgrt359 ок
@@nikolaydd6219 Добрый день мне тоже интересно как обучить нейронную сеть на своем наборе данных vk.com/we__in__hell
На этапе выполнения блока кода:
!wget kaggle2.blob.core.windows.net/competitions/kaggle/3362/media/woof_meow.jpg
выдает ошибку: Resolving kaggle2.blob.core.windows.net (kaggle2.blob.core.windows.net)... failed: Name or service not known.
wget: unable to resolve host address ‘kaggle2.blob.core.windows.net’
Возможно обновить код google collab ноутбука?)
Добрый день! Распознавание идёт по картинке. А можно и как сделать распознавание с видео и желательно в онлайн режиме?
Вопрос, а почему когда я пересохраняю ноутбук в .py и запускаю на пичарме (в той же среде) то выходят ошибки ???(даже на уровне импортов)
Скорее всего, не установлены библиотеки, которые импортируются.
Спасибо, как раз то, что нужно. Кстати, Андрей, твои курсы смотрят у нас в Перми в ПГУ :)
Спасибо, очень рад, что смотрят!
Я из ПГУ, тож смотрю
А я из России, русский по национальности. Мы ненавидим всех нерусских!
@@ИИванов-ь6с я беларус, курсы Андрея смотрят и у нас. Тоже ненавидите)?
@@EugeneZ83 да и вас тоже ненавидим. Скоро ваше всё станет нашим!
Отличный курс... За пару часов освоил то, что не мог понять уже две недели из других курсов. Спасибо автору!
Пожалуйста!
@@AndreySozykin Может вы встречали готовые наборы изображений где размечены здания, мосты? Я пока что видел только животные, транспорт, люди...
Добрый день! Эти алгоритмы подойдут для распознавания медицинских изображений? Условно: найти вирус/бактерию/ аорту/ ключицу?
Для медицинских изображений лучше подойдут архитектуры нейросетей на основе unet.
Великолепно как раз искал материал по этой теме и тут видео.
Спасибо!
Ищу материал по другой теме. Весьма практический интерес. Мне предстоит оцифровать семь тысяч чертежей. Сижу ищу как бы этот процесс ускорить ))) Отсканировать не проблема, проблема загнать это в АвтоКад, но не просто растр туда сунуть, а нормальный чертёж получить.
Очень познавательный курс. Андрей, строка In(15), откуда этот код был взят? Сам писал? Если да, откуда логика была взята? Ссылочку бы...
Отличный урок! А возможно ли использовать эти модели для распознавания объектов на видео?
(прошу прощения что пишу из 2020)
Да, конечно. Видео делится на отдельные кадры, например, с помощью OpenCV. Затем на каждом кадре выполняется поиск объектов.
@@AndreySozykin а затем возможно объединить кадры в видео с боксами или полигонами при помощи того же OpenCV ?
Да, именно так.
День добрый есть ли библиотки которые определяют печатный текст сразу в слова (не по 1 букве и так же с числами?) будет ли по этой теме урок (как написать такую сеть )?
Да, есть. Например - github.com/tesseract-ocr/tesseract
Спасибо за видео. Очень познавательно. Интересно бы посмотреть как добавить свой тип. Допустим дерево или скамейка. А дальше провести обучение нейронной сети.
Всё сказано, в конце видео.ruclips.net/video/1KzKqxx-s-Q/видео.html
Могу записать отдельное видео на эту тему. Пока можно посмотреть пример с хабра - habr.com/post/358146/
Буду ждать с нетерпением. Очень интересно посмотреть.
Andrey Sozykin я думаю многим было бо интересно) спасибо за ваш контент
Здравствуйте, в юпитере не выходит запустить вашу программу выдает множество ошибок по внутренним библиотекам.МОжет у Вас есть ссылка на колаб с даной работой?
Зря вы про это рассказываете, fastrcnn уже безнадежно отстал по скорости, только Yolo
Да, Yolo отлично работает. Планирую про Yolo тоже записать видео.
@@AndreySozykin Добрый день. Спасибо за ваши видео. Вы уже сделали урок по Yolo? Через поиск по вашему каналу ничего не находит.
По Yolo не успел сделать ещё :-(
@@AndreySozykin Андрей, добрый день. Сделать видео о YOLO еще актуально, очень интересно было бы))
Привет!
В блоке, где запускается поиск обьектов на изображении следующая ошибка(внизу):
Пытаюсь гуглить по блокам, но это какой-то кошмар. Есть ли кто-то, у кого была похожая?
Спасибо
--------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
1326 try:
-> 1327 return fn(*args)
1328 except errors.OpError as e:
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata)
1305 feed_dict, fetch_list, target_list,
-> 1306 status, run_metadata)
1307
~\Anaconda3\lib\contextlib.py in __exit__(self, type, value, traceback)
87 try:
---> 88 next(self.gen)
89 except StopIteration:
~\Anaconda3\lib\site-packages\tensorflow\python\framework\errors_impl.py in raise_exception_on_not_ok_status()
465 compat.as_text(pywrap_tensorflow.TF_Message(status)),
--> 466 pywrap_tensorflow.TF_GetCode(status))
467 finally:
InvalidArgumentError: NodeDef mentions attr 'identical_element_shapes' not in Op handle:resource, flow:float; attr=dtype:type; attr=element_shape:shape,default=; attr=dynamic_size:bool,default=false; attr=clear_after_read:bool,default=true; attr=tensor_array_name:string,default=""; is_stateful=true>; NodeDef: Preprocessor/map/TensorArray = TensorArrayV3[clear_after_read=true, dtype=DT_FLOAT, dynamic_size=false, element_shape=, identical_element_shapes=true, tensor_array_name="", _device="/job:localhost/replica:0/task:0/cpu:0"](Preprocessor/map/strided_slice). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
[[Node: Preprocessor/map/TensorArray = TensorArrayV3[clear_after_read=true, dtype=DT_FLOAT, dynamic_size=false, element_shape=, identical_element_shapes=true, tensor_array_name="", _device="/job:localhost/replica:0/task:0/cpu:0"](Preprocessor/map/strided_slice)]]
During handling of the above exception, another exception occurred:
InvalidArgumentError Traceback (most recent call last)
in ()
28 # Запуск поиска объектов на изображении
29 output_dict = sess.run(tensor_dict,
---> 30 feed_dict={image_tensor: np.expand_dims(image_np, 0)})
31
32 # Преобразуем выходные тензоры типа float32 в нужный формат
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata)
893 try:
894 result = self._run(None, fetches, feed_dict, options_ptr,
--> 895 run_metadata_ptr)
896 if run_metadata:
897 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
1122 if final_fetches or final_targets or (handle and feed_dict_tensor):
1123 results = self._do_run(handle, final_targets, final_fetches,
-> 1124 feed_dict_tensor, options, run_metadata)
1125 else:
1126 results = []
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
1319 if handle is None:
1320 return self._do_call(_run_fn, self._session, feeds, fetches, targets,
-> 1321 options, run_metadata)
1322 else:
1323 return self._do_call(_prun_fn, self._session, handle, feeds, fetches)
~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args)
1338 except KeyError:
1339 pass
-> 1340 raise type(e)(node_def, op, message)
1341
1342 def _extend_graph(self):
InvalidArgumentError: NodeDef mentions attr 'identical_element_shapes' not in Op handle:resource, flow:float; attr=dtype:type; attr=element_shape:shape,default=; attr=dynamic_size:bool,default=false; attr=clear_after_read:bool,default=true; attr=tensor_array_name:string,default=""; is_stateful=true>; NodeDef: Preprocessor/map/TensorArray = TensorArrayV3[clear_after_read=true, dtype=DT_FLOAT, dynamic_size=false, element_shape=, identical_element_shapes=true, tensor_array_name="", _device="/job:localhost/replica:0/task:0/cpu:0"](Preprocessor/map/strided_slice). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
[[Node: Preprocessor/map/TensorArray = TensorArrayV3[clear_after_read=true, dtype=DT_FLOAT, dynamic_size=false, element_shape=, identical_element_shapes=true, tensor_array_name="", _device="/job:localhost/replica:0/task:0/cpu:0"](Preprocessor/map/strided_slice)]]
Caused by op 'Preprocessor/map/TensorArray', defined at:
File "C:\Users\Admin\Anaconda3\lib
unpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\Users\Admin\Anaconda3\lib
unpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\Admin\Anaconda3\lib\site-packages\ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "C:\Users\Admin\Anaconda3\lib\site-packages\traitlets\config\application.py", line 658, in launch_instance
app.start()
File "C:\Users\Admin\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 486, in start
self.io_loop.start()
File "C:\Users\Admin\Anaconda3\lib\site-packages\tornado\platform\asyncio.py", line 127, in start
self.asyncio_loop.run_forever()
File "C:\Users\Admin\Anaconda3\lib\asyncio\base_events.py", line 422, in run_forever
self._run_once()
File "C:\Users\Admin\Anaconda3\lib\asyncio\base_events.py", line 1432, in _run_once
handle._run()
File "C:\Users\Admin\Anaconda3\lib\asyncio\events.py", line 145, in _run
self._callback(*self._args)
File "C:\Users\Admin\Anaconda3\lib\site-packages\tornado\platform\asyncio.py", line 117, in _handle_events
handler_func(fileobj, events)
File "C:\Users\Admin\Anaconda3\lib\site-packages\tornado\stack_context.py", line 276, in null_wrapper
return fn(*args, **kwargs)
File "C:\Users\Admin\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 450, in _handle_events
self._handle_recv()
File "C:\Users\Admin\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 480, in _handle_recv
self._run_callback(callback, msg)
File "C:\Users\Admin\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 432, in _run_callback
callback(*args, **kwargs)
File "C:\Users\Admin\Anaconda3\lib\site-packages\tornado\stack_context.py", line 276, in null_wrapper
return fn(*args, **kwargs)
File "C:\Users\Admin\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "C:\Users\Admin\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 233, in dispatch_shell
handler(stream, idents, msg)
File "C:\Users\Admin\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
InvalidArgumentError (see above for traceback): NodeDef mentions attr 'identical_element_shapes' not in Op handle:resource, flow:float; attr=dtype:type; attr=element_shape:shape,default=; attr=dynamic_size:bool,default=false; attr=clear_after_read:bool,default=true; attr=tensor_array_name:string,default=""; is_stateful=true>; NodeDef: Preprocessor/map/TensorArray = TensorArrayV3[clear_after_read=true, dtype=DT_FLOAT, dynamic_size=false, element_shape=, identical_element_shapes=true, tensor_array_name="", _device="/job:localhost/replica:0/task:0/cpu:0"](Preprocessor/map/strided_slice). (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
[[Node: Preprocessor/map/TensorArray = TensorArrayV3[clear_after_read=true, dtype=DT_FLOAT, dynamic_size=false, element_shape=, identical_element_shapes=true, tensor_array_name="", _device="/job:localhost/replica:0/task:0/cpu:0"](Preprocessor/map/strided_slice)]]
почему-то кажется что проблема в изображении, но пробовал несколько вариантов. Так же менял .jpg и jpeg
Некоторые строки ошибки менялись, но не результат
The name tf.GraphDef is deprecated. Please use tf.compat.v1.GraphDef instead.
затык в самом начале. запускал из picharm
В видео пример для TF1. Сейчас на Colab TF2 по-умолчанию. Видео уже устарело, закрою, пока не сделаю более новую версию.
@@AndreySozykin когда выйдет обновленная версия?
@@AndreySozykin Доброе время суток, ещё планируете выпустить ролик? Часть ошибок исправил, но по итогу не работает)) Google Colab
Отличная подача материала! Все понятно и наглядно. Спасибо за материал и ссылки на него.
Пожалуйста!
К сожалению, это видео уже устарело. Оно по TensorFlow 1, а сейчас уже везде TensorFlow 2. Со временем переделаю.
что тут тебе понятно ? процесс написания кода нет , обяснение кода почти нет провто меняеш то меняещ сё и всё
Спасибо Вам большое за видео! Но видимо Tensorflow обновился, а код рассчитан на старую версию TF - сейчас выдает ошибки типа "AttributeError: module 'tensorflow' has no attribute 'GraphDef'" Если будет возможность немного его актуализировать - будет вообще супер. Заранее огромная Вам благодарность!
Очень ждем видео с обучением для задачи object detection. Кстати, почему не Keras?
Хорошо, видео сделаю. В Keras нет готового API для поиска объектов, а в TensorFlow есть. Поэтому рассказываю про TensorFlow. При желании можно все то же самое в Keras повторить, но в TensorFlow Object Detection уже многое сделано, поэтому рациональнее готовое использовать.
Спасибо! И еще, Андрей, затроньте тему в новом видео касательно негативных примеров при обучении. Например, если стоит задача детектировать только один объект. Нужно ли маркировать негативные и в каком количестве.
Ничего дополнительно маркировать не нужно. Вот пример обучения для распознавания одного объекта - енота - towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9
Лайк как обычно
Спасибо!
Очень круто, спасибо большое!!!
Больше пожалуйста!
Интересно!
Спасибо!
я перший
ты первый!
OneMasterLomaster я ще й перший лайк поставив
А можно ли выделять рамки изображения, если я использую модель в формате h5
Конечно, от формата модели результат работы не зависит.
@@AndreySozykin, как именно нужно сохранять или обучать модель чтобы получать ещё и рамку?
Ноутбук выдаёт ошибку. На нём tensorflow 1.15.2
AttributeError: module 'tensorflow' has no attribute 'GraphDef'
У тебя починить не удалось?
Я вроде с этим разобрался на TF 2.0, но возникает другая ошибка:
File "C:/Users/gdjvv/Desktop/ImageAI/venv/main.py", line 19, in
serialized_graph = fid.read()
File "C:\Users\gdjvv\Anaconda3\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 116, in read
self._preread_check()
File "C:\Users\gdjvv\Anaconda3\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 79, in _preread_check
self.__name, 1024 * 512)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 114: invalid continuation byte
@@ВладиславАлександрович-й7э У меня TF 2 вообще не работает, вроде как он не поддерживает мой процессор AMD, так что только TF 1.15.2 работает. А этот пример (что в видео) требует установки дополнительного ПО, может быть по этому не работает.. В конечном итоге я перешёл на C# с библиотекой Alturos.Yolo 3.0.6 Вот смотри как тут всё просто
ruclips.net/video/rwZuwabhswE/видео.html
Если ошибка "Microsoft Visual C++ 2017-2019 Redistributable (x64)", надо установить версию 3.0.6 и всё заработает yadi.sk/i/sjFSXZ_zyhU-nQ
Спасибо за видео, но возникла необходимость сделать похожую программу для распознавания объекта (например принтера или бутылки на камере в реальном времени) Нужно для диплома, но нигде не нашел статей как такое сделать. Что можете посоветовать с условием того, что знания питона не достаточно дабы писать похожие коды вручную
i guess it's pretty off topic but does anybody know a good place to watch newly released series online?
Вот это круто
Как это установить?
У меня нет папки */tensorflow/models/research/
github.com/tensorflow/models/tree/master/research/object_detection
Вот ссылка на инструкцию по установке для Linux - github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md, а вот для Windows - medium.com/@rohitrpatil/how-to-use-tensorflow-object-detection-api-on-windows-102ec8097699
Благодаря этому видео продвинулся дальше ruclips.net/video/COlbP62-B-U/видео.html
Дошел до другой ошибки))
Запишите по возможности видео с установкой или лучше создайте докер контейнер по возможности.
Хорошая идея с докер контейнером, но не уверен, что сейчас у меня найдется время его делать.
Пока можно запустить в Colaboratory - colab.research.google.com/drive/1EQ3Lt_ez-oKTtVMebh6Tm3XSyPPOHAf3
Там уже установлена TensorFlow, ноутбук содержит установку Object Detection API.
По ссылке первый блок окончился ошибкой "NameError: name 'xrange' is not defined" Чинится заменой xrange на range в том файле
2й блок выдал
" import matplotlib; matplotlib.use('Agg') # pylint: disable=multiple-statements"
До нее я и дошел)
Как чинится пока не знаю, пример из самой модели у меня уже запустился.
Добрый день, у меня вопрос к вам. А как сделать так что бы определялся только один класс объектов, например "Person"
Есть два варианта:
1. Если модель уже распознает нужный класс объектов, то можно использовать ее и игнорировать объекты всех найденных классов, кроме интересующего, например, Person.
2. Обучить сеть распознавать только один класс объектов. Вот пример обучения сети для распознавания енотов - towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9
12:05 - всё хорошо, но "распознаваются"
Да, оговорился :-(
Дослушать не смог. Ну просто пипец какой тон... Сначала в сон клонит (рассказывает, как будто сам сейчас уснёт), потом глушит, потому что басы почти без высоких частот капец как напрягают слух и давят на мозг...
запишите свой ролик лучше)
А мне наоборот очень нравится и подача, и качество материала