#dlib — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #dlib, aggregated by home.social.
-
Анализ лиц с домофона: как я победил несовместимости и собрал dlib+CUDA на Ubuntu — готовый скрипт
Каждый день мимо двери моего подъезда проходят десятки людей. Соседей я знаю в лицо, но кто все остальные? Курьеры, случайные гости, а может, кто-то что-то высматривает? Домофонная камера всё записывает , но вручную пересматривать часы видео бессмысленно. Мне захотелось сделать систему, которая сама будет находить и запоминать лица, чтобы потом показать, кто у двери появляется чаще всего. Это желание про безопасность - узнать «постоянных незнакомцев» и про личное увлечение: я люблю разбираться в технологиях, а это отличный повод попробовать компьютерное зрение и ускорение работы на видеокарте. На словах всё выглядело просто, а на деле пришлось пройти целый квест из несовместимых программ, капризных драйверов и упрямой библиотеки распознавания лиц. Но в итоге я собрал рабочий инструмент, и теперь расскажу, как это было. Проект выложен на GitHub. Соседи на месте?
https://habr.com/ru/articles/935098/
#dlib #CUDA #cuda_toolkit #face_recognition #face_recognition #космотекст #rtx_5060 #rtx
-
Анализ лиц с домофона: как я победил несовместимости и собрал dlib+CUDA на Ubuntu — готовый скрипт
Каждый день мимо двери моего подъезда проходят десятки людей. Соседей я знаю в лицо, но кто все остальные? Курьеры, случайные гости, а может, кто-то что-то высматривает? Домофонная камера всё записывает , но вручную пересматривать часы видео бессмысленно. Мне захотелось сделать систему, которая сама будет находить и запоминать лица, чтобы потом показать, кто у двери появляется чаще всего. Это желание про безопасность - узнать «постоянных незнакомцев» и про личное увлечение: я люблю разбираться в технологиях, а это отличный повод попробовать компьютерное зрение и ускорение работы на видеокарте. На словах всё выглядело просто, а на деле пришлось пройти целый квест из несовместимых программ, капризных драйверов и упрямой библиотеки распознавания лиц. Но в итоге я собрал рабочий инструмент, и теперь расскажу, как это было. Проект выложен на GitHub. Соседи на месте?
https://habr.com/ru/articles/935098/
#dlib #CUDA #cuda_toolkit #face_recognition #face_recognition #космотекст #rtx_5060 #rtx
-
Анализ лиц с домофона: как я победил несовместимости и собрал dlib+CUDA на Ubuntu — готовый скрипт
Каждый день мимо двери моего подъезда проходят десятки людей. Соседей я знаю в лицо, но кто все остальные? Курьеры, случайные гости, а может, кто-то что-то высматривает? Домофонная камера всё записывает , но вручную пересматривать часы видео бессмысленно. Мне захотелось сделать систему, которая сама будет находить и запоминать лица, чтобы потом показать, кто у двери появляется чаще всего. Это желание про безопасность - узнать «постоянных незнакомцев» и про личное увлечение: я люблю разбираться в технологиях, а это отличный повод попробовать компьютерное зрение и ускорение работы на видеокарте. На словах всё выглядело просто, а на деле пришлось пройти целый квест из несовместимых программ, капризных драйверов и упрямой библиотеки распознавания лиц. Но в итоге я собрал рабочий инструмент, и теперь расскажу, как это было. Проект выложен на GitHub. Соседи на месте?
https://habr.com/ru/articles/935098/
#dlib #CUDA #cuda_toolkit #face_recognition #face_recognition #космотекст #rtx_5060 #rtx
-
Анализ лиц с домофона: как я победил несовместимости и собрал dlib+CUDA на Ubuntu — готовый скрипт
Каждый день мимо двери моего подъезда проходят десятки людей. Соседей я знаю в лицо, но кто все остальные? Курьеры, случайные гости, а может, кто-то что-то высматривает? Домофонная камера всё записывает , но вручную пересматривать часы видео бессмысленно. Мне захотелось сделать систему, которая сама будет находить и запоминать лица, чтобы потом показать, кто у двери появляется чаще всего. Это желание про безопасность - узнать «постоянных незнакомцев» и про личное увлечение: я люблю разбираться в технологиях, а это отличный повод попробовать компьютерное зрение и ускорение работы на видеокарте. На словах всё выглядело просто, а на деле пришлось пройти целый квест из несовместимых программ, капризных драйверов и упрямой библиотеки распознавания лиц. Но в итоге я собрал рабочий инструмент, и теперь расскажу, как это было. Проект выложен на GitHub. Соседи на месте?
https://habr.com/ru/articles/935098/
#dlib #CUDA #cuda_toolkit #face_recognition #face_recognition #космотекст #rtx_5060 #rtx
-
📚🏛️ Narodna in univerzitetna knjižnica (NUK) je novi partner Mreže občanske znanosti! 🎉 Skrbi za nacionalno knjižnično zbirko, portal dLib.si in dostop do znanja za vse. 🤝📖 Dobrodošli!
-
📚🏛️ Narodna in univerzitetna knjižnica (NUK) je novi partner Mreže občanske znanosti! 🎉 Skrbi za nacionalno knjižnično zbirko, portal dLib.si in dostop do znanja za vse. 🤝📖 Dobrodošli!
-
📚🏛️ Narodna in univerzitetna knjižnica (NUK) je novi partner Mreže občanske znanosti! 🎉 Skrbi za nacionalno knjižnično zbirko, portal dLib.si in dostop do znanja za vse. 🤝📖 Dobrodošli!
-
📚🏛️ Narodna in univerzitetna knjižnica (NUK) je novi partner Mreže občanske znanosti! 🎉 Skrbi za nacionalno knjižnično zbirko, portal dLib.si in dostop do znanja za vse. 🤝📖 Dobrodošli!
-
ADL – Avoid Debugging Later
Back in the day, being a witch was considered a grave crime. Today, we’re diving into one of C++’s lesser-known spells: ADL (Argument-Dependent Lookup). But before we explore this arcane magic, you must heed a warning—black magic comes with consequences. ADL is particularly treacherous, often leading to frustrating and hard-to-debug issues. Whenever possible, it’s wise to avoid casting this spell unless absolutely necessary.
Ingredients
Every spell needs ingredients, this time the only ingredients you need are a C++ compiler and a function that accepts at least one parameter, but there is a try catch, the parameter type has to belong to the same namespace of the function.
Casting the Spell
This spell works in shadows—you must look closely to uncover its effect.
std::cout << "Can you see me?";
Should the spell have passed you by, I’ll summon its power again for your eyes:
std::vector<int> a{1}, b{2};swap(a, b);If the spell’s effect remains elusive, let’s summon the entire code for you to see:
#include <vector>int main() { std::vector<int> a{1}, b{2}; swap(a, b); return 0;}And there it is, I didn’t use
using namespace std;and yet I calledstd::swapfunction without thestd::prefix.Dangerous Path
Before we dive into unveiling the syntax secrets, this is the place for warning signs. We all know that
using namespace std;is considered bad practice—and for a good reason. When you import an entire namespace into your own without being fully aware of the functions and names you’re bringing in, collisions can occur. Such collisions might result in calling an unintended function or class, often one with a slightly different algorithm or mechanism (after all, there’s usually a reason for the identical naming).Calling an unexpected function might unintentionally summon dependencies from distant, unforeseen corners of your code, and in doing so, awaken Undefined Behavior lurking quietly in the shadows, waiting for the right moment to strike.
This ‘spell’ exposes you to the exact same issue, even without explicitly using
using namespace. There are situations where you may need to cast this spell to achieve generic or scalable code. However, even in those cases, you must ensure the area is clear. Treat these spell locations as dangerous and suspicious zones—mark them clearly, and suspect them first whenever a bug appears nearby.Syntax Ritual: Unveiling the Dark Art of ADL
This spell was originally crafted to support the well-known foundation of C++ code:
std::cout << "Hello World";
This simple, foundational code uses ADL to access
std::operator<<(std::ostream&, const char*), as the actual code is:std::operator<<(std::cout, "Hello World"); // Without using ADLoperator<<(std::cout, "Hello World"); // Using ADL
The general idea behind this magic is that the compiler searches for a matching function in the current namespace and in the namespaces of each argument in the function call. For example, in the code above, the
operator<<is located in thestdnamespace, and the argumentstd::coutalso belongs to the same namespace.However, there are many more rules regarding what the lookup would contain in each case. The exact rules of the ADL can be found on cppreference.
A slightly more complex example comes from my experience with the dlib library, which looks like this:
namespace dlib { class dense_feature_extractor { public: friend void serialize(const dense_feature_extractor& item, std::ostream& out) { out << "dense_feature_extractor::serialize\n"; } friend void deserialize(dense_feature_extractor& item, std::istream& in) { std::cout << "dense_feature_extractor::deserialize\n"; } }; class matrix {}; void serialize(const matrix& m, std::ostream& out) { out << "dlib::serialize(matrix)\n"; } void deserialize(const matrix& m, std::istream& in) { std::cout << "dlib::deserialize(matrix)\n"; }}Now, it becomes interesting: without ADL, we can’t access the
serializeanddeserializefriend functions inside thedense_feature_extractorclass, unless we modify the library to declare them outside the class or make them static functions within the class.By casting a few ADL spells, we can craft the following function:
dlib::matrix m;dlib::dense_feature_extractor d;serialize(m, std::cout); // dlib::serialize(matrix)// same as: dlib::serialize(m, std::cout);serialize(d, std::cout);// dense_feature_extractor::serializedeserialize(m, std::cin); // dlib::deserialize(matrix)// same as: dlib::deserialize(m, std::cin);deserialize(d, std::cin); // dense_feature_extractor::deserialize
Since the calls appear identical, we can generalize them as follows:
template <typename T>void dlib_serializer(const T &val) { serialize(val, std::cout);}template <typename T>void dlib_deserializer(T &val) { deserialize(val, std::cin);}void func() { dlib::matrix m; dlib::dense_feature_extractor d; dlib_serializer(m); dlib_serializer(d); dlib_deserializer(m); dlib_deserializer(d);}The Spell You Might Unintentionally Already Cast
This spell is subtle and elusive, and you may already be summoning it without even noticing—simply by forgetting the
std::prefix (or any other namespace’s arcane sigil). The silver lining is that now, armed with this knowledge, you’ll be able to spot its presence in any code that calls upon it.Special Thanks
- Ellie Bogdanov for spelling assistance.
- ChatGPT for the logo and for grammar and spelling assistance.
#adl #advanced #ArgumentDependentLookup #C_ #coding #cpp #debug #dlib #include #Intermediate #magic #namespace #programming #spell #spells #usingNamespace
-
FYI - If you're using the #facedetection app for #Nextcloud and running it on #Fedora #Linux, you'll need to recompile the PHP module for #dlib when you upgrade to Fedora 40.
-
FYI - If you're using the #facedetection app for #Nextcloud and running it on #Fedora #Linux, you'll need to recompile the PHP module for #dlib when you upgrade to Fedora 40.
-
FYI - If you're using the #facedetection app for #Nextcloud and running it on #Fedora #Linux, you'll need to recompile the PHP module for #dlib when you upgrade to Fedora 40.
-
FYI - If you're using the #facedetection app for #Nextcloud and running it on #Fedora #Linux, you'll need to recompile the PHP module for #dlib when you upgrade to Fedora 40.
-
FYI - If you're using the #facedetection app for #Nextcloud and running it on #Fedora #Linux, you'll need to recompile the PHP module for #dlib when you upgrade to Fedora 40.
-
Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++
Привет, Хабр! Меня зовут Кирилл Колодяжный, я ведущий инженер-программист в YADRO. Помимо основных рабочих задач, включающих исследование проблем производительности СХД, я увлекаюсь машинным обучением. Участвовал в коммерческих проектах, связанных с техническим зрением, 3D-сканерами и обработкой фотографий. В задачах часто использовал С++, хотя машинное обучение традиционно ассоциируется с Python. Этот язык программирования буквально захватил сферу, его используют повсюду — от обучающих курсов до серьезных ML-проектов. Однако Python — не единственный язык, на котором можно решать задачи машинного обучения. Так, альтернативой может стать С++. Если последний вам ближе, вам будет интересен и полезен этот текст. Под катом разберемся: — как организовать работу с данными и загрузку обучающего датасета, — как описать структуру нейронной сети, — как использовать уже готовые алгоритмы машинного обучения из доступных библиотек и фреймворков, — как организовать конвейер обучения сети, — как использовать предобученные глубокие сети для решения задач.
https://habr.com/ru/companies/yadro/articles/800533/
#с++_программирование #pytorch #машинное_обучение #libtorch #faceid #поиск_лиц #dlib #tripletloss #сиамские_сети #архитектура_сетей
-
Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++
Привет, Хабр! Меня зовут Кирилл Колодяжный, я ведущий инженер-программист в YADRO. Помимо основных рабочих задач, включающих исследование проблем производительности СХД, я увлекаюсь машинным обучением. Участвовал в коммерческих проектах, связанных с техническим зрением, 3D-сканерами и обработкой фотографий. В задачах часто использовал С++, хотя машинное обучение традиционно ассоциируется с Python. Этот язык программирования буквально захватил сферу, его используют повсюду — от обучающих курсов до серьезных ML-проектов. Однако Python — не единственный язык, на котором можно решать задачи машинного обучения. Так, альтернативой может стать С++. Если последний вам ближе, вам будет интересен и полезен этот текст. Под катом разберемся: — как организовать работу с данными и загрузку обучающего датасета, — как описать структуру нейронной сети, — как использовать уже готовые алгоритмы машинного обучения из доступных библиотек и фреймворков, — как организовать конвейер обучения сети, — как использовать предобученные глубокие сети для решения задач.
https://habr.com/ru/companies/yadro/articles/800533/
#с++_программирование #pytorch #машинное_обучение #libtorch #faceid #поиск_лиц #dlib #tripletloss #сиамские_сети #архитектура_сетей
-
Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++
Привет, Хабр! Меня зовут Кирилл Колодяжный, я ведущий инженер-программист в YADRO. Помимо основных рабочих задач, включающих исследование проблем производительности СХД, я увлекаюсь машинным обучением. Участвовал в коммерческих проектах, связанных с техническим зрением, 3D-сканерами и обработкой фотографий. В задачах часто использовал С++, хотя машинное обучение традиционно ассоциируется с Python. Этот язык программирования буквально захватил сферу, его используют повсюду — от обучающих курсов до серьезных ML-проектов. Однако Python — не единственный язык, на котором можно решать задачи машинного обучения. Так, альтернативой может стать С++. Если последний вам ближе, вам будет интересен и полезен этот текст. Под катом разберемся: — как организовать работу с данными и загрузку обучающего датасета, — как описать структуру нейронной сети, — как использовать уже готовые алгоритмы машинного обучения из доступных библиотек и фреймворков, — как организовать конвейер обучения сети, — как использовать предобученные глубокие сети для решения задач.
https://habr.com/ru/companies/yadro/articles/800533/
#с++_программирование #pytorch #машинное_обучение #libtorch #faceid #поиск_лиц #dlib #tripletloss #сиамские_сети #архитектура_сетей
-
Twitch and Blink Your Way Through Typing with This Facial Keyboard - For those that haven’t experienced it, the early days of parenthood are challengin... - https://hackaday.com/2022/04/09/twitch-and-blink-your-way-through-typing-with-this-facial-keyboard/ #softwaredevelopment #facialrecognition #videohacks #facemesh #keyboard #gesture #opencv #python #morse #dlib
-
#opencv #blender #b2d #b3d #dlib #animación #animation #arte #art
Listo adobo desmonetizado 🤩
Ahora posicion y todo
-
Ahora sin tanto ruido movimiento amortiguado y reconstrucción de los datos faltantes :D
#opencv #blender #b2d #b3d #dlib #animación #animation #arte #art
-
Started diving into #dlib and #openframeworks implementation of face-tracking. First step: get the damn thing working on #archlinux! Wrote a blog post detailing how I got to the first milestone: https://roosnaflak.com/tech-and-research/set-up-ofxfacetracker2-on-arch-linux/
-
For this I am using #opencv #dlib and taking inspiration from the scientific papers
In a few days I was planning to expand my article on the digital rotoscope.
I want to make a plugin for #opentoonz but I'm having trouble taking the plugins
-
Me falta algo para detectar la cabeza pero va queriendo
-
Que bueno cuando uno aprende algo que solo piensa que va a servir para divertirse y luego sirve para algo importante.
\o/
-
In Soviet Russia, Doorbell Rings You - We can imagine that the origin of the doorbell is truly ancient. if you lived in a cave, you proba... more: https://hackaday.com/2020/01/13/in-soviet-russia-doorbell-rings-you/ #facialrecognition #raspberrypi #doorbell #dlib
-
a day in #github, searching a solution for real-time 3d #facetracking (mandatory for video games in my pov). here is the report: https://polymorph.cool/2019/04/12/3d-face-tracking-state-of-the-art/
#openpose #dlib #4dface #sentimask #machinelearning #gpu #cuda #computervision @polymorphcool