All streams
Search
Write a publication
Pull to refresh
91
104

User

Send message

Делаем домашний сервер из: старый регистратор

Reading time6 min
Views16K

Сделать мини‑сервер из TV‑бокса можно, но вот проблема: встроенная память там никакая, всего‑то 8 гигабайт.
Можно, конечно, воткнуть в него SD‑карту.
Можно подключить USB‑диск, хоть механику, хоть SSD через адаптер.

А можно подключить диск через ISCSI: в ОС появляется устройство, которое может быть смонтировано как раздел файловой системы, точно так же как если бы это был обычный диск.

При этом внешне к «коробке‑серверу» ничего не подключено, все работает через сеть. Никаких дополнительных соплей ниоткуда не висит, только маленькая черная коробочка, сеть и питание.

В случае какого‑то форс‑мажора, связанного с уничтожением самого сервера (вандализм, пожар, кража) вся информация останется на физическом диске где была, в каком‑то другом месте. Для эстетов — можно сделать и так, что кража диска тоже ничего не даст, если диск зашифрован.
Единственный минус — скорость чтения/записи ограничена.

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

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

Читать далее

Улучшаем систему видеонаблюдения, ч.3

Reading time7 min
Views1.6K

Распознавание на python работало хорошо, но хотелось еще как-то это ускорить.
Спрашивается: если есть некоторая оболочка, позволяющая запустить модель на python - может быть есть оболочка позволяющая запустить ее на C/C++?
И такая нашлась: https://github.com/Geekgineer/YOLOs-CPP

Копируем:

git clone https://github.com/Geekgineer/YOLOs-CPP
cd YOLOs-CPP

Нам нужны дополнительно некоторые пакеты:

apt install curl libopencv-dev cmake g++

В файле build.sh нужно найти ONNXRUNTIME_VERSION - а потом посмотреть, на что реально она влияет. Описание процесса установки уже отстало от жизни, поэтому придётся ручками.
Скрипт должен скачать соответствующий версии файл - но там, откуда он его скачивает, версия более новая, к тому же скрипт желает загрузить версию для arm64, а там - aarch64.
В общем, вот это надо выполнить вручную: скачать, распаковать, сделать симлинк с нужным названием, закомментировать уже выполненное

ln -s onnxruntime-linux-aarch64-1.20.1 onnxruntime-linux-arm64-1.20.1

В этом пакете лежат include-файлы и so-библиотеки, нужные для сборки и работы.
Библиотеки *so имеет смысл скопировать в /usr/local/lib/

В каталоге YOLOs-CPP/src - три файла-примера использования детектора: для изображений, для видеофайлов и для видеопотока, например с камеры.
Каталог models содержит модели yolo в формате onnx, а include - *.hpp-файлы для работы с ними.

В файлах примеров необходимо правильно выбрать нужную версию модели - если используем yolo11 - то нужны будут YOLO11.hpp и указатели типа YOLO11* в коде *.cpp

Читать далее

Делаем домашний сервер из: MXQ pro 4K

Reading time5 min
Views13K

К вопросу о том, «что за дом без серверной стойки для души и экспериментов»:
серверная в подвале, с круглосуточно гудящими аппаратами — теперь в прошлом. Для серьезных вещей удобнее купить VDS на хостинге, а для несерьезных...

Ну вот, например, попалась смарт‑приставка для TV MXQ pro 4K.
По описанию на маркетплейсе — там и 64Gb, и тут же одновременно 512Gb (интересно, что именно они имели ввиду?) при цене, скажем так, пакета апельсинов.
Ну, чтож, надо глянуть, чего там внутри.

Ну, софт особо не интересует — Андроид, стандартные для таких приставок приложения типа онлайн‑кинотеатров, ничего необычного.

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

Читать далее

Улучшаем систему видеонаблюдения, ч.2

Reading time4 min
Views5.7K

Вариант детекции обьектов с помощью CodeProject.AI работал хорошо, но пришлось отдать под него отдельный, хоть и старый, ноутбук, который требовал отдельного питания, заметно грелся, жужжал вентилятором.
Поэтому, с появлением компактного девайса с arm64 и 4 Гб ОЗУ, захотелось перенести всё на него.

К счастью, оказалось что есть готовый Docker и для arm64, достаточно только при создании указать codeproject/ai-server:arm64.

Всё установилось и заработало, причем даже чуть побыстрее чем на старом ноутбуке, и всё в маленькой бесшумной коробочке с питанием от USB.
Но хотелось что-то улучшить...

Стандартно, там внутри для распознавания обьектов используется нечто под названием YOLO 6.5. (да, я понятия не имел что это такое. Работает и хорошо, а что?)
При этом через пользовательский интерфейс система сообщает, что можно обновить до более свежей версии, но при попытке обновить штатным образом, нажатием кнопочек на экране, всё только портится и работать перестает: что-то не удалось найти, что-то не удалось загрузить и так далее.

При этом сама система - это как бы универсальный AI-сервер, на котором можно запускать разные модули, из которых по сути нужен только один.
А что если найти и запустить его отдельно?

Так выяснилось, что YOLO - это довольно известная штука от Ultralytics https://github.com/ultralytics/ultralytics, и актуальная версия там уже 11, а не 6.5.
И что всё это можно запустить под python.
Правда, есть нюанс: я не знаю python, но когда это кого останавливало?

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

Читать далее

Улучшаем систему видеонаблюдения, ч.1

Reading time9 min
Views21K

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

А для контроля за пространством вокруг эта функция довольно полезна.

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

Идея использовать PIR‑датчик тоже к успеху не привела: он реагирует на холодные струи дождя и на воздушные потоки разной температуры, что дает массу ложных срабатываний.

Итак, нам нужен «детектор человеков».

Первым вариантом решения стало использование CodeProject.AI.

Это AI‑сервер, который способен обрабатывать изображения, идентифицируя на них те или иные объекты. Взаимодействие с ним производится через WebAPI.
Несмотря на то, что на сайте указаны различные варианты использования — работают почему‑то только docker‑образы.

Читать далее

Information

Rating
68-th
Registered
Activity