Wie wir den Hackathon nicht gewonnen haben

Vom 30. November bis 2. Dezember fand in Moskau der PicsArt AI-Hackathon mit einem Preisgeld von 100.000 US-Dollar statt. Die Hauptaufgabe bestand darin, eine KI-Lösung für die Verarbeitung von Fotos oder Videos zu erstellen, die in der PicsArt-Anwendung verwendet werden kann. Ein Arbeitskollege (zu dieser Zeit), Arthur Kuzin, bot mir die Teilnahme an, da er mich an der Idee interessiert hatte, persönliche Fotos von Benutzern unter Wahrung von Details (Mimik usw.) zu anonymisieren. Arthur rief auch Ilya Kibardin an - eine Studentin am Moskauer Institut für Physik und Technologie (jemand anderes musste Code schreiben). Der Name wurde sehr schnell geboren: DeepAnon.



Dies wird eine Geschichte über unsere Entscheidung sein, seine Abbau Entwicklung, Hackathon und wie nicht Sie müssen sich an die Jury anpassen.


Zum Hackathon


Es gab drei Möglichkeiten, um zum Hackathon zu gelangen. Die erste besteht darin, in die Top 50-Rangliste für die Aufgabe der Gesichtssegmentierung einzusteigen - „Datascience Genius“. Die zweite besteht darin, sich sofort in einer Gruppe von bis zu 4 Personen zusammenzuschließen und ein funktionierendes MVP zu zeigen - ein „peppiges Team“. In der letzteren Version war es notwendig, einfach eine Beschreibung seiner brillanten Idee zu senden. Wir beschlossen, keine Zeit zu verschwenden und sofort, eine Woche vor dem Hackathon, MVP zu machen. Nun, im Allgemeinen haben wir entschieden, dass sie cool sind, also sind alle Tima in die Top 10 der Rangliste und folglich inzeman gekommen.



Die Hauptidee unseres Produkts lautet wie folgt: Menschen teilen gedankenlos Fotos mit sich selbst (manchmal nicht ganz legal) in sozialen Netzwerken, die sie später bereuen können oder für die sie in Zukunft sogar bestraft werden können. Um sich zu schützen, können Sie Ihr Gesicht mit „Quadraten“ zensieren und den Hintergrund beschönigen. Aber dann wird nicht nur das Gesicht verborgen, sondern auch die Emotionen darauf, und der Hintergrund wird verfälscht. Um Emotionen im Gesicht und auf Objekten im Hintergrund zu erhalten, ändert unsere Anwendung alle Gesichter auf dem Foto und macht die Hintergrundkartonierung. Und damit eine Person nicht an Kleidung erkannt werden kann, wird sie durch eine andere ersetzt.



In einer Woche haben wir fast alles geschafft, was wir geplant hatten. Für jede Stufe wurde ein separates neuronales Netzwerk verwendet (und manchmal sogar mehrere). Zuerst waren alle Gesichter auf dem Bild und wurden durch dasselbe Promi-Gesicht ersetzt - dafür wurde eine ähnliche Lösung wie DeepFake verwendet. Dann wurde mit Hilfe der menschlichen Segmentierung der Hintergrund getrennt und die Stilübertragung auf den Cartoon (Rick und Morty) durchgeführt. In der letzten Phase gab es eine Segmentierung verschiedener Teile der Kleidung und deren Wechsel - eine zufällige Farbverschiebung im HSV-Raum, da die Jury keine Zeit hatte, den Stil zu übertragen, bevor der MVP gezeigt wurde.



In jeder Phase traten technische Schwierigkeiten auf. Beispielsweise konnten alle DeepFake-Implementierungen auf einem Github nur ein bestimmtes Gesicht X in ein bestimmtes Gesicht Y verwandeln. Bei dieser Formulierung des Problems werden viele Fotos von zwei Personen benötigt. Der einfachste Weg, einen solchen Datensatz zu erfassen, besteht darin, ein Video der Leistungen einer Person zu finden, in dem die meiste Zeit nur sie gezeigt wird, und mithilfe der Gesichtserkennung ein Foto zu schneiden. Das Hauptaugenmerk unserer Idee lag genau darauf, dass es möglich ist, aus jeder Person ein und dasselbe Gesicht Y zu machen. Wir haben versucht, viele Gesichter aller Art aus dem CelebA-Datensatz anstelle einer Person X zu verwenden, und glücklicherweise hat es begonnen. Nachfolgend finden Sie das DeepFake-Schema aus der von uns verwendeten Implementierung.



