Ich versuche zu recherchieren und herauszufinden, wie ich dieses Problem am besten bekämpfen kann. Es erstreckt sich über die Verarbeitung von Musik, Bildern und Signalen. Es gibt also unzählige Möglichkeiten, es zu betrachten. Ich wollte nach den besten Wegen fragen, wie ich es angehen kann, da das, was im reinen Sig-Proc-Bereich komplex erscheinen könnte, von Leuten, die Bilder oder Musik verarbeiten, einfach (und bereits gelöst) sein könnte. Wie auch immer, das Problem ist wie folgt:
Wenn Sie mir die Handzeichnung des Problems verzeihen, können wir Folgendes sehen:
Aus der obigen Abbildung habe ich 3 verschiedene Arten von Signalen. Der erste ist ein Impuls, der in der Frequenz von auf und sich dann wiederholt. Es hat eine bestimmte Pulsdauer und eine bestimmte Pulswiederholungszeit.
Die zweite existiert nur bei , hat aber eine kürzere Pulslänge und eine schnellere Pulswiederholungsfrequenz.
Schließlich ist der dritte einfach ein Ton bei .
Das Problem ist, wie gehe ich dieses Problem an, so dass ich einen Klassifikator schreiben kann, der zwischen Signal-1, Signal-2 und Signal-3 unterscheiden kann. Das heißt, wenn Sie ihm eines der Signale zuführen, sollte es Ihnen sagen können, dass dieses Signal so und so ist. Welcher Klassifikator würde mir eine diagonale Verwirrungsmatrix geben?
Ein zusätzlicher Kontext und woran ich bisher gedacht habe:
Wie ich bereits sagte, überspannt dies eine Reihe von Feldern. Ich wollte mich erkundigen, welche Methoden möglicherweise bereits existieren, bevor ich mich hinsetze und damit in den Krieg ziehe. Ich möchte das Rad nicht versehentlich neu erfinden. Hier sind einige Gedanken, die ich aus verschiedenen Blickwinkeln hatte.
Signalverarbeitungsstandpunkt: Ich habe mir eine Cepstral-Analyse angesehen und dann möglicherweise die Gabor-Bandbreite des Cepstrums zum Unterscheiden von Signal-3 von den anderen 2 und dann den höchsten Peak des Cepstrums zum Unterscheiden von Signal-3 verwendet. 1 von Signal-2. Das ist meine aktuelle Lösung für die Signalverarbeitung.
Bildverarbeitungsstandpunkt: Hier denke ich, da ich tatsächlich Bilder gegenüber den Spektrogrammen erstellen KANN, kann ich vielleicht etwas aus diesem Bereich nutzen? Ich bin mit diesem Teil nicht sehr vertraut, aber wie sieht es aus, wenn Sie mit der Hough-Transformation eine "Linienerkennung" durchführen und dann die Linien "zählen" (was ist, wenn es sich nicht um Linien und Kleckse handelt?) Und von dort aus fortfahren? Natürlich könnten zu jedem Zeitpunkt, zu dem ich ein Spektrogramm aufnehme, alle Impulse, die Sie sehen, entlang der Zeitachse verschoben werden. Würde das also eine Rolle spielen? Nicht sicher...
Standpunkt der Musikverarbeitung: Eine Untergruppe der Signalverarbeitung, aber mir fällt auf, dass Signal-1 eine gewisse, vielleicht sich wiederholende (musikalische?) Qualität hat, die die Leute im Musik-Prozess ständig sehen und bereits gelöst haben Vielleicht Instrumente diskriminieren? Ich bin mir nicht sicher, aber mir ist der Gedanke gekommen. Vielleicht ist dieser Standpunkt der beste Weg, um es zu betrachten, einen Teil des Zeitbereichs zu nehmen und diese Schrittraten herauszuarbeiten? Auch dies ist nicht mein Fachgebiet, aber ich vermute sehr, dass dies etwas ist, was man vorher gesehen hat ... können wir alle 3 Signale als verschiedene Arten von Musikinstrumenten betrachten?
Ich sollte auch hinzufügen, dass ich über eine anständige Menge an Trainingsdaten verfüge. Vielleicht kann ich mit einigen dieser Methoden eine Feature-Extraktion durchführen, mit der ich dann K-Nearest Neighbor verwenden kann , aber das ist nur ein Gedanke.
Wie auch immer, hier stehe ich gerade, jede Hilfe wird geschätzt.
Vielen Dank!
BEARBEITUNGEN AUF DER GRUNDLAGE VON KOMMENTAREN:
Ja, , , , sind alle im Voraus bekannt. (Einige Abweichungen, aber sehr wenig. Nehmen wir zum Beispiel an, wir wissen, dass = 400 kHz, aber es könnte bei 401,32 kHz eintreten. Der Abstand zu ist jedoch hoch, so dass im Vergleich 500 kHz betragen könnte.) Signal-1 wird IMMER auf diese 4 bekannten Frequenzen treten. Signal-2 hat IMMER 1 Frequenz.
Auch Pulswiederholraten und Pulslängen aller drei Signalklassen sind vorab bekannt. (Wieder etwas Abweichung, aber sehr wenig). Einige Einschränkungen, Pulswiederholungsraten und Pulslängen der Signale 1 und 2 sind immer bekannt, aber sie sind ein Bereich. Glücklicherweise überlappen sich diese Bereiche überhaupt nicht.
Die Eingabe ist eine kontinuierliche Zeitreihe, die in Echtzeit eingeht. Wir können jedoch davon ausgehen, dass sich die Signale 1, 2 und 3 gegenseitig ausschließen, da zu jedem Zeitpunkt nur eines von ihnen existiert. Wir können auch flexibel festlegen, wie viel Zeit Sie zu einem bestimmten Zeitpunkt für die Verarbeitung benötigen.
Antworten:
Schritt 1
Schritt 2
Berechnen Sie für jeden STFT-Frame die dominante Grundfrequenz mit etwas wie YIN zusammen mit einem "Tonhöhenvertrauens" -Indikator, z. B. der von YIN berechneten Tiefe des DMF-"Einbruchs".
Schritt 3
Extrahieren Sie die folgenden Funktionen:
Berechnen Sie diese drei Merkmale anhand Ihrer Trainingsdaten und trainieren Sie einen naiven Bayes-Klassifikator (nur eine Reihe von Gauß-Verteilungen). Abhängig davon, wie gut Ihre Daten sind, können Sie sogar mit Klassifizierern davonkommen und handdefinierte Schwellenwerte für die Features verwenden, obwohl ich dies nicht empfehle.
Schritt 4
Wenn Ihre Daten und Ihr Klassifikator gut sind, sehen Sie etwa Folgendes:
1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3
Dies begrenzt die Start- und Endzeit sowie den Typ jedes Signals ziemlich gut.
Wenn Ihre Daten verrauscht sind, müssen falsche, falsch klassifizierte Frames vorliegen:
1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 3, 1, 1, 1, 3, 3, 2, 3, 3, 3
Wenn Sie viel Mist sehen, wie im zweiten Fall, verwenden Sie einen Modusfilter für die Daten in Umgebungen mit 3 oder 5 Erkennungen. oder verwenden Sie HMMs.
Nachricht mit nach Hause nehmen
Worauf Sie Ihre Erkennung stützen möchten, ist kein Spektralmerkmal, sondern eine aggregierte zeitliche Statistik der Spektralmerkmale über Fenster, die im selben Maßstab liegen wie Ihre Signaldauer. Dieses Problem erfordert eine Verarbeitung auf zwei Zeitskalen: dem STFT-Frame, auf dem Sie sehr lokale Signaleigenschaften (Amplitude, dominante Tonhöhe, Tonhöhenstärke) berechnen, und größeren Fenstern, in denen Sie die zeitliche Variabilität dieser Signaleigenschaften untersuchen.
quelle
Ein alternativer Ansatz könnten vier Überlagerungsdetektoren sein: Multiplizieren Sie das Eingangssignal mit einem lokalen Oszillator mit 4 Frequenzen und filtern Sie die resultierenden Ausgänge mit einem Tiefpass. Jede Ausgabe repräsentiert eine vertikale Linie in Ihrem Bild. Sie erhalten die Ausgabe bei jeder der 4 Frequenzen als Funktion der Zeit. Mit dem Tiefpassfilter können Sie einstellen, wie viel Frequenzabweichung Sie zulassen möchten und wie schnell sich die Ausgänge ändern sollen, dh wie scharf die Kanten sind.
Dies funktioniert auch dann, wenn das Signal ziemlich verrauscht ist.
quelle