] > Karol „Zal” Zalewski - Blog - http://blog.4zal.net/kategoria/praktyki/ci-task/

TASK: Koniec praktyki

2008-08-08, Piątek 14:27:16 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

TASK - Logo

Zakończyłem właśnie miesięczną (14 VII - 8 VIII 2008) praktykę w Centrum Informatycznym Trójmiejskiej Akademickiej Sieci Komputerowej (TASK). Przyznaję, iż to, co robiłem bardziej można byłoby zaliczyć do R&D, niźli typowej pracy z problemami dużej sieci. Przez cztery tygodnie nie tylko zapoznałem się z problematyką kontroli treści w sieciach komputerowych, czy też lokalizowaniem oraz rozpoznawaniem twarzy i obiektów z wykorzystaniem CCTV, ale również poznałem bardzo ciekawych ludzi.

Dlaczego praktyki, nawet bezpłatne, uważam za tak ważne w życiu studenta? Jest to spowodowane tym, iż to właśnie one w stosunkowo bezpieczny sposób pozwalają zorientować się, co chce się w życiu robić, a czego nie. Czy wybrać małą, rozwijającą się firmę (ew. samodzielnie ją założyć), czy też może międzynarodowego kolosa? A może instytucję naukową? Mając dzieci oraz zarabiając na życie rzadko kiedy można sobie pozwolić na tego typu testy. Trzeba liczyć się z konsekwencjami. A student? Student nie musi się o nic bać :-]

Lokalizowanie i rozpoznawanie twarzy oraz obiektów: Oprogramowanie

2008-08-01, Piątek 12:46:14 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Które z państw nie marzyło o tym, aby w każdym mieście, na każdym rogu znajdowała się kamera automatycznie identyfikująca wszystkich obecnych w pobliżu obywateli? Korzyści z tego typu systemu byłyby ogromne - w ciągu kilku minut można byłoby odszukać skradzione samochody, zlokalizować potencjalnych przestępców, czy też wysłać patrol do dziwnie zachowującego się Kowalskiego. Permanentna inwigilacja. Pomysł, który już niestety nie zalicza się do fikcji naukowej. Technologia ta, prężnie rozwijana, powoli wkracza do użytku codziennego. A my zabawimy się jej namiastką w naszych domach ;-)

Niniejszy wpis poruszy czystko praktyczne aspekty lokalizowania i rozpoznawania twarzy oraz obiektów. Co przez to rozumiem? To, iż poniżej zaprezentuję oprogramowanie z którego ostatnimi czasy korzystałem, a wykorzystanie którego w efektowny sposób prezentuje możliwości obecnych rozwiązań. Aby wzmocnić ten efekt warto uzbroić się w jakiś rodzaj kamerki (dobrej jakości kamera internetowa lub nawet kamera analogowa podłączona poprzez kartę wideo). Odnosząc się do teorii wspomnę jedynie, iż każde oprogramowanie służące do rozpoznawania twarzy wykorzystuje algorytmy mające na celu odnalezienie tejże i wycięcie z kontekstu, jakim jest tło. Z racji tego na rynku znacznie łatwiej znaleźć oprogramowanie prostsze, czyli służące jedynie do lokalizacji twarzy.

VeriLook FaceSDK

Na samym początku wspomnę o programie (oraz SDK) o nazwie VeriLook - komercyjnym projekcie firmy NEUROtechnology. Sam program to właściwie demo SDK (C/C++, C#, Java, Visual Basic, Delphi), które służy do rozpoznawania twarzy. Samo demo jest przeznaczone dla systemu Microsoft Windows, ale SDK radzi sobie również z Mac OS-em oraz Linuksem (C/C++). Program jest w stanie wykryć twarz znajdującą się na obrazku/wideo, zapisać ją do bazy danych i porównać z innymi, które wcześniej zostały w niej zapisane. W ten oto sposób można stworzyć prosty system autoryzacji użytkowników. Równie interesującym programem jest SentiSight tej samej firmy. Program umożliwia nauczenie się tego w jaki sposób wyglądają przedstawione mu przedmioty (źródłem obrazu jest kamera), a następnie wykrycie i oznaczenie ich w przyszłości. Nie robi to takiego wrażenia, jak poprzedni program ze względu na stosunkowo niską skuteczność, ale i tak jest godny uwagi.

SentiSight - Wiatraczek

Powyżej widzimy SentiSight w akcji. Program został nauczony do rozpoznawania i oznaczania na obrazie dwóch przedmiotów - metalowego kubka oraz komputerowego wiatraczka. Jak widać program rozpoznaje teraz zarówno wiatrak (powyżej) oraz kubek (poniżej). Aczkolwiek nic nie stoi na przeszkodzie, aby Wasza noga również została uznana przez program za wiatrak ;-)

