Eine auf die teilweise Anpassung spezialisierte Musterextraktionsmethode, die eine Ableitung der ** Dynamic Time Stretching Method (DTW) ** ist. DTW ist eine Metrik, die eine Entfernungsmatrix zwischen Zeitreihendaten erstellt, eine Mindestroute findet und diese als Entfernung verwendet. Cross Similarity findet jedoch mehrere Routen für die teilweise Übereinstimmung. Eine leicht verständliche Erklärung der DTW hier
Informationen zur Kreuzähnlichkeit finden Sie im folgenden Artikel. Discovery of Cross Similarity in Data Science(Toyoda et al. 2010)
Als ich nur die Rinde aus den Langzeitdaten der Rinde eines Vogels segmentieren wollte, hat die Wellenform der Rinde die Eigenschaft, das Muster zu wiederholen, und ich dachte, dass es für diese Methode geeignet wäre, also experimentierte ich.
python 3.7.4 librosa 0.7.2 matplotlib 3.1.1
Let's Librosa! Wir haben das einfachste Beispiel aus der [Librosa-Dokumentation] verwendet (https://librosa.org/doc/latest/generated/librosa.segment.cross_similarity.html#librosa.segment.cross_similarity). Ich studiere über Kreuzähnlichkeitsvariablen, Parameter, Algorithmen usw.
import librosa
import librosa.feature
import librosa.segment
import librosa.display
hop_length = 1024
y_ref, sr = librosa.load("path to sound file")
y_comp, sr = librosa.load("path to sound file")
chroma_ref = librosa.feature.chroma_cqt(y=y_ref,
sr=sr,hop_length=hop_length)
chroma_comp = librosa.feature.chroma_cqt(y=y_comp,
sr=sr, hop_length=hop_length)
x_ref = librosa.feature.stack_memory(
chroma_ref, n_steps=10, delay=3)
x_comp = librosa.feature.stack_memory(
chroma_comp, n_steps=10, delay=3)
xsim = librosa.segment.cross_similarity(x_comp, x_ref)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
librosa.display.specshow(xsim, x_axis='s', y_axis='time', hop_length=hop_length, ax=ax)
plt.show()
Ich denke, Sie erhalten ein dokumentähnliches Bild. das ist alles. Danke fürs Lesen.
Recommended Posts