Бокс для фотографирования предметов своими руками: Бюджетный «Фотобокс» для мыльниц и мобильных телефонов / Хабр

Содержание

Бюджетный «Фотобокс» для мыльниц и мобильных телефонов / Хабр

После написания предыдущего обзора «Logitech: «MX Revolution» мертв, да здравствует «Performance MX»», где я использовал в качестве фотоаппарата обычный iPhone, меня часто стали спрашивать хабралюди, и хабраобсерверы:
— «Как сделать такие фотографии используемые в вашем обзоре, без использования вспышек, на мыльницы и мобильные телефоны?».
А после сегодняшнего поста hollow «Обзор нетбука Asus EEE PC 1005 PE», я решил опубликовать свое «How To».

Данный Фотобокс отлично подойдет и для макро/предметной съемки хорошими фотоаппаратами. Единственное условие которое стоит соблюдать, — отсутствие дополнительных источников света, таких как дневной свет, свет в помещении, костра устроенного детьми поблизости.

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

И так, для создания Фотобокса в домашних условиях, нам потребуется порядка часа-двух на поход по магазинам ( в моем случае это была «Лента»). для приобретения необходимых вещей и не более 30 минут для постройки Фотобокса и установки света:


— Скатерть одноразовая белаая (365 дней): — 2×16.19р. (или любая другая ткань пропускающая свет, возможно использование матового стекла).
— Прожектор галогенный на подставке (LUX 150W) — 2×250р — (в большом помещении возможно использование 500W но их обязательно должно быть два).

— Скотч двусторонний — 1×32р.
— Ватман формата A1 — 1×12р. (на всякий случай можно запастись двумя, поскольку этот материал быстро пачкается и возможны разрывы или любые другие неприятности).
— Упаковочный пенопласт от ноутбука или монитора (Подойдет в принципе и любая картонная или деревянная коробка).

Стройка


В данном процессе нет ничего сложного, Схема сборки подписана на рисунке ниже.
Под рукой у меня оказался упаковочный пенопласт от MacBook 13» размер которого ~35x35x5см, использовать я его решил не раздумывая, по причине его округленных углов. Для данного процесса также подойдет пенопласт от монитора, поскольку боковые грани являются толстыми, а центр тонкий, то нам достаточно просто выдавить или аккуратно провести ножом его. В худшем случае можно использовать любую коробку, но процесс усложнится кройкой и вырезанием пустот.

Растилаем ватман таким образом, что бы меньшая сторона находилась к нам лицом, Длинные стороны будут служить основой для склейки.

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

Сначала необходимо ровно по краю наклеить на ватман с обеих сторон, не снимая защитную пленку скотч. А потом отклеить сантиметров 5-10 защитной пленки с одной стороны и приложить на это место начало любого из сторон пенопласта, и постепенно отклеивая защитную пленку, прикладывать к скотчу нашу «стенку». Таким образом мы сможем походу склеивания натягивать и выравнивать ватман таким образом что бы избежать замятия или неровностей, а также аккуратно обклеить стенку не ломая ватман. Затем опять натянуть Ватман и проделать тоже самое со второй стенкой.

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


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

Внимание 1: Не стоит переносить прожектора во включенном состоянии, вы можете обжечься
Внимание 2: Нельзя подносить прожектора ближе чем на 50 сантиметров, если вы будете отлучатся из помещения где ведете съемку, — есть возможность возгорания, как самой конструкции так и пола и окружающих предметов.

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

а этом работа не закончена, если мы включим прожектора то пронаблюдаем печальную картинку как эта:

Да, мягким светом и не пахнет, не говоря уже о равномерности фона. Для решения данной проблемы мы берем или белую одноразовую скатерть, тюль свернутую в несколько слоев, или кальку, или матовое стекло а-ля «Frozen Glass». Накрываем конструкцию таким образом, что бы были закрыты верх, и боковые стенки (тем где мы делали пустоши). Если вы используете ткань, то ее рекомендуется натянуть, возможно подложить по бокам под конструкцию. Если вы используете стекло, то необходимо его приставить к бокам конструкции и приклеить стороны скотчем таким образом, что бы не было щелей которые бы пропускали свет в обход стеклу. Приблизительная картина выглядит следующим образом:

