Sqrty - Soft - Suceava - 2007 Nationala

Informatii generale

  • Categorie: Soft
  • Judetul: Suceava

Descriere

Sqrty este un soft utilitar ce are ca prim scop monitorizarea video a unui perimetru, in sensul înregistrării (la alegerea utilizatorului) feţelor umane sau a mişcării de orice fel. Acest program analizează imaginile primite de la camera video, înregistrând cadrul respectiv, în cazul detectării unei mişcări sau a unei feţe pentru redarea ulterioară. (Consider că detectarea feţelor este punctul forte al programului)

Tehnologii

.NET 2.0, C#, avicap32

Cerinte sistem

CPU 2GHz sau mai bun
256MB RAM sau mai mult
MS Windows XP
.NET 2.x
Camera video/web
200MB liberi pe Hard disk

Realizatori

Ionita Andrei Lucian

  • Scoala: CN Petru Rares Suceava
  • Clasa: XII
  • Judet: Suceava

Screenshots


Permite monitorizarea cu mai multe camare video a unuia sau mai multe perimetre? Se pot afisa toate camerele video simultan in aceeasi fereastra?

Stie sa lucreze cu o placa de captura video necesara unui sistem de supraveghere format din mai multe camere video?

Poate prelua imagini de pe retea de la un Internet Camera?

Permite inregistrarea sunetului din perimetru daca camera permite acest lucru?

In ce format inregistrezi imaginile video? Sunt comprimate sau se poate alege cumva optiunea asta?

Uh… cum detectezi fete umane?

@Mega_Bytu: Cam la toate intrebarile tale, raspunsul e nu. :smile: E un program simplut.



@wickedman: Cu o “cascada” de filtre antrenate cu AdaBoost si folsind drept caracteristici varianta discreta a undietelor Haar.



Nu voi putea participa live la Galaciuc sa prezint programul, dar mi s-a spus ca si programele trimise prin internet vor fi jurizate. In aceste conditii, as vrea sa stiu cum ar trebui sa procedez. As avea mai multe de explicat si eventual de aratat sursa.



P.S. Sunt singurul in situatia asta?

@wickedman:



Este folosit algoritmul Viola-Jones. Am avut ocazia sa vad programul si despre asta este vorba.

Nu cunosc rezultatele si terminologia domeniului asta.

E cam lung white-paper-ul despre Viola-Jones.



Presupunand ca ar trebui sa explici unei comisii ce fel functioneaza acest algoritm de recunoastere faciala, cum ai explica?

Wow, proiectul asta e chiar iesit din tipare. Mi se pare ceva nou si foarte original. Am citit mai multe pentru cultura mea generala despre filtrele/metodele amintite mai sus si am observat ca multe dintre ele ofera o multime de posibilitati, cum ar fi face-profiling si feature-detection.



E pacat ca nu vei putea prezenta softul la fata locului. Si ca o sugestie ti-as putea spune sa dai mai multa atentie interfetei, intrucat conteaza si cutia/ambalajul, nu doar continutul (care aici s-ar putea spune ca e consistent).

Krueger

Wow, proiectul asta e chiar iesit din tipare. Mi se pare ceva nou si foarte original.



Multumesc, asta e reactia pe care o doream. :smile:

wickedman

Presupunand ca ar trebui sa explici unei comisii ce fel functioneaza acest algoritm de recunoastere faciala, cum ai explica?



Pai nu stiu in ce conditii se face evaluarea mea. Si am dubii ca voi fi luat in considerare.

Algoritmul functioneaza cam asa:

Fiecare patrat cu latura de cel putin 48 de pixeli din imagine se trece succesiv prin filtrele cascadei. Daca un singur filtru respinge imaginea (considera ca nu este fata) atunci imaginea e respinsa si de cascada, se returneaza 0 si nu se mai trece imaginea prin celelalte filtre. Acesta este aspectul care ii permite algorimului o viteza mare, intrucat fiecare filtru respinge 50-80% dintre imaginile care ajung la el.

"Caracteristicile" folosite de algoritm sunt varianta discreta a undietelor Haar. O caracteristica este reprezentata printr-o zona dreptunghiulara.
------------------
| |
| + |
| |
|----------------|
| |
| - |
| |
------------------


Pentru a obtine valoarea caracteristicii, se aduna toti pixelii (valoarea intensitatii luminii intr-un punct, intrucat imaginea analizata este grayscale) din zona cu + si se scad cei din zona cu -. Cele doua dreptunghiuri lipite au arii egale. Alte caracteristici mai sunt:

+++---
+++---
+++---

++--
++--
--++
--++

---++++++---
---++++++---
---++++++---

-------
-------
+++++++
+++++++
+++++++
+++++++
-------
-------

si chiar

