SKARBY MUZEUM — aplikacja webowa opar­ta na au­to­ma­tycz­nej de­tek­cji obra­zu

Wstęp

Upalny koniec maja 2018 r., Warszawa. Muzeum Narodowe organizuje w swoich murach pierwszy HackArt: hackathon, którego zadaniem jest połączenie na pozór odległych sobie dziedzin: muzealnictwa, historii sztuki i sztucznej inteligencji. Jeden weekend, 8 zespołów, 40 uczestników wyłonionych spośród nadesłanych 150 zgłoszeń, a wśród nich nasz zespół — “DS”: Piotr Migdał, Aleksandra Rutkowska, Karol Majek, Paweł Zięcina i Agata Chęcińska. “DS” czyli data science: dziedzina, którą większość z nas zajmuje się na co dzień.

Idea

HackArt miał na celu stworzenie narzędzi: aplikacji, botów, wtyczek, itp., opartych na sztucznej inteligencji, które pomogłyby w rozwiązaniu wyzwań określonych przez Muzeum. Nasz pomysł budowaliśmy w trakcie hackathonu od podstaw, a sam proces twórczy był dość burzliwy i momentami stresujący. Zdarzało się, że początkowo “genialny” pomysł nie przechodził próby ognia. Skupiliśmy się na konkretnej grupie docelowej, jaką byli rodzice z dziećmi i na pytaniach:

Jak zachęcić rodziny do odwiedzania Muzeum?
Co zrobić, aby wizyta w Muzeum stała się dla dzieci ciekawa?
Jak zainteresować dzieci i rodziców zasobami Muzeum?

Przez pierwsze godziny staraliśmy się krytycznie podchodzić do każdego pomysłu. Wierzyliśmy, że najlepsze z nich są zazwyczaj proste, a jednocześnie kompleksowe. Chcieliśmy, aby nasze rozwiązanie odpowiadało na kluczowe pytania:

Dlaczego ktoś chciałby użyć naszego narzędzia?
Czym to narzędzie wyróżnia się od innych?
Co narzędzie daje użytkownikowi, a co Muzeum?
Jakie są jego zalety, a jakie słabe punkty?

Gdzieś po drodze, w gorącej atmosferze i niezwykłych salach Muzeum, pojawiło się wspomnienie wrocławskich krasnali, czyli znanej i w zamyśle prostej atrakcji dla rodzin z dziećmi. Dzieci z mapą w ręku szukają krasnali, rodzice zwiedzają miasto — zabawa typu scavenger hunt. Podobną rozrywkę oferują bijące rekordy popularności gry w rozszerzonej rzeczywistości, takie jak Ingress czy PokemonGO. Gracze ze smartfonami w ręku zwiedzają miasto walcząc o portale do innego świata lub poszukując pokemonów kryjących się w najmniej spodziewanych miejscach.

Postanowiliśmy przenieść ten model na teren Muzeum. Dlaczego nie potraktować go jako miejsca, w którym dzieci szukają skarbów? I tak powstał pomysł na “Skarby muzeum”: grę, w której dziecko i rodzic dostają mapę z fragmentami obrazów należącymi do konkretnej kategorii (np. zwierzęta, drzewa) i muszą odnaleźć w Muzeum odpowiadające im obrazy. Sam przepis na grę był prosty, chcieliśmy jednak, aby była ona zindywidualizowana i zmienna. Ważne było, aby rodzice z dziećmi mogli z niej korzystać wielokrotnie a rodziny szukające tych skarbów w Muzeum podążały innymi “ścieżkami”. Jak to zrobić, i jak to zautomatyzować? Rozwiązaniem problemu okazało się wykorzystanie sztucznej inteligencji.

Wykonanie

Sztuczna inteligencja pozwala zautomatyzować wiele czynności, szczególnie tych, które są dla człowieka żmudne i czasochłonne. Rozpoznanie obiektów na zdjęciach ulicznych, satelitarnych, analiza diagramów, rozpoznanie i analiza tekstu — zastosowań jest wiele. Jednym z nich stało się dla nas automatyczne rozpoznawanie, co znajduje się na obrazach Muzeum.