Das Ergebnis wurde in eine Kolbenwebdemo eingewickelt und zur Anzeige ausgeführt. Hier ist die Beschreibung unseres Profit Centers für die Jury.


Einführung eines Dienstes, mit dem Sie Medieninhalte (Fotos und Videos) anonymisieren können. In der Basisversion verbirgt der Dienst Gesichter. Im erweiterten Modus werden die Gesichter der Benutzer in die Gesichter anderer Personen geändert (DeepFake), Kleidung und Hintergrund geändert (Segmentierung + Stilübertragung). Alternativ kann der Dienst dazu dienen, lustige und virale Videos oder Fotos zu erstellen, bei denen Prominente ersetzt werden.

Vor dem Start des Hackathons waren noch einige Tage übrig, und wir konnten den Kleidungswechsel verbessern. War es vorher ein Farbwechsel im HSV, wurde jetzt für jede Art von Kleidung ein anderer Stil angewendet (von verschiedenen Künstlern). Eine andere Idee kam auf, dass es besser wäre, ein Gesicht nicht in eine Berühmtheit zu verwandeln, sondern zuerst nach Geschlecht zu klassifizieren und danach die Gesichter von Männern und Frauen unterschiedlich zu übertragen (zum Beispiel in Navalny und Sobchak). Und im letzten Moment gelang es ihnen, der Webdemo verschiedene Anonymisierungsebenen hinzuzufügen - es wurde möglich, die zu verwendenden Anonymisierungselemente auszuwählen.




Wir gingen zum Offline-Teil mit der Einstellung, dass dies ein nützlicher, ungewöhnlicher Benutzerfall ist und nicht nur virale Gesichtsmasken. Eine der Nachrichten in unserem Team-Chat:


Ja, wenn Sie darüber nachdenken, braucht es jeder. Sie haben es einfach immer noch nicht bemerkt. Viele Leute stöbern in ihrem Inhalt herum, während sie klopfen, trinken, das Gesetz brechen und denken, dass der Staat sich nicht um sie kümmert.
Und nach 5 Jahren wird die KI kommen, sich die alten Pfosten ansehen und danach wird der Begriff gelötet.

Auf dem Hackathon


Der Offline-Teil begann am Freitag. Jedem Team wurde ein separater Tisch zugewiesen, und das Buffet war endlos schnelle Kohlenhydrate Cookies. Nach der offiziellen Eröffnung haben wir beschlossen, keine Zeit zu verschwenden und sofort von der Jury herauszufinden, was sie von den Teilnehmern wollen. Nachdem wir informell mit mehreren Organisatoren gesprochen hatten, hatten wir das Gefühl, dass ihre Anonymität sie nicht erwischte. Aber ich mochte die Idee mit der Segmentierung einzelner Teile des Fotos und deren Änderung. Es wurde auch klar, dass sie etwas von uns wollen, das in PicsArt implementiert werden kann. Trotzdem schickte unser Team am Abend eine Beschreibung des Projekts, in der es um Anonymisierung ging, wobei der Schwerpunkt auf der Segmentierung und Bearbeitung einzelner Teile des Fotos lag.


Beschreibung des Projekts für die Jury am Freitagabend:


Wir bieten einen Service, mit dem Sie Fotos einfach und automatisch verarbeiten können, um sie zu anonymisieren. Durch die Segmentierung von Kleidung, Accessoires, Haaren auf dem Kopf sowie Hintergrundelementen können Sie mit jedem Service jedes Objekt unabhängig bearbeiten, ohne dass eine manuelle Auswahl erforderlich ist. Mit diesem Service können Sie auch Gesichter ändern und dabei Gesichtsausdrücke und Gesichtsausdrücke beibehalten.

Nach dem Hackathon-Format dürfen sich die Teams verteidigen, die sich in technischen Kommissionen gut gezeigt haben. Die Kommissionen hatten Live-Kommunikation mit der Jury und dem technischen Team von PicsArt sowie eine Demo, die seine Arbeit demonstrierte.