Теперь включаем и тюнингуем расстояние прожекторов, выключаем свет окружающий/дополнительный свет и регулируем плотность ткани (ткань можно складывать в несколько слоев) таким образом, что бы получить желаемый результат:

Затем устанавливаем обозреваемую жертву (в такой конструкции возможна съемка ноутбуков без проблем).

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

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

Удачи в будущих обзорах!

UPD: Кому нужны фотографии а-ля Apple стайл:
на ребра пустот можно положить стекло, или зеркало. расположение камеры даст разные отражение, все зависит от вашей аходчивости. Приблизительно это выглядит так:

собственная мини-фотостудия для предметной съемки

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

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

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

Шаг 1: Сбор необходимых материалов

Вам не придется почти ничего покупать — вы найдёте большинство необходимых материалов для lightbox прямо под рукой.

  1. Коробка (любого размера в зависимости от того, что вы будете снимать)
  2. Канцелярский нож
  3. Клей
  4. Линейка или метр
  5. Зажимы для бумаги
  6. Гвозди и гайки
  7. Рассеивающий материал (я использовала кальку)
  8. Лист древесины (фанера, дсп… )
  9. Любая плотная бумага
  10. Две лампы, провода, патроны и вилки для розеток (либо просто купите две настольные лампы)

Шаг 2: Дорабатываем коробку

  1. Возьмите коробку и срежьте сторону, это будет лицевой частью лайтбокса.
  2. На боковых и верхней сторонах фотобокса отступите по 3 см от края и вырежьте остальной картон, сделав стороны полыми и оставив только рёбра жесткости (смотрите фотографии, чтобы понять, что нужно делать)
  3. Наклейте рассеивающий материал на три полые стороны.
  4. Вырежьте два куска белой бумаги и приклейте на грани внутри коробки.
  5. Проделайте вверху два небольших отверстия для зажимов для бумаги.
  6. Установите лист бумаги, закрепив его зажимами и сделав настолько изогнутым, чтобы на фотографиях не было видно лишних граней.

Шаг 3: Создание системы освещения

  1. Возьмите деревянный лист
  2. Просверлите отверстия для ваших цоколей и прикрутите их
  3. Соедините цоколи по схеме, указанной на изображении

Шаг 4: Результаты до и после

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

Коробочка с сюрпризом (Magic Box) своими руками, мастер-классы

Коробочка с сюрпризом (Magic Box) – это уникальный подарок, который подойдёт на все праздники. День Рождения, Новый год, праздник всех влюблённых, 8 марта, 23 февраля, свадьба, день учителя и другие торжества… Основным подарком является сюрприз – это может быть конфеты, флэшка, денежка, фото и всё то, что Вы захотите поместить в коробку. Однако само оформление коробочки вызывает радостные эмоции и подчёркивает тематику торжества. В этой статье мы рассмотрим: как сделать коробочку с сюрпризом своими руками.

Маленькая коробочка

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

Мастер-класс

  1. Размер коробочки 7 см: сделайте крест из 5ти квадратов, стороны которых по 7 см.
  2. Прочертите места сгибов не пишущей ручкой и поднимите квадраты вверх, формируя коробочку.
  3. Вырежьте из скрапбумаги 4 квадрата размером 6,8см.
  4. Затонируйте края квадратов чернилами и приклейте кружево на каждый квадратик.
  5. Обклейте квадратами заготовку коробки с лицевой стороны.
  6. Подготовьте 4 квадрата размером 6,8 см из другой скрапбумаги.
  7. Затонируйте краешки квадратов, украсьте наклейками и обклейте внутренние стенки коробки.
  8. Сделайте крышечку таким способом: подготовьте квадрат стороны которого 10,1 см. Расчертите стороны крышечки 7,1 см и высоту крышечки – 1,5 см, затем вырежьте, как показано на изображении.
  9. Прочертите места сгибов не пишущей ручкой, сложите и склейте крышечку.
  10. Вырежьте детали для крышечки из скрапбумаги таких размеров: торцы крышечки – 6,9х1,3 см; три квадрата – 6,9 см.
  11. Затонируйте детали и отложите в сторону.
  12. Подготовьте квадрат и 2 отрезка шебби-ленты, приклейте ленты с обратной стороны квадрата, затем приклейте на дно коробки и завяжите бантик.
  13. Обклейте деталями из скрапбумаги крышечку коробки.
  14. Украсьте крышечку на свой вкус и поместите сюрприз внутрь коробочки.

