Der Künstler Abhishek Singh hat den ersten Level von Super Mario für die Microsoft HoloLens erstellt. Im Central Park New York hüpft und läuft er durch die Map. Neben dem Einsammeln von Power Ups kann der Spieler auch auf die Gegner hüpfen. Ganz wie im Original ist auch das Schießen von Feuerbällen implementiert.

Ich freue mich darauf wenn diese Spiele endlich Marktreif werden. Vielleicht kann man dann irgendwann Pokemon in einer schönen Variante einsammeln oder bei Yu-Gi-Oh! in einer riesigen Arena echte Monster beschwören. Außerdem wäre ein Skyrim im echten Leben ein Traum.

Seit gestern gibt es die developer preview (alpha v1) der Google Assistant API zur freien Verfügung. Auf der Developer Webseite sind neben der Ankündigung einige Samples veröffentlicht. Der in Python geschriebene Code steht auch für den Raspberry Pi zur Verfügung.

Google Assistant

Der Google Assistant ist ein persönlicher Assistent von Google für Android, Google Home und den Messenger Google Allo, der sowohl gesprochene als auch eingegebene natürliche Sprache empfängt und verarbeitet. Die Software ist der Nachfolger von Google Now. (Quelle: Wikipedia) In diversen Android Produkten von Smartphones bis zum Smart TV ist der Assistent im Einsatz. Jetzt können alle Entwickler von dem Dienst profitieren.

Google Assistant mit dem Raspberry Pi

Auf der Beispiele Webseite findet sich eine kleine Anleitung zur Einbindung des Dienstes in den Raspberry Pi. Die Komponenten sind schnell gekauft. Neben dem Pi selber wird nur ein Mikrofon und ein Lautsprecher benötigt. Nach der Einrichtung erfolgt die Erstellung eines Projektes und die Generierung von API Keys.

Das Sample selber steht über den Python Paketverwaltung zur Verfügung und lässt sich mit wenigen Zeilen Code installieren.

 

Blizzard arbeitet zusammen mit der Firma DeepMind zusammen mit dem Ziel Starcraft 2 eine API zur Verfügung zu stellen, mit dessen Hilfe sich Künstliche Intelligent entwickeln lässt. Die Google-Tochter DeepMind hat in der Vergangenheit bereits Schlagzeilen gemacht als sie mit ihrem AlphaGo System das Go Spiel ernsthaft bespielte.

API Erweiterungen für KI Entwicklung

Anhand eines kurzen Videos lassen sich Erweiterungen für Heatmaps erkennen. Diese scheinen Bedrohungsräume und Einflussgebiete zu definieren. Außerdem können die Verläufe von vergangenen Spielen analysiert werden. Bei der API bleibt zu hoffen, dass diese auch für andere interessierte zur Verfügung gestellt werden. Somit wäre ein schönes Betätigungsfeld für ambitionierte Entwickler geschaffen. Laut Deep Mind ist Starcraft 2 aufgrund seiner unvollständigen Informationen (Fog of war), Ressourcenmanagement, unterschiedlichen Rassen und Langzeitstrategien besonders komplex und daher gut geeignet als nächstes Betätigungsfeld.

Quelle: Starcraft 2: Schnittstelle für Deep-Learning-Intelligenz ab Sommer 2017 | heise online

Sonnet

Nach einer kurzen Suche auf der DeepMind Webseite gibt es einen Hinweis auf das Forschungsgebiet. Die Bibliothek Sonnet steht auf der Webseite bzw. auf GitHub als open source Version zur Verfügung. Basierend aus der Entwicklung von TensorFlow können mit Sonnet neuronale Netze erstellt werden.

Drupal zu WordPress

Seit heute präsentiert sich SPech.de in einem völlig neuen Design und einer neuen Technologie. Das langjährig genutzt Drupal ist WordPress gewichen. Warum dieser Wechsel der mich doch einige Wochen beschäftigt hat?

Drupal begleitet mich für verschiedene Projekte seit der Version 6. Viele Kunden konnte ich mit angepassten Lösungen glücklich machen und ich selber setzte es bisher für alle meine Seiten ein. Ein paar Gründen haben mich aber bewogen zu WordPress zu wechseln.

Die Codebase bei WordPress ist deutlich kleiner als bei Drupal. Anstatt einiger zehntausend Dateien liegen nun nur noch ein paar Tausend umher. Potentiell können dort auch weniger Sicherheitslücken vorhanden sein. Zusätzlich ist die Datenbank deutlich schlanker.

Die Performance

Die Performance von Drupal hat mit der Version 8 massiv abgenommen. Auf meinem Hosteurope Webspace lagen die Antwortzeiten, trotz Caching usw., bei bis zu DREI! Sekunden! Absolut inakzeptabel für jeden Besucher.

Die Usability ist bei WordPress ebenfalls schöner geworden als bei Drupal. Mit der achten Version sind einige Oberflächenoptimierungen in Drupal erschienen aber für einen einfachen Blog, out-of-the-box ist WordPress besser geeignet.

Schwere Entscheidung

Warum habe ich mich dann mit der Umstellung so schwer getan?

Drupal ist unschlagbar in seinen Anpassungen. Mit der Hilfe von Views und Feldern kann man extrem schnell sehr umfangreiche und komplexe Seitentypen abbilden. Dies ist enorm wichtig bei Webseiten mit vielen verschiedenen Dateninhalten, welche auch von verschiedenen Autoren bereitgestellt werden sollen.