Bei der allerersten Kommission am Samstag konnten wir die Anonymisierung nicht an die Jury verkaufen, stellten jedoch fest, dass ihnen die Idee, einzelne Objekte auf dem Foto zu bearbeiten, gefallen hat. Auch die Jury akzeptierte die Idee einer entfernbaren Frisur sehr begeistert, indem sie auf das Haar klickte (es stellte sich heraus, dass sie jetzt versuchen, etwas Ähnliches zu tun).


Unser Team konnte diesem Druck (leider) nicht widerstehen und stimmte zu, die Vision des Produkts zu ändern. Es wurde beschlossen, sich auf einen Qualitätswechsel der Kleidung zu konzentrieren.


In der Demo auf dem Hauptbildschirm war geplant, mehrere Optionen für das Originalfoto anzuzeigen (idealerweise ändert sich die Kleidung durch Tippen auf den Bildschirm):


Oberbekleidung:


  • lass wie es ist
  • Jeans
  • Leopard

Hose:


  • lass wie es ist
  • Jeans
  • Leopard

Schuhe:


  • lass wie es ist
  • lustige Schuhe

In der Basisversion mit Haaren wurde beschlossen, die Transformation „kahl - nicht kahl“ zu machen. Zu diesem Zweck wurden Glatze und alle anderen aus dem CelebA-Promi-Datensatz ausgewählt. In diesen beiden Gruppen sollte CycleGAN untersuchen, mit dem Bilder von Domäne A in Domäne B und umgekehrt umgewandelt werden können (ein weiteres Beispiel wäre die Umwandlung eines Pferdes in ein Zebra).


Wir haben es geschafft, einen der Entwickler von PicsArt kennenzulernen und ein wenig über ihre innere Küche zu lernen. Er glaubte nicht wirklich an den Erfolg unseres Experiments mit Haaren, warf aber Links in die Richtung, in die er schauen sollte. Zu unserer Enttäuschung lernte das Neuron wirklich nicht, wie man Haare hinzufügt oder reduziert. Aber sie lernte, den Hautton zu ändern (raten Sie mal warum).



Die Vision des Produkts änderte sich nach jeder Kommunikation mit diesen Kommissionen. Die Pläne beinhalteten die Verbesserung des Himmels und die Änderung der Stile einzelner Objekte (anfangs nur Kleidung): Gebäude, Autos sowie öffentliches Zubehör. Der Fokus ging immer mehr von der Anonymisierung aus. Für die Abschlusspräsentation haben wir uns entschlossen, die folgende Struktur von 4 Folien einzuhalten:


  1. Segmentierung von Kleidung. Foto: Originalfoto, segmentierte Kleidung, 4 Optionen für die Verarbeitung von Kleidung.
  2. Segmentierung der Szene. Ein schwaches Foto mit einem überbelichteten Himmel. Der Himmel ist künstlerisch gestaltet, die Gebäude sind Cartoony.
  3. Gesichtstausch und Haarveränderung. Was wird dann anfangen?
  4. Alle zusammen. Eine Folie, die zeigt, dass dies mit drei Klicks erfolgt.

Es stellte sich jedoch heraus, dass die Präsentation nicht benötigt wurde. Am Samstagabend wurde allen gesagt, dass die Verteidigung eine Aufführung von 3 Minuten ohne Präsentation sein sollte. Von der Szene aus müssen Sie Ihre Demo in Echtzeit zeigen. Organisatoren möchten funktionierende Technologien sehen, keine schönen Präsentationen, und das ist cool. Im Vergleich zu anderen Hackathons, bei denen Teams mit kaputten Demos gewonnen haben, hat uns dieses Konzept gefallen. Das einzige Problem war, dass zu dieser Zeit unsere Modellreihe einzeln und für eine sehr lange Zeit auf den Markt gebracht wurde. Um die Bühne zu präsentieren, war eine Optimierung erforderlich.


Während der Entwicklung gingen Mentoren der technischen Kommission durch die Halle und betrachteten den Fortschritt. Nach einem weiteren Gespräch mit einem der Mentoren erhielten wir eine Rückmeldung, dass es für uns besser wäre, sich seiner Meinung nach auf eine Sache zu konzentrieren, nämlich das Umziehen. PicsArt möchte, dass das Ergebnis realistisch und für Benutzer sichtbar ist. In der Tat hatten verschiedene Mentoren und Jurymitglieder unterschiedliche Ansichten darüber, was ein ideales Projekt für sie sein sollte.


