[PYTHON] Empfehlung von Manga durch maschinelles Lernen Teil 1 Lassen Sie uns zunächst teilen, ohne über irgendetwas nachzudenken

Einführung

Dank Elastic Search als Suchmaschine ist es relativ einfach geworden, Arbeitsinformationen aus Suchwörtern zu extrahieren.

Mit Elastic Search können Sie auf einfache Weise Schlüsselwörter empfehlen, die auf dem Genre der gelesenen Arbeit basieren, und Informationen markieren.

In meinem Fall handelt es sich jedoch um eine Manga-Site, sodass es auch Elemente wie den Geschmack und den Geschmack von Bildern gibt. Wenn ich also Geld hatte, war der Inhalt zweitrangig und ich kaufte normalerweise Jacken.

Es ist also ein Versuch, solche seltsam geschmackvollen Teile auf irgendeine Weise zu ergänzen.

Um es zu versuchen, verstehe ich, dass Sie Manga als Bildinformation aufnehmen und auf irgendeine Weise klassifizieren können (Clustering). Was soll ich dann tun?

** Ich weiß nicht, ob es überhaupt passt, also wenn ich keine Tsukkomi in der Nähe habe, **

Vorläufig war ich daran interessiert, die Geschichte der künstlichen Intelligenz zu studieren, und nagte ein wenig. Wenn Sie das berücksichtigen, ** Wäre es nicht möglich, das Bild mit einer so genannten Feature-Menge auszudrücken und damit zu gruppieren? ** ** ** Ich denke, ich werde von der Anerkennung ausgehen.

Finde einen Anfang

Wenn ich Google Sensei fragte, verwendete er häufig eine lokale Funktion namens ** SURF ** bei der Bildmustererkennung. Dies dient zum Erzeugen eines Merkmalsbetrags durch Aufnehmen eines invarianten Punkts, selbst wenn die Helligkeit des Bildes geändert, vergrößert / verkleinert oder gedreht wird. ** Lokale ** Feature-Menge aus mehreren davon. Es scheint, dass ein Bild keines ist.

Lassen Sie uns dies zuerst verwenden und beim Clustering seiner Funktionen schnell eine Klassifizierung mit k-Mitteln vornehmen, die anscheinend häufig wieder verwendet wird.

Um ehrlich zu sein, gibt es viele Wörter, die keinen Sinn ergeben, aber ich denke, Sie können herausfinden, wie Sie dies nach Bedarf tun können.

Umgebung

Masu ist die Umwelt OS:Mac Sprache: Python2.7 Entwicklungsumgebung: PyCharm Community Editioin 2017.1 Bibliothek für maschinelles Lernen: Scikit-Learn Bildverarbeitungsbibliothek: Mahotas Numerische Berechnungsbibliothek: NumPy

Der Grund für diese Umgebung ist, dass es einfach der Mechanismus war, den ich im Online-Lehrplan gelernt habe. Vielleicht werden wir es in Zukunft nach Bedarf ändern.

Wenn ich einen Mac verwendete, wurde Python 2.7 standardmäßig ausgeführt, das ist also dasselbe.

fließen

Lernphase

  1. Lesen Sie das Bild von der in der Textdatei beschriebenen URL (100-2000 Fälle).
  2. Berechnung lokaler Merkmale durch SURF (Mahotas)
  3. Verwenden Sie diese Daten als unbeaufsichtigte Daten (Basisfeature-Menge) nach dem Clustering mit k-Mitteln (Scikit-Learn).

Klassifizierungsphase

  1. Lesen Sie 100 Daten separat
  2. Berechnen Sie den SURF
  3. Führen Sie das Clustering (die ersten 10 Klassifizierungen und 25 Klassifizierungen) aus dem zuvor genannten Basisfeature-Betrag aus.
  4. Sehen Sie sich die Ergebnisse an.

Code

Lernphase


# coding:utf-8
import numpy as np
from sklearn import cluster
from sklearn.externals import joblib
import mahotas as mh
from mahotas import surf
from datetime import datetime
import cStringIO
import urllib

datetime_format = "%Y/%m/%d %H:%M:%S"

#Parameter
feature_category_num = 512


#Bringen Sie die Bild-URL aus der Textdatei.
list = []

list_file = open("list.txt")

for l in list_file:
    list.append(l.rstrip())

list_file.close()

#Bildverarbeitung
base = []

j=0