------
------
--++--
--++--
------
------
aici valoarea + se inmulteste cu 8 pentru a obtine o "diferenta ponderata".

Caracteristicile se deosebesc prin coordonate, lungime si latime (acestea sunt independente dar se pastreaza aspectul)



Un clasificator slab (CS) este reprezentat prin doi parametri: o valoare prag V(sa zicem) si o caracteristica c. Daca valoarea caracteristicii c intr-o imagine I este mai mare decat valoarea prag V, spunem ca imaginea are acea caracteristica.

Astfel:

class CS 
{
int i;
int val;
public int eval(Imagine I)
{
daca (valoarea caracteristicii i corespunzatoare imaginii I > val)
returneaza 1 ; altfel returneaza 0;
}
}


Consideram cate un CS pentru fiecare combinatie caracteristica/prag folosita.

Un clasificator puternic (CP) este un ansamblu de CS-uri. Intr-un CP, fiecarui CS ii apartine o valoare, sau o pondere. Daca suma ponderilor caracteristicilor specifice imaginii este mai mare decat o valoare prag P, atunci CP-ul considera imaginea o fata. Astfel:

class CP
{
int nr; // numarul CS
float P; // prag
float[] ponderi; // vectorul de ponderi
CS[] cs; // vectorul de CS
public int eval(Imaginea I)
{
float sum=0;
for(i=0;i<nr;i++) if (CS[i].eval(I)) sum+=ponderi[i];
...
return 0;
}
}
// e o mica eroare in redarea codului, imi mananca un rand
sed "s/.../if (sum>P) return 1;"


CP-ul este "filtrul" mentionat mai sus.

Daca este nevoie, voi prezenta si algorimtul prin care a fost antrenata cascada. De fapt aceasta e partea grea..

hei tc :smiley:



la Lugoj ai avut mici probleme

ai grija sa nu se intampe si aici pt ca nu cred ca aici se mai acorda a doua sansa si ar fi pacat pentru proiectul tau :confused:



totusi, fata de varianta aia ai mai adus ceva imbunatatiri? :question:

Dupa cum am zis, alegerea unei astfel de teme poate fi doar de laudat. Este ceva nou pentru Infoeducatie. Totusi, nu ma pot abtine sa nu remarc doua lucruri:



1. Interfata nu este prea prietenoasa/atragatoare/profesionala.

2. Softul tau pare mai degraba o sectiune dintr-un proiect de cercetare, similar cu:



http://www.lienhart.de/Source_Code/WinMoca.zip



sau



http://www.lienhart.de/Source_Code/source_code.html



El nu ofera niciuna dintre facilitatile asociate cu alti algortimi/utilitare face-detection (stocarea fetelor unice intr-o baza de date, identificarea caracteristicilor de sex/varsta, optiuni de sortare/cautare/izolare). Sa spunem ca folosesc softul tau intr-un supermarket (neglijand problema camerelor multiple) si la sfarsitul zilei vreau sa am cateva poze cu fiecare client ( in sensul ca nu-i fac poza la fiecare cadru); pentru asta ar trebui sa izolezi cumva fetele, incat sa nu apare 50 de poze pentru o persoana care sa plimbat 2 secunde prin fata camerei. De fapt, ce ai implementat tu este un algoritm foarte puternic, dar ii lipseste invelisul. Imi dau seama ca, intr-adevar, partea de antrenare/calibrare a filtrelor este cea care da bataie de cap si efortul ESTE de apreciat. Totusi, metaforic vorbind, tu ai construit (de la zero?) un motor Ferarri V12, dar n-ai sasiu, capota, ambalaj, carcasa - lucrurile care ar face masina practica, viabila pentru utilizare concreta.



Astfel, in ciuda valorii academic-demonstrative a programului, acesta nu-si poate gasi de sine-statator aplicarea intr-un sistem real de supraveghere.



Eu iti urez multa bafta si iti sugerez sa dai mai mare atentie interfetei, facilitatilor asociate algoritmului, impactului pozitiv asupra utilizatorului si, in special, finalitatii programului.



Toate cele bune!



PS. Ce inseamna sqrty ?

Cred ca vrea sa fie o abreviere smechera de la “security” se-cu(=q)-rity…minus ink 2 litere :bulb: :question: :confused:?

@Krueger: da, sunt constient de toate detaliile astea, dar mai nu am ce sa fac. Algoritmul asta trebuia sa faca parte dintr-un program mai avansat, de recunoastere a fetelor, dar nu am mai avut timp sa lucrez la el din pricina bacului. Totusi am zis ca nu am ce pierde daca-l trimit si la Infoeducatie.



A, si numele de “Sqrty” mi-a venit intr-o dimineata pe la 3-4, ca treubuia sa-l prezint a doua zi si nu aveam nume. Si da, vine de la security.