Modele sztucznej inteligencji nie mogą działać bez danych. Aby wykorzystać potencjał AI musieliśmy wiedzieć, jakie dane mieliśmy do dyspozycji w trakcie hackathonu i jakie dane moglibyśmy w przyszłości dostać od Muzeum. Wszyscy uczestnicy hackathonu mieli dostęp do 200 zdjęć obiektów muzealnych, z których mogli skorzystać w trakcie realizacji swoich pomysłów.

Nasze rozwiązanie sprowadza się do stworzenia bazy określonych fragmentów obrazów np. zwierząt, drzew, domów, stóp itp., z której dalej moglibyśmy losować ścieżki poszukiwania skarbów wg kategorii. Taka baza może być obszerna i można do niej dołączyć elementy z nowych ekspozycji, jeśli są one zdigitalizowane. Jedynym ograniczeniem w wyborze fragmentów był w tym przypadku zbiór elementów rozpoznawanych przez model object detection, którego zamierzaliśmy użyć.

Analiza obrazów

Weźmy na przykład obraz Antoniego Brodowskiego “Parys w czapce frygijskiej”. Jak może zadziałać model object detection w tym przypadku?

Na obrazie rozpoznamy np. głowę, dłoń, czapkę i człowieka, razem z określeniem obszarów, na których występują te elementy (współrzędne x,y prostokąta) i prawdopodobieństwem (pewność, z jaką model znalazł dany element, p) . W ten sposób tworzymy słownik fragmentów:

{kategoria_1: obraz_id, wycięty element, (x, y), prawdopodobieństwo}

Modele object detection (a także wiele innych) można znaleźć w open-sourcowych repozytoriach kodów na GitHubie. Do naszego rozwiązania użyliśmy jednego z modeli z repozytorium Tensorflow Models (Google Vision API), który pozwala na szybką detekcję i wyszukuje 545 kategorii. Kod umożliwiający znalezienie obiektów na obrazach ze zbioru znajduje się na naszym repozytorium stared/hackart-you-in-artwork.

Schemat działania

Przygotowanie słownika fragmentów i ich kategorii stanowiło jedynie część zadania. Równolegle czekała nas praca związana opracowaniem dema aplikacji. Musieliśmy skupić się na podstawowych funkcjonalnościach, aby zdążyć z budową szkieletu rozwiązania:

Aplikacja ma docelowo działać automatycznie. Po podaniu nowego zbioru zdjęć tworzony jest słownik kategorii (z dodatkowymi filtrami dla poprawienia jakości otrzymywanych elementów), z którego potem wyświetlane jest użytkownikowi 5 kategorii do wyboru. W trakcie hackathonu mieliśmy limitowany zbiór zdjęć ( → mniejsza wiarygodność automatycznie wygenerowanych elementów) i ograniczenia czasowe, w związku z tym część zadań była przez nas nadzorowana. Np. sprawdziliśmy jakość wygenerowanych elementów i dokonaliśmy złączenia kilku kategorii w jedną: cat, dog, fish, … → animals.

Zdecydowaliśmy się na stworzenie aplikacji webowej a do jej stworzenia użyliśmy Vue.js. Założyliśmy, że “Skarby muzeum” będzie grą, w którą można grać:

  • “analogowo”: ściągając pdf-a z fragmentami obrazów i informacją, w których salach się znajdują → wyznaczoną “ścieżką” przez sale; w tym przypadku gracz nie musi używać smartfona czy też tabletu; co może być ważne dla rodziców i szkolnych wycieczek.
  • elektronicznie: z użyciem smartfona albo tabletu, z analogiczną informacją jak powyżej.

W obu przypadkach użytkownik najpierw wybiera kategorię, a następnie otrzymuje listę fragmentów (losowaną), które musi znaleźć na obrazach w Muzeum:

W trakcie hackathonu udało nam się stworzyć podstawową wersję aplikacji, która pozwala na wybór kategorii i pokazuje odpowiednie fragmenty. Zabrakło nam czasu na funkcjonalność związaną z mapą i pdf-em. W trakcie wydarzenia nie mieliśmy metadanych dotyczących lokalizacji obrazów ze zbioru, ale dane te można dodać na dalszym etapie prac.

Efektem naszych wysiłków stało się demo:

Oraz video pokazujące jego działanie:

Koncepcje gry

Gra “Skarby muzeum” w swojej podstawowej formie ma polegać na poszukiwaniu obrazów, a w dalszym rozwoju mogłaby być wzbogacona o weryfikację, nagradzanie, a także grywalizację. Określenie zasad gry, celów i motywacji było bardzo istotne i wiązało się z określeniem wieku uczestników gry. Innych wyzwań oczekuje 5-latek, a innych 12-latek. Przewidywaliśmy, że gra może być ciekawa także dla dorosłych — można tworzyć ścieżki dedykowane dojrzałym użytkownikom.

Wersja podstawowa

Wersja podstawowa jest grą, w której uczestnik dostaje listę fragmentów do wyszukania na obrazach. Założyliśmy, że dla ułatwienia podana będzie jedynie informacja, w których salach znajdują się obrazy — źródła fragmentów (dotyczy to każdej z wersji). Kolejność wyświetlania fragmentów może zostać ułożona wg kolejności sal.

Taka gra nie zakłada weryfikacji, czy użytkownik znalazł obrazy czy nie, nie przewiduje także nagród. Może to być jej minusem: dziecko może chcieć zostać w jakiś sposób nagrodzone za wysiłek, choćby symbolicznie.

Wersja zaawansowana

Wersja zaawansowana wprowadza weryfikację i — potencjalnie — nagradzanie. Mieliśmy kilka pomysłów na wprowadzenie tych elementów i dalszy rozwój. Poniżej, kilka z nich.

Weryfikacja

Metadane — Aby potwierdzić odnalezienie obrazu, gracz musi wprowadzić informację typu autor, rok powstania, itd. Tego typu dane mogą być w łatwy sposób wprowadzone do słownika — a pytania generowane na ich podstawie.

Zdjęcie — Bardziej zaawansowana forma weryfikacji, to prośba o wykonanie zdjęcia-obrazu lub notki informacyjnej. Aplikacja mogłaby być wzbogacona o moduł porównujący obraz sfotografowany ze źródłem fragmentu. To rozwiązanie jest dużo bardziej złożone technicznie. Mogą pojawić się także sytuacje, gdy fotografia jest kiepskiej jakości i uniemożliwia poprawną weryfikację.

Podpowiedzi

Metadane — Podpowiedź dotycząca np. malarza.

AI: generowanie opisów — Wykorzystanie algorytmów generujących podpisy do zdjęć: określające kontekst tego, co jest na obrazie. Może to być ciekawy dodatek, chociaż nie zawsze działający poprawnie jako podpowiedź.

Nagrodą za poprawne wyszukanie obrazów mogłoby być otrzymanie naklejek, lub innych drobnych gadżetów oraz odznaka, którą można udostępnić w mediach społecznościowych.

Wersja dla grup

Gra może być także rozwinięta pod kątem pracy grupowej. Docelowo mogłyby z niej korzystać np. szkoły. Jeden z pomysłów zakłada także grywalizację:

  • dwie grupy podążają odrębnymi ścieżkami, porównując na koniec czas przejścia,
  • dwie grupy podążają ścieżkami, które mają wspólny ostatni fragment. Dzięki temu uczestnicy mogą spotkać się na końcu gry (kto pierwszy?).

Gry mogłyby zostać zaproponowane także osobom dorosłym: dedykowane cykle np. “Usta, usta” czy “Pośladki na przestrzeni wieków”. Tego typu wydarzenia dedykowane dorosłym cieszą się często bardzo dużym zainteresowaniem.

Rozwój

Obecnie pracujemy nad wdrożeniem rozwiązania pilotażowego, które będzie oparte o jedną z ekspozycji Muzeum — zbiory Galerii Sztuki XIX Wieku. Chcielibyśmy stworzyć podstawową wersję gry, która mogłaby być przetestowana pod kątem poziomu trudności oraz innych współczynników.

Swoje wsparcie techniczne zaoferowała nam firma deepsense.ai, która specjalizuje się w budowaniu rozwiązań AI.

Autorzy: Piotr Migdał, Aleksandra Rutkowska, Karol Majek, Paweł Zięcina i Agata Chęcińska.