Маленькая коробочка готова!

Коробочка с секретом

Вам понадобится: плотная белая бумага А4, бумага для скрапбукинга, клей, линейка, ножницы, 4 скрепки, крючок для вязания либо не пишущая ручка, элементы декорирования – шпагат, подвеска, фигурки…

Мастер-класс

  1. Подготовьте квадрат плотной белой бумаги размером 18х18 см. Размер коробочки получится 6 см.
  2. Расчертите заготовку на 9 квадратов одинакового размера, используя крючок и линейку.
  3. Срежьте угловые квадраты, чтобы получился крест.
  4. Поднимите квадраты вверх, формируя коробочку.
  5. Подготовьте 10 квадратов скрапбумаги размером 5,8 см.
  6. Обклейте квадратами внешнюю и внутреннюю часть коробочки.
  7. Сделайте крышку таким способом: вырежьте из плотной бумаги квадрат размером 8,2 см и 2 квадрата скрапбумаги того же размера.
  8. Отступите от краёв квадрата 1 см и сделайте биговку (начертите линии крючком).
  9. Сделайте диагональные разрезы по углам, затем срежьте половинки разрезанной части, как показано на изображении.
  10. Загните и приклейте уголки, затем зафиксируйте скрепками и дождитесь высыхания.
  11. Сделайте маленький свёрток из бумаги, обвяжите бечёвкой и прикрепите на дно коробки, также не забудьте положить или написать секрет.
  12. Украсьте коробочку на свой вкус, прикрепив различные элементы декорирования.

Коробочка с секретом готова! Рекомендую к просмотру данное видео!

Новогодняя коробочка с сюрпризом

Вам понадобится: доска для биговки, ножи fantasy, ножницы, линейка, клей момент «Кристалл», клей пва, бумага для срапбукинга, бумага для акварели, акриловый пластик, конфетки Рафаэлло, элементы декорирования – снеговик, помпон и другие украшения…

Мастер-класс

  1. Подготовьте лист белой скрапбумаги размером 21х26 см. Размер готовой коробочки 5х10х4 см.
  2. Сделайте биговку (начертить линии не пишущем предметом) по стороне равной 21 см на расстоянии 4;4;5;4;4; а по стороне 26 см – 4;4;10;4;4;
  3. Срежьте лишнее и соберите коробочку.
  4. Сделайте крышку коробочки таким способом: возьмите бумагу для акварели, сделайте биговку прибавив на каждую сторону 1 мм – 5,1; 4,1; 5,1; 4,1; + 2 см на склейку (смотрите фото).
  5. Обклейте скрапбумагой внешнюю сторону, склейте и примерьте на коробочку.
  6. Приклейте полоску акрилового пластика к спинке снеговика и дождитесь высыхания.
  7. Приклейте снеговика за полосочку к внутренней стороне коробочки и дождитесь высыхания.
  8. Украсьте коробочку на свой вкус, приклейте помпон и положите конфетки внутрь коробочки.

Новогодняя коробочка с сюрпризом готова!

Мужская коробочка

