Selbstversuch: Erkennt KI meine Nacktfotos?

Da ja bekanntlich demnächst künstliche Intelligenzen die Macht übernehmen, Arbeitsplätze wegnehmen und ein bisschen besser Auto fahren als wir (da wird man natürlich neidisch, siehe dazu auch hier über Vandalismus gegen selbstfahrende Autos), habe ich mal einen Selbversuch gewagt.

Ich habe mir Tensorflow installiert, dazu die Anwendung nudeNet, sowie einen fertigen Classifier Dataset, der mit insgesamt ungefähr 711.000 Bildern trainiert wurde (20 GB Nacktbilder und Nichtnacktbilder). Das ist ein typisches Beispiel für Machine Learning, das beispielsweise bei Uploadfiltern eingesetzt wird, bloß bei den großen Diensten mit noch mehr Bildern. Zur Erinnerung: Ein System wie dieses braucht optimalerweise Millionen von Fotos, um zu lernen, Esel und Hasen voneinander zu unterscheiden (ein Kleinkind nur zwei oder drei), und man braucht ein zweites System, um Penisse von Schraubenziehern unterscheiden zu können und so weiter (etwas vereinfacht gesagt). Nur die ganz großen Dienstleister verfügen über solche Datenmengen!

Mit einem kleinen Python-Skript habe ich mein ganzes Home-Verzeichnis auf meinem PC nach Nacktbildern abgesucht, d.h. nach Bildern, die nudeNet mit >90% Sicherheit für nackt hält.

Das Resultat ist ernüchternd. So hielt die KI beispielsweise fast alle Einzelframes eines meiner Animationsvideos für nackt, und mit einer Sicherheit von 99,1% auch dieses höchst versaute Foto (Kinder bitte Augen zu!):

Bei dieser nackten Verpackung eines Billy-Regals sieht man eindeutig die Genitalien, oder etwa nicht?

Nichts gegen Maschinenlernen und künstliche Intelligenzen, aber man darf eines nicht vergessen: Sie sind nicht wirklich “intelligent”. Man kann sie mit verwirrenden Eingaben sehr leicht verarschen. Und umso mehr Maschinenlernen unseren Alltag erobert, desto mehr Menschen werden versuchen, genau das zu tun.

Das Resultat ist so vorhersehbar wie die Klimakatastrophe.

Fundstücke (Ausgabe Februar ’19)

Natürlich völlig anonymisiert und verfremdet präsentiere ich mal wieder einige aktuelle Fundstücke aus meiner Tätigkeit als gefürchteter Softwarequälitäts-Ganzgenauhinschauerundbesserwisser. Manchmal läuft einem ein Schauer über den Rücken, wenn man den Kontext kennt, aus dem der fragliche Code stammt (den ich freilich nicht verraten darf, weil ich meterlange Verschwiegenheitserklärungen unterschrieben habe). Funktioniert diese Software wirklich genau so, wie sie soll? Und wenn ja: Wie lange noch?

package com.companyname.classesToDeleteWhenUsingJava6;
// TODO delete as soon as Java 1.6 available

Java 1.6, auch bekannt als 6.0, erschien Ende 2006, also vor 13 Jahren.

Nun ja, es hat sich wohl noch nicht überall herumgesprochen, dass Code auch nach Inbetriebnahme gewisser Pflege bedarf. Nur einer der Gründe, wieso Softwarekosten häufig zu niedrig angesetzt werden.

////// ????? ask norbert

Ja, über lustige Kommentare und deren (Un)Zulässigkeit kann man trefflich streiten. Nicht streiten kann man über TODOs, die nicht einmal als solche gekennzeichnet sind. Wenn hier tatsächlich fachlicher Klärungsbedarf besteht oder bestand, dann gehört die eigentliche Frage (die hier zudem nicht einmal hier steht!) nicht in den Code, wo sie ganz offensichtlich in Vergessenheit geriet, sondern in eine Mail an Norbert, in ein Ticket oder von mir aus auf ein Post-it, obwohl die den Nachteil haben, beim Durchlüften verloren zu gehen, und die positive Wirkung von Frischluft aufs Denkvermögen sollte man nicht unterschätzen. The answer my friend is blowing in the wind. But not in the code.

Hier mal kein Codebeispiel, sondern eine Auswirkung: Der direkte Weg in die Programmiererhölle, sogar im wahrsten Sinne des Wortes. Wer auch immer da bei Spotify (oder bei einem Musikverlag, von dem die Daten ursprünglich stammen) eine Art Metadaten-Migration von “V2 to V3” implementiert hat: Er hat irgendeinen Spezialfall nicht berücksichtigt, so dass beim Copyright dieses Albums ein unsinniger Default-Wert (“Default-C Credit”) eingesetzt wurde. Metadaten-Fehler sind auf den ersten Blick harmlos, weil an sie meist keine kritische Geschäftslogik geknüpft ist. Aus leidvoller Erfahrung mit dem Thema Musik-Metadaten kann ich jedoch verraten: Obacht! Es kann passieren, dass durch ähnliche Fehler ein Titel gar nicht erst in einem Suchindex landet und folglich nicht auffindbar ist. Bei einigen Songs für die Nicht-Hörer sicher verschmerzbar, nicht aber für den Künstler. Jedenfalls ein Fehler, der nicht hätte passieren müssen. Spätestens bei einem Codereview hätte jemand feststellen müssen, dass so etwas wie “Default-Credits” überhaupt keinen Sinn ergeben. Der Bug kann Stand heute (Februar 2019) übrigens weiterhin im Spotify-Webplayer besichtigt werden.

DeltaCam auf F-Droid

Nach und nach bringe ich einige meiner Open Source-Apps bei F-Droid.org online. Den Anfang macht die DeltaCam, die Bewegungen im Bild festhält. So hinterlassen laufende Ameisen schwarze Spuren auf dem Foto.

Es ist wirklich nicht ganz trivial, eine App bei F-Droid online zu bringen. Deshalb wird es in der nächsten (8.) Auflage von Android Apps entwickeln für Einsteiger ein eigenes Kapitel mit einer Schritt-für-Schritt-Anleitung geben.

Als nächstes soll der “Malkasten für Kids” erscheinen. Wird aber noch ein paar Tage dauern.

Ach ja: F-Droid kann man als zusätzliche Shop-App installieren. Alle angebotenen Apps sind kostenlos und (soweit ich weiß) werbefrei. Eine Wohltat! Und somit die einzige echte Alternative zu Google Play, zumindest für einfache Apps wie Notizblock, Karten, Dateimanager, Mail, Multimedia, Cryptowährungen, Cloud-Synchronisation.