SentiSight - Kubeczek

Darmową do wykorzystania niekomercyjnego biblioteką jest FDlib. Wspierając Matlaba i C/C++ zarówno pod Windowsem, jak i Linuksem oferuje wykrywanie wielu twarzy na obrazach. Przeznaczone dla Windowsa demo tejże biblioteki robi spore wrażenie w momencie wykorzystania dobrej jakości kamery i przy obecności dużej grupy osób :-)

FDlib

FaceCropper to prosty program (freeware) pracujący pod kontrolą systemu operacyjnego Windows. Umożliwia odnajdowanie twarzy (wielu w tym samym momencie) w plikach wideo typu avi. Nie zachwyca niestety prędkością działania, ani jakością efektów.

FaceCropper

Nie można tutaj też nie wspomnieć o otwartym OpenCV (licencja BSD, wielosystemowe SDK, C++/Visual Basic/Python). Narzędzie to umożliwia (oprócz wielu innych funkcji) zlokalizowanie i rozpoznanie twarzy przy użyciu algorytmu wykorzystującego Eigenfaces (najstarsze i najgorsze podejście). Nie udało mi się uruchomić programu przykładowego (OpenCV\samples\c\facedetect.exe w wersji Win32), ale chodzą słuchy, iż samą lokalizację wykonuje całkiem sprawnie.

Oto na co jeszcze natknąłem się podczas moich poszukiwań: faceAPI, BetaFace (m.in. SimpsonizeMe oraz MyFaceID), Luxand FaceSDK oraz dedykowana "ciekawostka". Guardia tutaj też pasuje ;-]

W przypadku większego zainteresowania opisywaną technologią warto zajrzeć na stronę Face Recognition Vendor Test na której, jak sama nazwa wskazuje, znajdują się wyniki oceny jakości rozwiązań służących do rozpoznawania twarzy.

Oczywiście, samo zagadnienie jest o wiele ciekawsze i dotyczy wielu interesujących problemów m.in. rozpoznawanie twarzy, które w miarę upływu czasu, zmieniają się (fryzura, blizny, biżuteria, czy też zwyczajne starzenie), rozpoznawanie emocji, praca w trudnych warunkach oświetleniowych itp.

[EDIT] Filtr Haar używany przy lokalizowaniu twarzy - coś dla teoretyków ;-)

Sztuczna inteligencja w służbie bezpieczeństwa

2008-07-29, Wtorek 18:08:48 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Etap moich obecnych praktyk w CI TASK-u polegający na zabawie z analogową kamerą i strumieniowaniem sygnałów audio/wideo dobiegł końca. I całe szczęście, ponieważ teraz pracuję nad czymś nieco ciekawszym.

Na trzecim piętrze nowego budynku Wydziału ETI Politechniki Gdańskiej, tuż przed drzwiami prowadzącymi do CI TASK-u znajduje się urządzenie marki Panasonic o nazwie BM-ET330. Do czego służy? Do skanowania tęczówki oka, a w związku z tym do wpuszczania do obiektu jedynie upoważnionych osób. Ale... Jak każde urządzenie tego typu czasem się myli. I jest podatny na pewne złośliwe działania. To właśnie poszukiwania sposobu na ominięcie urządzeń tego typu doprowadziły mnie do strony internetowej pracowni biometrii NASK. Na jednej ze stron BiometricLabs.pl dot. testu żywotności można przeczytać, że starsze wersje ww. urządzenia (ET100 i w mniejszym stopniu ET300) uznawały wysokiej jakości zdjęcia oczu za prawdziwe oczy. Niedługo sprawdzimy, czy i nasza wersja sprzętu jest na to podatna.