Вам понадобится: чёрный картон, серый кожзам, скрапбумага, шляпная резинка и люверсы чёрного цвета, линейка, инструмент для биговки (не пишущая ручка, вязальный крючок), чипборд (фигурки картонной вырубки для украшения), швейная машинка, чёрные нитки, клей, декоративная надпись, подарочный набор – бутылка спиртного, отвёртка, пачка сигарет, таблетка на утро либо другое…

Мастер-класс

  1. Вырежьте прямоугольник из чёрного картона для коробки размером 37х27 см. Высота коробочки – 8 см, длина дна – 23 см, ширина – 13 см.
  2. Вырежьте прямоугольник из картона для крышки размером 27,2х17,2 см. Высота крышки – 3 см, длина – 23,2 см, ширина 13,2 см.
  3. Вырежьте углы (квадраты 8х8 см) у большого прямоугольника.
  4. Пробигуйте и согните по намеченным линиям.
  5. Пробигуйте крышку коробки, как показано на изображении.
  6. Вырежьте треугольнички возле уголков крышки и сложите по намеченным линиям.
  7. Измерьте каждую сторону коробочки и крышки, затем подготовьте кусочки кожзама согласно получившимся размерам. Таким же образом подготовьте детали из скрапбумаги, только сделайте их чуть меньшего размера, чем детали кожзама.
  8. Прошейте детали кожзама и скрапбумаги между собой.
  9. Пришейте один из прямоугольников к лицевой стороне крышки.
  10. Приклейте один прямоугольник ко дну коробки.
  11. Установите люверсы и прикрепите резинку, как показано на изображении.
  12. Оклейте внутреннюю часть коробки прямоугольниками скрапбумаги.
  13. Установите держатели из люверсов и резинки для других элементов подарка.
  14. Склейте крышку коробки и оклейте внешние стороны коробки и крышки прошитыми прямоугольниками.
  15. Заполните и украсьте коробку надписью и чипбордом.

Мужская коробочка готова! Рекомендую к просмотру данное видео!

Коробочка с фотографиями

Вам понадобится: коврик для резки, канцелярский нож, ножницы, клей, линейка, карандаш, вязальный крючок для биговки, бумага для скрапбукинга, дистресс-чернила для тонировки краёв, фотографии размером 8х9, элементы декорирования – ленты, помпоны, фигурки…

Мастер-класс

  1. Размер готовой коробочки 10х10х10см.
  2. Подготовьте 3 квадрата плотной бумаги размером 30х30см, 29х29см и 28х28см.
  3. Сделайте биговку, разделив каждый лист на 9 квадратов. Для первого листа отступите от края 10см; для второго 9,6см; а для третьего 9,3см.
  4. Обрежьте угловые квадраты у каждого листа, чтобы получились кресты.
  5. Обклейте заготовки скрапбумагой, закруглите и затонируйте края.
  6. Склейте в центре три заготовки между собой.
  7. Сделайте крышку таким способом: возьмите квадрат скрапбумаги размером 20,3см; отступите по 2,5см 2 раза с каждой стороны, сделайте биговку, как показано на изображении, затем сделайте надрезы по пунктирным линиям и соберите крышку.
  8. Приклейте фотографии и соберите коробку.
  9. Украсьте коробочку на свой вкус и завяжите лентой.

Коробочка с фотографиями готова!

Коробочка с сюрпризом

Вам понадобится: 3 листа формата А3, чёрная бумага для пастели размером 50х65 см, бумага для скрапбукинга 2х видов (красная и с цветами), клей «Момент Кристалл», карандаш, линейка, красная атласная лента, кружка, 4 батончика.