Zu diesem Zeitpunkt chatten mehrere Nachrichten aus dem Team
Entweder haben sie eine virale Wirkung auf die Hackathon-Site, dann sind sie ein ernsthafter Redakteur

Ble, kein Hackathon, sondern ein solider: "Hier ist eine neue Infa, wiederholen Sie alles, was wir haben"

Nachdem der Haarwechsel nicht von CycleGAN abgewickelt wurde, entschieden wir uns für einen anderen Ansatz. Segmentieren Sie zuerst das Haar und tragen Sie dann Inpainting darauf auf. Die Inpainting-Aufgabe besteht darin, den verborgenen Teil des Bildes aus dem umgebenden Kontext wiederherzustellen. Nach unserem Plan verstecken wir die Haare und das neuronale Netzwerk wird versuchen, sie wiederherzustellen. Da das Netzwerk jedoch nicht gesehen hat, welche Art von Haar diese Person hat, wird eine andere Frisur wiederhergestellt. Das Problem ist, dass selbst Modelle, die auf den Gesichtern von Menschen trainiert wurden, das Haar nicht normal wiederherstellen konnten (wenn Sie nur einen Teil des Haares malen, funktioniert es).



Die Hauptschwierigkeit ist eine Vielzahl von Frisuren. Es gab die Idee, das Malen nur bei Glatzköpfigen zu trainieren, und dann würde das Modell wahrscheinlich lernen, jede Frisur aus Mangel an Haaren zu ändern. Wir haben die Implementierung des neuronalen Netzwerks aus diesem Repository übernommen .


Da die Demo in Echtzeit von der Szene gezeigt werden muss, musste ich die Geschwindigkeit der Pipeline optimieren. Die größte Geschwindigkeitssteigerung wurde durch die Übertragung aller neuronalen Netze in den Speicher für die gesamte Dauer der Anwendung erzielt. Es gab einige Schwierigkeiten: Als ich anfing, alles im Docker zu tun, aber auf dem Weg erzielte ich mehrmals Probleme mit Tensorflow-Versionen. Tatsächlich ist es schwierig, nicht in eine solche Situation zu geraten, wenn Sie versuchen, ein Dutzend Repositorys pro Tag von einem Github aus zu starten, von denen jedes eine andere Version von Tensorflow verwendet und an einer Stelle auf die gewünschte Version aktualisiert wird - Sie brechen sie an einer anderen. Docker kann in einer solchen Situation ein guter Freund sein, aber in einem Hackathon möchten Sie jede Minute damit verbringen, neue Hypothesen zu testen und kein neues Image zu erstellen. Wenn Sie jedoch einer solchen Versuchung erliegen, laufen Sie Gefahr, noch mehr Zeit damit zu verbringen, den Code zu debuggen und herauszufinden, welche Version der Bibliothek an welchem ​​Ort Sie benötigen.


Letzter Tag


Am Sonntagmorgen haben wir uns für die endgültige Vision des Produkts entschieden (es ist schon Zeit): das Wechseln der Kleidung mit der Möglichkeit, den Himmel zu verbessern. Ich wollte die Aufgabe so weit wie möglich eingrenzen, aber nur das Umziehen schien mir zu klein. So sah das „Design“ unserer Webanwendung aus.



Zunächst wollten sie ein adaptives Design hinzufügen, um das Betrachten vom Telefon aus bequem zu machen. Aber die Zeit lief davon und unser Design lief auf np.vstack (imgs_list) hinaus.


Vor der letzten Aufführung wollte ich das Feature mit Kleidung in einen fertigen Zustand bringen. Alpha-Mischung von Kleidung und Hintergrund wurde hinzugefügt - scharfe Übergänge verschwanden. Es blieben nur die realistischsten Texturen übrig - Jeans und Krokodilleder. Einige Stunden vor der Show gelang es mir, die Himmelssegmentierung zu starten und den Stil aus diesem Repository darauf zu übertragen . Es gab Möglichkeiten, den Himmel in einen apokalyptischen, giftigen, karikaturistischen zu verwandeln. Der Winterhimmel wurde jedoch zum am besten geeigneten Thema des Wettbewerbs - seine Anwendung wirkte wie ein „Verbesserer“ des Himmels.