Das „Freemium“ Modell von WordPress finde ich absolut grausam. Fast jeder Plugin bietet nur einen Teil der Funktionalitäten ab. Für ein oder zwei minimale Features, welche aber eigentlich den Hauptgrund des Plugins abdecken wird der Nutzer zur Kasse gebeten. Selbst für das banale Anpassen mancher Themes gibt es jährliche Premium Pakete.

Raspberry Pi Gesichtserkennung mit Microsoft Cognitive Services

Microsoft stellt mit den Microsoft Cognitive Services eine Reihe von Services für Bilderkennungsverfahren zur Verfügung. Die Face API bildet eine gute Schnittstelle um dem Raspberry Pi die Gesichtserkennung zu ermöglichen. Mit Hilfe einer Webcam und etwas JavaScript und Node.js lassen sich Bilder aufnehmen und zur Analyse hochladen. Der Cloud-Dienst ist dabei bis zu einer gewissen Menge von Abfragen kostenlos nutzbar.

Pakete installieren

Project Oxford for Node.js ist eine einfach zu nutzende Bibliothek um die Schnittstelle nutzen zu können.

$ mkdir face
$ cd face
$ npm install project-oxford

Account erstellen und API Key generieren

Auf der Microsoft Cognitive Services Webseite ist ein Account zu erstellen. Nach einer kurzen E-Mail Verifikation kann dort ein API Key erstellt werden. Dazu den Punkt „Face Preview – 30,000 transactions per month, 20 per minute.“ anklicken und nach Bestätigung der Lizenz den Subscribe Button klicken. Der Key erscheint nun in der Übersicht.

Foto generieren

Ein nützliches Programm für die Aufnahmen mit einer Webcam ist fswebcam. Es lässt sich einfach über die Kommandozeile zum Erstellen von Snapshots nutzen. Die Installation erfolgt direkt über das Paket.

$ sudo apt-get install fswebcam

Um mit dem Programm ein Screenshot ohne Zeitstempel im Bild aufzunehmen erfolgt der Aufruf mit der entsprechenden Option.

$ fswebcam --no-banner 001.jpg

Gesichter erkennen

Der folgende Code ist von der oben genannten project-oxford package Webseite übernommen. Es wurden aber Fehler behoben (faceAttributes anstelle von attributes) und der Code ist um die Anzeige mehrerer Gesichter ergänzt.

$ nano face.js
# oder vi ;-)
var oxford = require('project-oxford'),
    client = new oxford.Client('xxx KEY HIER EINTRAGEN xxx');

client.face.detect({
    path: '001.jpg',
    analyzesAge: true,
    analyzesGender: true
}).then(function (response) {
    for(var i = 0; i < response.length; i++) {
        console.log('Gesicht ' + i);
        console.log('  Alter: ' + response[i].faceAttributes.age);
        console.log('  Geschlecht: ' + response[i].faceAttributes.gender);
        console.log('  Position: Oben ' + response[i].faceRectangle.top + ' - Links ' + response[i].faceRectangle.left);
        console.log('  Position: Breite ' + response[i].faceRectangle.width + ' - Hoehe ' + response[i].faceRectangle.height);
    }
});

Aufnehmen und verschicken

Für die Einbindung von fswebcam bietet das node-webcam Paket einen Wrapper. Die Installation erfolgt wieder über npm.

$ npm install node-webcam

Das neue Paket binden wir nun in den Code mit ein. Da Dateiausgaben asynchron durchgeführt werden muss die Gesichtserkennung im Function Callback des node-webcam Codes stehen (oder als eigene Funktion). Trotz des Ausgabetyps jpeg endet der Dateiname in jpg!

var NodeWebcam = require('node-webcam');

var opts = {
    quality: 100,
    output: "jpeg",
    verbose: true
}

var oxford = require('project-oxford'),
    client = new oxford.Client('xxx KEY HIER EINTRAGEN xxx');

NodeWebcam.capture('001', opts, function(err, data) {
    if(!err) {
        console.log('Image created!');
    }

    client.face.detect({
        path: '001.jpg',
        analyzesAge: true,
        analyzesGender: true
    }).then(function (response) {
        for(var i = 0; i < response.length; i++) {
            console.log('Gesicht ' + i);
            console.log('  Alter: ' + response[i].faceAttributes.age);
            console.log('  Geschlecht: ' + response[i].faceAttributes.gender);
            console.log('  Position: Oben ' + response[i].faceRectangle.top + ' - Links ' + response[i].faceRectangle.left);
            console.log('  Position: Breite ' + response[i].faceRectangle.width + ' - Hoehe ' + response[i].faceRectangle.height);
        }
    });
});

Emotionen erkennen

Das Erkennen von Emotionen ist ebenfalls einfach umzusetzen. Allerdings weißt das Paket nicht auf die Notwendigkeit eines zweiten Clientobjektes und eines weiteren API Keys hin. Auf der Microsoft Webseite muss ebenfalls das API „Emotion – Preview – 30,000 transactions per month, 20 per minute.“ aktiviert werden. Der API Key ist dann an einen weiteren client (hier emoclient (Haha, super Name, ist mir aber erst später nach dem Schreiben aufgefallen)) zu übergeben.

var oxford = require('project-oxford'),
    emoclient = new oxford.Client('xxx ANDEREN KEY HIER EINTRAGEN xxx');

emoclient.emotion.analyzeEmotion({
    path: '001.jpg',
}).then(function (response) {
    console.log(response);
});