Мастер-класс

  1. Возьмите лист формата А3 и перечертите схему коробочки.
  2. Возьмите другой лист формата А3 и перечертите боковые грани коробочки.
  3. Возьмите третий лист формата А3 и перечертите схему крышки коробочки.
  4. Вырежьте детали с 3х листов.
  5. Склейте боковые грани коробочки.
  6. Подогните 2 раза внутрь края крышки.
  7. Зафиксируйте клеем.
  8. Обклейте стороны коробки чёрной бумагой для пастели.
  9. Вырежьте из чёрной бумаги заготовку по схеме крышки.
  10. Обклейте крышку чёрной бумагой для пастели.
  11. Вырежьте 4 прямоугольника размером 15х16 см из чёрной бумаги для пастели.
  12. Вырежьте 4 прямоугольника размером 13х14 см из красной бумаги для скрапбукинга.
  13. Обклейте чёрными прямоугольниками внутреннюю часть коробочки.
  14. Вложите по отрезку красной ленты в каждую сторону.
  15. Приклейте красные прямоугольники во внутреннюю часть коробки поверх лент.
  16. Вырежьте прямоугольник размером 15х16 см из цветочной бумаги для скрапбукинга.
  17. Приклейте его на центральную основу коробки.
  18. Вырежьте прямоугольник размером 13х164 см из цветочной бумаги для скрапбукинга и приклейте на крышку.
  19. Разложите 4 батончика по сторонам и завяжите ленточками.
  20. Поставьте кружку в центр, поднимите грани и закройте крышкой.
  21. Украсьте крышку ленточкой и завяжите бантик.

Коробочка с сюрпризом готова! Рекомендую к просмотру видео мастер-класс!

Идеи Magic Box

Простое отслеживание объекта с OpenCV

Щелкните здесь, чтобы загрузить исходный код этого сообщения

Сегодняшнее руководство открывает новую серию сообщений в блоге об отслеживании объектов, что, возможно, является одной из наиболее востребованных тем в PyImageSearch.

Отслеживание объекта — это процесс:

  1. Получение начального набора обнаруженных объектов (например, входного набора координат ограничивающей рамки)
  2. Создание уникального идентификатора для каждого из начальных обнаружений
  3. А затем отслеживание каждого из объектов при их перемещении по кадрам в видео с сохранением назначения уникальных идентификаторов

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

человек (что мы сделаем позже в этой серии).

Идеальный алгоритм отслеживания объекта будет:

  • Требуется фаза обнаружения объекта только один раз (т. Е. При первоначальном обнаружении объекта)
  • Будет чрезвычайно быстро — намного быстрее, чем , чем запуск самого детектора объектов
  • Уметь обрабатывать, когда отслеживаемый объект «исчезает» или выходит за границы видеокадра
  • Будьте устойчивы к окклюзии
  • Уметь подбирать объекты, которые он «потерял» между кадрами

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

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

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

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

Чтобы узнать, как начать создавать свой первый объект отслеживания с помощью OpenCV, просто продолжайте читать!

Простое отслеживание объекта с OpenCV

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

Этот алгоритм отслеживания объекта называется отслеживанием центроидов , поскольку он основан на евклидовом расстоянии между (1) существующими центроидами объектов (т. Е. Объектами, которые средство отслеживания центроидов уже видел ранее) и (2) центроидами новых объектов между последующими кадрами в видео.

Мы рассмотрим алгоритм центроида более подробно в следующем разделе. Оттуда мы реализуем класс Python, содержащий наш алгоритм отслеживания центроидов, а затем создадим сценарий Python для фактического запуска средства отслеживания объектов и применения его к входным видео.

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

Алгоритм отслеживания центроида

Алгоритм отслеживания центроидов — это многоэтапный процесс. В этом разделе мы рассмотрим каждый этап отслеживания.

Шаг №1: Принять координаты ограничивающего прямоугольника и вычислить центроиды
Рисунок 1: Чтобы построить простой алгоритм отслеживания объектов с использованием отслеживания центроидов, первым шагом является принятие координат ограничивающего прямоугольника от детектора объекта и их использование для вычисления центроидов.

Алгоритм отслеживания центроидов предполагает, что мы передаем набор координат (x, y) ограничивающего прямоугольника для каждого обнаруженного объекта в каждый отдельный кадр .

Эти ограничивающие рамки могут быть созданы любым типом детектора объектов (определение порога цвета + выделение контура, каскады Хаара, HOG + линейная SVM, SSD, Faster R-CNN и т. Д.), При условии, что они вычисляются для каждого кадра в видео.