Es blieb nur sehr wenig Zeit, um alle Komponenten zu einem Ganzen zu verbinden und zu verdienen. Wir haben viele Fotos aus sozialen Netzwerken heruntergeladen und geplant, eine Anwendung darauf zu starten, um die erfolgreichsten Fälle auszuwählen (Scribble). Aber es stellte sich heraus, dass unser Team das erste war, also war alles so ehrlich wie möglich - sie zeigten Demos auf zufälligen Fotos.



Arthur, der auf der Bühne sprach, konnte unsere Idee enthüllen, und Ilya demonstrierte unser MVP auf dem Projektor - die Kleidung auf allen Fotos wechselte und der Himmel verbesserte sich.



Noch ein Foto









Nicht alle Teilnehmer konnten die Aufgabe bewältigen - nur ihre Demo zeigen. Die Versuchung, einige schöne Folien hinzuzufügen, war großartig. Von den Lösungen, die uns an der Verteidigung am besten gefallen haben - Videos in Comics verwandeln sowie zwei Fotos zu einem kombinieren.


Ergebnisse


Infolgedessen belegte unser Team laut Insider-Informationen den 6. Platz einen Schritt von der Mani entfernt.


Im Nachhinein kamen wir zu einer gemeinsamen Meinung (abgesehen von der Tatsache, dass 3 der Top-5-Teams den Preis unverdient erhalten haben), dass es notwendig war, hartnäckig zu sein und die ursprüngliche Idee der Anonymisierung entscheidend abzuschließen. Schon jetzt sind wir davon überzeugt, dass es geeignet ist und einer Reihe von Nutzern einen Mehrwert bringen wird. Wenn wir das ganze Wochenende über Ideen mit Anonymisierung entwickeln, werden wir zumindest mehr Spaß haben.


Wenn Sie noch nie an Hackathons teilgenommen haben, versuchen Sie es unbedingt - ein ausgezeichneter Test für sich und Ihr Team, eine Chance, etwas zu realisieren, für das Sie nie Zeit hatten. Und natürlich sollten Sie tun, was Sie wollen, denn das maximale Kaffee aus dem Prozess kann nur durch Einbrennen in Hardcore erzielt werden.


Aktueller Status des Projekts


Unser Team hat den Code für die endgültige Demo auf GitHub veröffentlicht . Außerdem gibt es ein separates Repository, das die Anonymisierung übernimmt. In Zukunft ist geplant, die erste Version mit Anonymisierung zu entwickeln: alles auf PyTorch neu zu schreiben, Fotos mit höherer Auflösung und weniger Rauschen (Foto mit nur einem Gesicht) zu trainieren und den Bot im Telegramm anzuheben.


Für diejenigen, die bereits die Version ausprobieren möchten, die zu Beginn des Hackathons geboren wurde, wird im Demo-Modus ein Bot im Telegramm gestartet ( @DbrainDeepAnon -> /start -> /unlock dbraindeepanon ). Es funktioniert auf dem Dbrain- Server (unser Dank), auf dem alle Gesichtsübertragungstrainings stattgefunden haben. Probieren Sie es also aus, bis es ausgeschaltet ist. Der Dienst verwendet den internen Wrapper Dbrain - wrappa, mit dem Sie den Docker-Container einfach einwickeln und den Telegramm-Bot starten können. In Kürze wird Wrappa als Open Source verfügbar sein.


Ich möchte darauf hinweisen, dass unsere Arbeit nicht umsonst war. Dank DeepAnon konnte eine „anonyme Person“, die sich große Sorgen um den Datenschutz ihrer Daten machte, endlich ein Instagram über sein Leben führen. Er hat keine Angst mehr, dass Kameras in der Stadt sein Gesicht anhand von Fotos aus sozialen Netzwerken erkennen können, Freunde werden ihn jedoch erkennen können. Die Gesichter aller Menschen auf seinem Instagram sind ebenfalls anonymisiert.



Links zu den von uns verwendeten Repositorys:


https://github.com/shaoanlu/faceswap-GAN
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
https://github.com/sacmehta/ESPNet
https://github.com/JiahuiYu/generative_inpainting
https://github.com/NVIDIA/FastPhotoStyle


PS Außerdem habe ich für den Fan versucht, das Netzwerk neu zu trainieren, um Leute durch eines der ODS- Mitglieder zu ersetzen. Versuchen Sie zu erraten, wen. Die Netzwerke gaben den Namen TestesteroNet.



Noch ein Foto


Source: https://habr.com/ru/post/de433586/


All Articles