Powracając jednak do nowego zadania. Jest ono w dużej mierze związane z ww. biometria oraz sztuczna inteligencją bez której nie może się obejść biometria. Mowa o oprogramowaniu umożliwiającym odnalezienie twarzy na zdjęciu/filmie i porównanie go ze zdjęciami znajdującymi się w bazie danych. Istnieje do tego mnóstwo SDK oraz zwyczajnego oprogramowania do tego służącego, zarówno komercyjnego, jak i opartego o bardziej liberalne licencje (m.in. GPL i BSD). Problem polega jedynie na tym, iż całość specjalizuje się w lokalizacji twarzy, a z jej rozpoznaniem bywają duże problemy. Oprogramowanie Open Source typu OpenCV (rozwój zapoczątkowany przez korporację Intel) zazwyczaj, jeżeli już potrafi rozpoznawać twarz to robi to z wykorzystaniem najstarszych (przeszło dwudziestoletnich) algorytmów np. PCA/Eigenfaces, które nie radzą sobie najlepiej. Oprogramowanie komercyjne... Cóż, strony oferujące takowe nie chwalą się cenami, co oznacza, iż zaczynają się one co najmniej od 2.000 USD. Jest jeszcze jedna kategoria - prace magisterskie/doktorskie i naukowe. Są boskie! Wykorzystują najnowsze osiągnięcia, rozbudowane sieci neuronowe itp. rozwiązania z zakresu sztucznej inteligencji. Ale... Najczęściej nie są dostępne dla szerszej publiczności, ponieważ są przygotowywane do wdrożenia do komercyjnych produktów. Ich testy można jednak znaleźć w Internecie ;-]

Dochodzę powoli do wniosku, że wybór dwóch specjalności związanych z inżynierią biomedyczną oraz aplikacjami rozproszonymi był całkiem niezłym wyborem. Zarówno jedna, jak i druga specjalność umożliwiają zapoznanie się ze sztuczną inteligencją i wykorzystanie jej do typowo ludzkich zadań. Już nie wspominając, iż sama teoria funkcjonuje na granicy dwóch światów: inżynierskiego i humanistycznego.

Na samo zakończenie wspomnę jedynie, iż mam ochotę zapoznać się w najbliższym czasie z RoboCode i napisać małe co nieco na jego temat w kategorii Techblog ;-)

PS. Gdybyście kiedykolwiek chcieli spod Linuksa przemielić MBR dysku twardego tak, jak to robi windowsowy fdisk /mbr to polecam wykorzystać polecenie install-mbr (instalacja pod Debianem/Ubuntu sprowadza się do komendy apt-get install mbr). Kilkanaście minut się z tym męczyłem, nim dopadłem odpowiednie informacje w Google ;-)

Trochę historii znalezionej na chodniku

2008-07-24, Czwartek 17:17:06 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Koniec drugiego tygodnia praktyk w TASK-u zapowiada się bardzo przyjemnie. Dziś miałem okazję nie tylko obejrzeć w działaniu spawarkę światłowodową (Fujikura), reflektometr oraz dowiedzieć się dlaczego włókien światłowodowych nie przecina się "fajnymi" nożyczkami ;-)

Praktyki, jak praktyki, ale spójrzcie na to, co znalazłem idąc jedną z ulic w pobliżu Politechniki. Poznajecie?

Commodore 1530 C2N - karton po magnetofonie znaleziony na ulicy

Tak! Kartonowe opakowanie po magnetofonie Commodore (instrukcja obsługi). Sprzęt ten ma już zapewne ponad 15 lat. I nadal jest dostępny na Allegro - chyba w końcu się skuszę na własnego C64.

Filtrowanie niepożądanych treści w Internecie: Krótki przegląd oprogramowania

2008-07-17, Czwartek 13:35:57 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Na samym wstępie chciałbym zaznaczyć, iż opisywane poniżej rozwiązania zupełnie nie radzą sobie z szyfrowanymi połączeniami (tunelowanie po SSH, CGI Proxy z SSL, rozwiązania wykorzystujące JavaScript itp.), co można zauważyć korzystając np. z Vtunnel. Niektóre z nich (takie jak np. DansGuardian2) korzystając z blacklist i czegoś na wzór prostej sieci neuronowej (wykorzystują keywordy, ale z wagami dodatnimi i ujemnymi), aby uniemożliwić połączenie ze stronami oferującymi funkcjonalność proxy, co eliminuje część zagrożenia. Rozwiązania serwerowe umożliwiają zablokowanie pewnych portów i przekierowanie innych na 80 (poprzez iptables), co nie jest polecanym rozwiązaniem.

Całość opisuję ze względu na realizowany w trakcie praktyk projekt polegający na wdrożeniu systemu kontroli treści dla szkół. Sam zdecydowałem się na rozwiązanie oparte na DansGuardian2, Squidzie, iptables znajdujących się na linuksowym serwerze filtrującym cały ruch na linii Internet-szkoły. Zalety? Darmowe, skalowalne i łatwe do zarządzania rozwiązanie z największymi możliwościami konfiguracji i najlepszymi sposobami filtrowania danych. Dodatkowo umożliwia podpięcie skanera antywirusowego tak, aby np. chronić całą sieć. Wady? Język polski nie jest mocną stroną tego oprogramowania, a do tego sam DansGuardian2 bywa nazbyt restrykcyjny. Ale i tak jest lepszy od polskiego Beniamina.