for url in list:
    file = cStringIO.StringIO(urllib.urlopen(url).read())
    im = mh.imread(file, as_grey=True)
    im = im.astype(np.uint8)
    base.append(surf.surf(im))

concatenated = np.concatenate(base)

del base

#Berechnung der Basismerkmalsmenge

km = cluster.KMeans(feature_category_num)
km.fit(concatenated)

#Speicherung von Basisfunktionen
joblib.dump(km, "km-cluster-surf-.pk1")

Klassifizierungsphase


# coding:utf-8
import numpy as np
from sklearn import cluster
from sklearn.externals import joblib
import mahotas as mh
from mahotas import surf

import cStringIO
import urllib

#Parameter
feature_category_num = 512
picture_category_num = 25

#Geschulte Modellbeladung

km = joblib.load("km-cluster-surf.pk1")


#Bringen Sie die Bild-URL aus der Textdatei.
list = []

list_file = open("list2.txt")

for l in list_file:
    list.append(l.rstrip())

list_file.close()

#Bildverarbeitung
base = []

for url in list:

    title = file[1]
    file = cStringIO.StringIO(urllib.urlopen(url).read())

    im = mh.imread(file, as_grey=True)
    im = im.astype(np.uint8)

    base.append(surf.surf(im))

concatenated = np.concatenate(base)

features = []

#Beginnen Sie mit der Klassifizierung von Bildern anhand der Grundfunktionen

for d in base:
    c = km.predict(d)
    features.append(np.array([np.sum(c==ci) for ci in range(feature_category_num)]))

features=np.array(features)


km = cluster.KMeans(n_clusters=picture_category_num,verbose=1)
km.fit(features)

#Spucke das Ergebnis aus

list = np.array(list)

for i in range(picture_category_num):
    print('Image category{0}'.format(i))
    challenge = list[km.labels_ == i]
    for c in list:
        print(c)

Ergebnis

Ausgehend von der Schlussfolgerung wurde die Klassifizierung abgeschlossen.

Aber ich konnte es nicht finden.

Es gibt wahrscheinlich verschiedene Gründe, aber ich würde gerne das nächste Mal darüber nachdenken.

Recommended Posts

Empfehlung von Manga durch maschinelles Lernen Teil 1 Lassen Sie uns zunächst teilen, ohne über irgendetwas nachzudenken
Versuchen Sie es mit Kaggle leicht maschinell
Versuchen Sie es mit TensorFlow Part 2
SVM versucht maschinelles Lernen mit Scikit-Learn
[Maschinelles Lernen] Versuchen Sie, Spark MLlib mit Python auszuführen, und geben Sie Empfehlungen ab
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Einfaches maschinelles Lernen mit AutoAI (Teil 4) Jupyter Notebook
Versuchen Sie, den Wechselkurs (FX) mit nicht tiefem maschinellem Lernen vorherzusagen
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
[Maschinelles Lernen] Starten Sie Spark mit iPython Notebook und probieren Sie MLlib aus
Maschinelles Lernen mit Nogisaka 46 und Keyakizaka 46 Teil 1 Einführung
Feature Engineering für maschinelles Lernen ab Teil 3 Google Colaboratory-Scale
Maschinelles Lernen mit Pokemon gelernt
Versuchen Sie es mit TensorFlow
Maschinelles Lernen mit Python! Vorbereitung
Versuchen Sie Deep Learning mit FPGA
Maschinelles Lernen Minesweeper mit PyTorch
Beginnend mit maschinellem Python-Lernen
Maschinelles Lernen mit Python ohne Verlust an kategoriale Variablen (Dummy-Variablenkonvertierung)
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Lernen stärken 13 Probieren Sie Mountain_car mit ChainerRL aus.
[Maschinelles Lernen] Lassen Sie uns den Entscheidungsbaum studieren
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 2)
Ich habe maschinelles Lernen mit liblinear versucht
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Anfänger des maschinellen Lernens versuchen eine lineare Regression
[Maschinelles Lernen] Versuchen Sie, zufällige Wälder zu studieren
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 1)
Versuchen Sie Common Representation Learning mit Chainer
Quanteninspiriertes maschinelles Lernen mit Tensornetzwerken
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
"Scraping & maschinelles Lernen mit Python" Lernnotiz
[Python] [Maschinelles Lernen] Anfänger ohne Wissen versuchen vorerst maschinelles Lernen