Как только у нас есть координаты ограничивающего прямоугольника, мы должны вычислить «центроид», или, проще говоря, — координаты центра (x, y) ограничивающего прямоугольника. Рисунок 1 выше демонстрирует принятие набора координат ограничивающего прямоугольника и вычисление центроида.

Поскольку это первый начальный набор ограничивающих рамок, представленных нашему алгоритму, мы присвоим им уникальные идентификаторы.

Шаг № 2: Вычислить евклидово расстояние между новыми ограничивающими рамками и существующими объектами
Рисунок 2: На этом изображении представлены три объекта для простого отслеживания объектов с помощью Python и OpenCV. Нам нужно вычислить евклидовы расстояния между каждой парой исходных центроидов ( красный, ) и новых центроидов (, зеленый, ).

Для каждого последующего кадра в нашем видеопотоке мы применяем Step # 1 центроидов вычислительных объектов; однако вместо того, чтобы назначать новый уникальный идентификатор каждому обнаруженному объекту (что нарушило бы цель отслеживания объекта), нам сначала нужно определить, можем ли мы связать центроиды нового объекта (желтый) со старым объектом центроиды (фиолетовый). Чтобы выполнить этот процесс, мы вычисляем евклидово расстояние (выделено зелеными стрелками) между каждой парой существующих центроидов объектов и входных центроидов объектов.

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

Затем мы вычисляем евклидовы расстояния между каждой парой исходных центроидов (желтый) и новыми центроидами (фиолетовый). Но как нам использовать евклидовы расстояния между этими точками, чтобы на самом деле сопоставить их и связать их?

Ответ находится в Шаг № 3 .

Шаг № 3: Обновление (x, y) -координаты существующих объектов
Рисунок 3: Наш простой метод слежения за центроидными объектами связывает объекты с минимизированными расстояниями до них.Что же нам делать с объектом в левом нижнем углу?

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

Следовательно, i

Мягкое руководство по обнаружению объектов глубокого обучения

Сегодняшний пост в блоге вдохновлен читателем PyImageSearch Иезекиилем, который написал мне на прошлой неделе и спросил:

Привет, Адриан,

Я просмотрел ваше предыдущее сообщение в блоге об обнаружении объектов глубокого обучения по
с последующим руководством по обнаружению объектов глубокого обучения в реальном времени. Спасибо за это.

Я использовал ваш исходный код в своих примерах проектов, но у меня возникли две проблемы:

  1. Как мне отфильтровать / игнорировать классы, которые меня не интересуют?
  2. Как мне добавить новые классы в детектор объектов? Это вообще возможно?

Я был бы очень признателен, если бы вы осветили это в своем блоге.

Спасибо.

Иезекииль — не единственный, кто задает эти вопросы. Фактически, если вы просмотрите раздел комментариев к двум моим последним сообщениям об обнаружении объектов глубокого обучения (ссылка на них приведена выше), вы обнаружите, что один из наиболее частых вопросов обычно (перефразированный):

Как мне изменить исходный код, чтобы включить в него мои собственные классы объектов?

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

В частности, из этого поста вы узнаете:

  • Различия между классификацией изображений и обнаружением объектов
  • Компоненты детектора объектов с глубоким обучением, включая различия между платформой обнаружения объектов n и базовой моделью сама
  • Как выполнить обнаружение объектов глубокого обучения с помощью предварительно обученной модели
  • Как можно фильтровать и игнорировать предсказанные классы из модели глубокого обучения
  • Распространенные заблуждения и недопонимания при добавлении или удалении классов из глубокой нейронной сети

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

Мягкое руководство по обнаружению объектов глубокого обучения

Сегодняшняя запись в блоге предназначена для мягкого введения в обнаружение объектов на основе глубокого обучения.

Я сделал все возможное, чтобы предоставить обзор компонентов детекторов объектов глубокого обучения, включая исходный код OpenCV + Python для выполнения глубокого обучения с использованием предварительно обученного детектора объектов.

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

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

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