Jedynym darmowym (użytkownicy domowi i szkoły), polskim programem do ww. zadania, jaki trafił w moje ręce był Beniamin. O programie było głośno ze względu na słowa kluczowe oraz listę stron, które udało się z niego wyciągnąć. Powiedzmy krótko i bez zbędnej dyskusji - całość była kontrowersyjna. Sam program ma ubogą dokumentację i w żaden sposób nie chwali się tym, jak działa. Ja sam odkryłem, wykorzystuje keywordy (prymitywnie - jak tylko pojawi się dane słowo zamyka dostęp do danej strony) oraz blacklistę o której trudno cokolwiek powiedzieć. Potrafi zablokować dostęp do Wikipedii. Równie ważne jest to, iż działa na pojedynczych stanowiskach - wyobrażacie sobie dodanie Wikipedii do białej listy na wszystkich komputerach? Brr... Do tego funkcjonuje jedynie pod Windowsem. Na całe szczęście jest niezależny od przeglądarki (najprawdopodobniej filtruje HTTP). Zaletą i to dużą jest cała reszta funkcjonalności, jaką posiada - np. ograniczenie dostępu do Internetu w danych godzinach. Do domu zapewne można go nawet polecić - gorzej, jak użytkownik wie, jak uruchomić inny system na chronionym komputerze.

Cała reszta programów (tj. Cenzor, Opiekun, X-Guard II itp.) jest płatna. Taki np. Cenzor nie posiada wersji demo. Link do wersji demo Opiekuna miał przyjść mailem - do tej pory nie doszedł. O X-Guard II nawet nie warto wspominać - program niestabilny, ubogi w funkcjonalność, a do tego działa w oparciu o kontrolę przeglądarki (tj. jest zależny od przeglądarki). Zgadnijcie, co próbuje zrobić w momencie trafienia na "złą stronę"... Nie zgadniecie - usiłuje zamknąć przeglądarkę. Ba! Trudno tego nie zauważyć - szczególnie, gdy ma się właśnie kilka kart otwartych w przeglądarce (skutkuje to pytaniem o to, czy chcę je zamknąć).

O zagranicznych nie mam zamiaru wspominać. Koszta są całkiem spore ;-] Interesującym rozwiązaniem jest Untangle Web Filter, ale niestety nie sprawdza się w polskiej rzeczywistości.

Abstrahując od tematu - uzależniłem się dziś od Slashdota... A w Gdańsku pojawi się IBM :-) Acha! Jest to też mój pierwszy wpis w całości napisany przez PSI i wysłany z wykorzystaniem Jabbera/XMPP.

Galera: Najszybszy komputer w Polsce

2008-07-16, Środa 18:12:33 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Nie dalej, jak wczoraj, wspomniałem o tym, iż mam zamiar zrobić kilka zdjęć siebie samego na tle Galery znajdującej się w CI TASK (najszybszy komputer w Polsce - 45 na Świecie). Rano doszedłem do wniosku, iż nie jestem jeszcze aż takim narcyzem, aby robić sobie samodzielnie zdjęcia. Do tego okazałem się być niefotogeniczny :-> Ale Galerze zdjęcia zrobiłem! O!

Galera - najszybszy komputer w Polsce - terminal dostępowy

To, co widzicie powyżej, to terminal z którego można uzyskać dostęp do Galery. Również i przez to pomieszczenie należy przejść, aby móc dostać się do hali z superkomputerem. Jak sami widzicie - całość jest przeszklona, co negatywnie odbyło się na jakości zdjęcia.

Galera - najszybszy komputer w Polsce - terminal dostępowy

Między pomieszczeniem komputera, a murami budynku znajdują się dwa korytarze - lewy i prawy. Ja postanowiłem przejść się lewym i zrobić jeszcze jedno zdjęcie terminala.

Galera - najszybszy komputer w Polsce - terminal dostępowy oraz część pomieszczenia superkomputera

Idąc dalej zrobiłem jeszcze raz zdjęcie pomieszczenia z terminalem. Tak na wszelki wypadek ;->

Galera - najszybszy komputer w Polsce

Prawda, że jest fajny? Taka duża zabawka, która przyczyni się do tego, aby nam wszystkim żyło się lepiej.

Galera - najszybszy komputer w Polsce

Jeszcze jedno i ostatnie spojrzenie na Galerę. I pomyśleć, że na tym to w przyszłości hulać będzie BeesyCluster :-)

Pierwszy dzień praktyki w CI TASK-u

