Categories
DIY

DeepStack – medium rare

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

А в голове звучит ответ:

Пневмослон

В целом, уже получается, что нужно бы вернуться в рабочее и продуктивное русло, но что-то не случается, все еще. Тем не менее, мозг уже начинает намекать на то, что пора начинать писать то, что никому и никогда не пригодится.

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

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

Итак, первое, с чего все начиналось – это было YOLO. Вроде как работало, но магии не получалось – процессилось долго, неуклюже, никакого API, да и сценарии использования – только в оффлайне перебирать фоточки, что тоже, возможно, неплохо, но все же.

Поигравшись, посмотрев, что, оно и правда что-то умеет – идея ушла в дальний ящик на, где-то, год. Идея вернулась в голову, когда появились дешевые ESP32-CAM в арсенале – в этот раз получилось сделать так, чтобы в относительном реалтайме получалась картинка, и, ее, неожиданно, появилась идея обрабатывать это и распозновать предметы.

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

Пример определения через веб морду

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

version: '3.3'

services:
   deepstack:
        container_name: deepstack
        image: deepquestai/deepstack:latest
        volumes:
           - /docker/deepstack:/datastore
        ports:
           - 5000:5000
        restart: always
        environment:
            - VISION-FACE=True
            - VISION-DETECTION=True
        networks:
           deepstack:
              ipv4_address: 172.50.0.3
   deepstackui:
        container_name: deepstack_ui
        image: robmarkcole/deepstack-ui:latest
        ports:
           - 8501:8501
        restart: always
        environment:
            - DEEPSTACK_TIMEOUT=100
            - DEEPSTACK_IP=172.50.0.3
            - DEEPSTACK_PORT=5000
        networks:
           deepstack:
              ipv4_address: 172.50.0.2
networks:
  deepstack:
    driver: bridge
    ipam:
     config:
       - subnet: 172.50.0.0/16

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

Собака

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

Пример наполняемости комнаты в зависимости от времени.

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

Среди всего прочего возникла потребность весь этот балаган кроме того, что скрестить, так еще и, допустим, закрепить таким образом, чтобы это были не просто провода растянутые по всей кваритре, а еще и некоторая эстетика.

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

Заодно освоено использование таких магических инструментов Автоматизированного Проектирования как Autocad Fusion. Прямо чортова магия.

Думаю, что остальные детали этого удивительного приключения раскрою позже, но тем не менее выводом из радостного похода на две веселые буквы (CV) будет – можно. Можно сделать дешево, можно сделать опенсорсно. Вопрос только один – а нужно ли?

What’s your Reaction?
+1
0
+1
0
+1
0

By root

In Unix-like computer OSes (such as Linux), root is the conventional name of the user who has all rights or permissions (to all files and programs) in all modes (single- or multi-user). Alternative names include baron in BeOS and avatar on some Unix variants. BSD often provides a toor ("root" written backward) account in addition to a root account.
Regardless of the name, the superuser always has a user ID of 0. The root user can do many things an ordinary user cannot, such as changing the ownership of files and binding to network ports numbered below 1024.