[PYTHON] Verwendung von TokyoTechFes2015

Einführung

Ich werde erklären, wie [TokyoTechFes2015] verwendet wird (https://github.com/Arudori5001/TokyoTechFes2015). Ich hoffe, es ist hilfreich für Sie, die Demo zu üben und das Skript zu verbessern.

Umgebung

Was das Skript macht

Die Unterscheidung der Gesichtsbildkategorie erfolgt durch maschinelles Lernen. Durch Ändern und Lernen im Ordner "Datensatz" ist es möglich, eine beliebige Gesichtsbildkategorie zu bestimmen.

Einführung

Klonen Sie zuerst von git.

git clone https://github.com/Arudori5001/TokyoTechFes2015.git
cd TokyoTechFes2015
pip install cv2==1.0
pip install pillow==2.9.7
pip install chainer==1.3.2
pip install matplotlib==1.4.3

Als nächstes entpacken Sie dataset.zip und Sie können loslegen.

unzip dataset.zip

Die Verzeichnisstruktur des durch Dekomprimieren erstellten "Dataset" -Ordners lautet wie folgt (nur der Ordner wird angezeigt).

$ tree dataset -d
dataset
├── Baysters
├── Buffealoes
├── Carp
├── Dragons
├── Eagles
├── Fighters
├── Giants
├── Hawks
├── Lions
├── Marines
├── Swallows
└── Tigers

Ich denke, die Namen der 12 Baseballteams stehen in einer Reihe. Jeder Ordner enthält Gesichtsbilder der Spieler jedes Teams. Wenn Sie eine Vorhersage mit den Standardeinstellungen treffen, wird vorausgesagt, "welches Gesicht des Spielers in den 12 Teams das Gesicht im angegebenen Bild hat". Was Sie erwarten, kann geändert werden, indem Sie den Ordner "Datensatz" und darunter ändern (siehe unten).

Prognose

  1. Nehmen Sie zunächst mit ImageMagick ein Foto Ihres Gesichts auf und verschieben Sie das resultierende Bild auf einen geeigneten Pfad.
  2. Geben Sie den folgenden Befehl ein.
python bbteam_pred.py (Pfad des Bildes, das Sie vorhersagen möchten)
  1. Das aufgenommene Bild wird auf dem Bildschirm angezeigt. Wenn das Gesicht erkannt werden kann, wird ein Rahmen um das Gesicht angezeigt. Wenn dies nicht möglich ist, wird "Nicht erkennen!" Angezeigt und das Skript endet.
  2. Wenn eine Gesichtserkennung möglich ist, schließen Sie das Bild des angezeigten Rahmens mit der Schaltfläche x oben links. Daraufhin werden zwei neue Bildschirme angezeigt. Eines ist ein Bild mit dem Text "Sie gehören zu (Kategorie)!", Geschrieben auf der Vorderseite des aufgenommenen Bildes, und das andere ist ein Balkendiagramm. Ersteres gibt aus, welche Kategorie vorhergesagt wurde, und letzteres gibt die Sicherheit (hintere Wahrscheinlichkeit) jeder Kategorie aus.

Beispiel

Nehmen wir als Beispiel an, dass das Bild eagles_koyama.jpg, das sich bereits im Ordner sample befindet, das in Schritt 1 aufgenommene Bild ist und eine Vorhersage treffen möchte. eagles_koyama.jpg Übrigens ist diese Person Koyama von Rakuten Eagles, wie der Dateiname andeutet.

  1. Geben Sie den folgenden Befehl ein.
python bbteam_pred.py sample/eagles_koyama.jpg
  1. Das aufgenommene Bild wird auf dem Bildschirm angezeigt. Es gibt einen Rahmen um das Gesicht. detected.jpg

  2. Schließen Sie das Bild des angezeigten Rahmens mit der X-Taste oben links. Zwei neue Bildschirme werden angezeigt (einer kann im anderen Fenster ausgeblendet sein). msg.jpg figure_1.png

Auf dem Bild oben können wir sehen, dass Koyama mit einer Sicherheit von 95% korrekt vorausgesagt wird, dass er sich dem Gesicht des Eagles-Spielers nähert. Das Bild unten zeigt auch das Vertrauen in andere Teams als Eagles. Abgesehen davon, dass die Adler 95% betragen, scheint der Karpfen eine Sicherheit von etwa 5% zu haben.

Die gleiche Ausgabe wird übrigens auch an die Konsole ausgegeben.

predicted categoriy : Eagles
certainty factor of predicted categoriy : 0.954637289047
certainty factors of each categories : 
Baysters :
	 0.00%
Buffealoes :
	 0.00%
Carp :
	 4.51%
Dragons :
	 0.00%
Eagles :
	95.46%
Fighters :
	 0.00%
Giants :
	 0.00%
Hawks :
	 0.02%
Lions :
	 0.00%
Marines :
	 0.00%
Swallows :
	 0.00%
Tigers :
	 0.00%

Lernen

Datensatzänderungen

Wenn Sie Ihre Erwartungen ändern möchten, müssen Sie den Datensatz vor dem Training ändern. Das Dataset verwendet Dateien mit einer festen Verzeichnisstruktur im Ordner "Dataset" zum Lernen und Testen. Im oben erwähnten Standardfall ist die Verzeichnisstruktur wie folgt.

$ tree dataset -d
dataset
├── Baysters
├── Buffealoes
├── Carp
├── Dragons
├── Eagles
├── Fighters
├── Giants
├── Hawks
├── Lions
├── Marines
├── Swallows
└── Tigers

Der Name jedes Verzeichnisses direkt unter dem Ordner "Dataset" ("Baysters", "Buffealoes", ...) repräsentiert den Kategorienamen. Standardmäßig hat "Baysters" Baysters in einer Kategorie.

Bilder werden direkt unter Ordnern wie "Baysters" aufgereiht.

$ tree dataset/Baysters 
dataset/Baysters
├── 1000003_ss.jpg
├── 1000007_ss.jpg
├── 1000117_ss.jpg
├── 1000118_ss.jpg
├── 1000119_ss.jpg
...

Diese Bilder sind Gesichtsbilder, die zu ihren jeweiligen Kategorien gehören. Die "Baysters" sind mit Gesichtsbildern von Baysters-Spielern gesäumt. Bitte ändern Sie die Verzeichnisstruktur wie oben beschrieben.

Wenn Sie beispielsweise beurteilen möchten, ob es sich um einen Mann oder eine Frau handelt, gehen Sie wie folgt vor. Speichern Sie das weibliche Gesichtsbild in "Weiblich" und das männliche Gesichtsbild in "Männlich".

$ tree dataset -d
dataset
├── Female
└── Male

Ausführung des Lernskripts

Das Lernen erfolgt mit dem folgenden Befehl.

python Learning.py (Anzahl der zum Lernen verwendeten Daten)(Anzahl der zum Testen verwendeten Daten)

Standardmäßig enthält der Datensatz 680 Bilder. Wenn Sie 520 Blatt zum Lernen und 120 Blatt zum Testen verwenden möchten, gehen Sie wie folgt vor.

python Learning.py 520 130

Recommended Posts

Verwendung von TokyoTechFes2015
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
Verwendung von Qt Designer
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
Verwendung des Generators
[Python] Verwendung von Liste 1
Verwendung von FastAPI ③ OpenAPI
Wie benutzt man Python Argparse?
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv
Verwendung von Redispy-Wörterbüchern
Python: Wie man pydub benutzt
[Go] Verwendung von "... (3 Perioden)"
So bedienen Sie GeoIp2 von Django
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
[Einführung] Verwendung von open3d
Wie benutzt man Python Lambda?
So verwenden Sie Jupyter Notebook
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
So verwenden Sie Google Colaboratory
Verwendung von Python-Bytes
Verwendung von cron (persönliches Memo)
Python: So verwenden Sie Async mit
Verwendung der Zip-Funktion