2008-07-14, Poniedziałek 18:38:05 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Dzisiaj pierwszy raz miałem okazję wejść do pomieszczeń znajdujących się na 3 i ostatnim piętrze nowego gmachu Wydziału ETI Politechniki Gdańskiej. I ku mojemu rozczarowaniu nie skorzystałem w tym celu z czytnika tęczówki oka. Co do samej praktyki - trafiłem do zespołu d/s Sieci, jednego z dwóch zespołów działających w ramach Centrum Informatycznego TASK-u. Zadanie bojowe - stworzyć lub wykorzystać już stworzoną aplikację do stworzenia filtrów niedozwolonych treści, które miałyby znaleźć zastosowania podczas dołączania do TASK-u szkół podstawowych.

Nim jednak przystąpiłem do realizacji zadania miałem okazję pobawić się routerami CISCO, światłowodem oraz transceiverami. Krótka (zarazem moja pierwsza) przygoda ze "światłem" polegała na skręceniu routerów i sprawdzeniu, czy z lekka zmodyfikowany sprzęt (gniazdka przerobione z dwóch włókien jednomodowych na jedno włókno wielomodowe) dobrze się sprawuje. I co najdziwniejsze - działał ;-)

Powracając jednak do głównego zadania - już na samym wstępie uznałem, iż posiadam zbyt mało czasu i umiejętności, aby stworzyć system filtrujący przesyłaną treść pod kątem zawartości nieodpowiednich dla dzieci materiałów. A nawet jeśli to byłby to system oparty tylko i wyłącznie na tzw. blacklists, które posiadają wiele słabości (wyobraźcie sobie filtrowanie Web 2.0 oparte tylko i wyłącznie na blacklistach). A tutaj potrzebne jest jeszcze co najmniej filtrowanie pod kątem występowania słów kluczowych w treści. Zacząłem jednak od szukania ogólnie dostępnych "czarnych list" z liberalnymi licencjami. Wiele ich nie znalazłem. Natomiast natknąłem się na dwa ciekawe rozwiązania oparte na Squidzie. SquidGuard bazujący jedynie na blacklists oraz znacznie ciekawszy DansGuardian 2, który dodatkowo oferuje prawdziwe sprawdzanie zawartości (przypisując słowom kluczowym pewne wagi oraz poprzez odpowiednią klasyfikację stron). Kilka komend i na moim taskowym Ubuntu pojawił się w pełni działający DansGuardian z wymaganymi listami. Radzi sobie całkiem nieźle, chociaż można mieć pewne zastrzeżenia, co do współpracy z polskojęzycznymi wersjami stron. Nie poradzi sobie też z pewnością z szyfrowanymi połączeniami (tunele tudzież HTTPS), czy też protokołem innym, niż HTTP, ale to też nie taki duży problem. Kilka wpisów w iptables (przekierowania oraz blokady portów), a system poradzi sobie całkiem nieźle z uczniami podstawówek i to bez konieczności ingerencji w stacje klienckie ;-P

Abstrahując od samego zadania - widziałem Galerę. Robi wrażenie stojąc w sterylnym, przeszklonym pokoju w samym centrum inteligentnego budynku. Mam zamiar zrobić sobie zdjęcie stojąc na jej tle ;-D

Galera

2008-04-07, Poniedziałek 01:16:32 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

System is ready! 45 miejsce w TOP500 :-)

Oficjalne otwarcie nowej siedziby CI TASK

2008-04-02, Środa 22:14:59 +0200, autor Karol „Zal” Zalewski, licencja LPRCTKC

Już jutro (tj. czwartek - 3 kwietnia) nastąpi oficjalne otwarcie nowej siedziby CI TASK znajdującej się w Nowym Gmachu Wydziału Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej. Warto wspomnieć, iż w otwarciu uczestniczyć będzie Paul Otellini - CEO Intela. Trzeba przyznać, iż Intel całkiem ładny "komputerek" nam skonstruował - mowa o Galerze ;-)

Uroczystość odbędzie się jutro o 17.oo w Nowym Gmachu WETI.

Let's start talking...

2008-01-25, Piątek 23:50:44 +0100, autor Karol „Zal” Zalewski, licencja LPRCTKC

I made up my mind! After a few days of thinking I decided to publish notes on my blog only in English. I am going to make an exception for comments. Some of you might say, that my level of language is not enough to write in it and I agree with that. My language skills are even worse than my social skills. But... there is a method in this madness. It is a good opportunity to self improvement, so if you notice any mistake in my note - please inform me. I hope that you will understand me ;>

Few days ago I prepared and delivered contract (unpaid internship) to CI TASK. I expected refusal, but they accepted my application! It will take place between 14 VII and 22 VIII (six weeks), so I will have also time to enjoy my summer holidays. I am so happy!

|