После этого мы реализуем обнаружение объектов глубокого обучения в реальном времени с помощью OpenCV.

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

Наконец, мы завершим сегодняшнюю публикацию в блоге, обсудив, как добавлять или удалять классы из детектора объектов глубокого обучения , i

% PDF-1.6 % 1 0 obj> endobj 2 0 obj >>> / Thumb 254 0 R / MediaBox [0 0 631 799] / Type / Page >> endobj 3 0 obj >>> / Thumb 259 0 R / MediaBox [0 0 637 799] / Type / Page >> endobj 4 0 obj> / Font> / XObject >>> / MediaBox [0 0 637. 219 798.794] / Тип / Страница >> endobj 5 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 6 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 7 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 8 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 9 0 obj> / Shading> / Font> / ProcSet [/ PDF / Text / ImageB / ImageC / ImageI] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 10 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 11 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 12 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 13 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 14 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637. 219 798.794] / Тип / Страница >> endobj 15 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 16 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 17 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 18 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 19 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 20 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 21 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 22 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 23 0 obj> / Font> / XObject >>> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 24 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 25 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 26 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 27 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 28 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 29 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 30 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 31 0 obj> / Shading> / Font> / ProcSet [/ PDF / Text] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 32 0 obj> / Shading> / Font> / ProcSet [/ PDF / Text / ImageB / ImageC / ImageI] >> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 33 0 объект> / Шрифт> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 34 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 35 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 36 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 37 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 38 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 39 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 40 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 41 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 42 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 43 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798. 794] / Type / Page >> endobj 44 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 45 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 46 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 47 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 48 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 49 0 obj> / ColorSpace> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 50 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 51 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 52 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageB / ImageI] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 53 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 54 0 obj> / Затенение> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 55 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageB / ImageI] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 56 0 obj> / Shading> / Font> / ProcSet [/ PDF / Text] >> / MediaBox [0 0 0 637.219 798.794] / Type / Page >> endobj 57 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 58 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 59 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 60 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 61 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 62 0 obj> / ColorSpace> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 63 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 64 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 65 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 66 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 67 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 68 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 69 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 70 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 71 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageB / ImageI] >> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 72 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 73 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 74 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 75 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 76 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 77 0 объект> / Шрифт> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 78 0 obj> / ColorSpace> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 79 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 80 0 obj> / Font> / XObject >>> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 81 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 82 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 83 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 84 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 85 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 86 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 87 0 obj> / ColorSpace> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 88 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 89 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 90 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798. 794] / Type / Page >> endobj 91 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 92 0 obj> / Shading> / Font> / ProcSet [/ PDF / Text / ImageC] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 93 0 объект> / Шрифт> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 94 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 95 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 96 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 97 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 98 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 99 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 100 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 101 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 102 0 объект> / Шрифт> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 103 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 104 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 105 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 106 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 107 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 108 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 109 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 110 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 111 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 112 0 obj> / ColorSpace> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 113 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 114 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 115 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 116 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 117 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 118 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 119 0 obj> / Затенение> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 120 0 obj> / Font> / XObject >>> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 121 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 122 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 123 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 124 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 125 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 126 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 127 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 128 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 129 0 obj> / ColorSpace> / ExtGState> / Shading> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 130 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageB / ImageI] >> / MediaBox [0 0 637. 219 798.794] / Type / Page >> endobj 131 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 132 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 133 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 134 0 obj> / Font >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 135 0 obj> / Shading> / Font> / XObject> / ProcSet [/ PDF / Text / ImageC / ImageI / ImageB] >> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 136 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 137 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 138 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Тип / Страница >> endobj 139 0 obj> / ColorSpace> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 140 0 obj> / Font> / XObject >>> / MediaBox [0 0 637.219 798.794] / Type / Page >> endobj 141 0 obj> / Shading> / Font> / ProcSet [/ PDF / Text] >> / MediaBox [0 0 0 637.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *