Neuronale Netze und Kollisionserkennung

  • C#
  • .NET 4.5

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von φConst.

    Neuronale Netze und Kollisionserkennung

    Hallo,

    nur mal so aus Interesse: Wäre es theoretisch möglich Kollisionen (exemplarisch von Rechteck-Rechteck) auf Basis neuronaler Netze zu ermitteln?
    Als Input würde man dann eben X,Y-Koordinate, Breite, Höhe forwarden und über Gradientenabstiegsverfahren dann eben das Netzwerk trainieren.

    Die Soll-Werte wären ja dann leicht zu berechnen (Rect.IntersetcsWith(RectA) ? 1 : 0).

    Eine andere Möglichkeit wäre intern eine Bitmap zu erstellen, die jeweiligen Rectangles zu zeichnen, es einem Convolutional Neural Network übergeben und dann eben trainieren.

    Wie seht ihr das?

    Klar könnte man sich dran setzen und es ausprobieren, vielleicht hat es aber dennoch hier jemand mal versucht und mag seine Ergebnisse und Eindrücke teilen.

    Liebe Grüße.
    DotNETWork (Generische Tcp-Klasse, verschlüsselt!)
    MonogameMinecraftClone (Minecraft-Klon)
    NeuroEvolution (Implementation zweier Lernmethoden für neuronale Netze)
    @φConst Das lässt sich doch exakt berechnen, da brauchst Du keine neuronalen Netze.
    Gugst Du Diskussion zum Thema Kollision und Reflexion - Elastischer Stoß
    und
    Kollision und Reflexion - Elastischer Stoß
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Hallo, ja das ist mir bewusst, dies frage ich aber aufgrund der Möglichkeit der Ausweiterbarkeit auf 3D Intersection Tests.

    Beispiel: Für ein Voxelizer ist es notwendig zu prüfen ob eine BoundingBox und Dreieck eine Schnittpunkt haben, falls ja, BoundingBox in kleinere Octrees zerteilen.

    Diese Methode wird aber sehr sehr oft aufgerufen und der Test ist relativ rechenintensiv ( mehrere Crossproducts Dotproducts et cetera). Theoretisch sollte man die Komplexität dahingehend optimieren können wenn man ein neuronales Netz entwickelt das eben dieses spezifische Muster (Kollision) erkennt und wesentlich schneller als der eigentliche Test funktioniert . So präzise muss es nicht sein, false positives wäre kein Problem und man könnte es ja noch besser trainieren.

    Aber im Grunde wären das dann vermutlich schneller als der eigentliche Test.

    Deswegen eben meine Frage.
    Liebe Grüße .
    DotNETWork (Generische Tcp-Klasse, verschlüsselt!)
    MonogameMinecraftClone (Minecraft-Klon)
    NeuroEvolution (Implementation zweier Lernmethoden für neuronale Netze)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „φConst“ ()

    @φConst Bei Quadern hast Du einen Abstand in 3 Komponenten.
    Das geht doch beliebig schnell, um zumindest einen Crash auszuschließen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    φConst schrieb:

    Was genau meinst du ?
    Du hast je 3 Koordinaten {x1, y1, z1} und {x2, y2, z2}.
    Wenn alle Beträge der Differenzen zweier Paare {x2-x1, y2-y1; z2-z1} kleiner als die jeweiligen Summen der halben Kantenlängen sind, knallt es.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Differenz welcher Koordinaten ?
    Etwa der Betrag des Differenzvektors der Eckpunkte des AABB und Dreieck?

    Es sieht sehr danach aus das nicht alle Fälle dadurch abgedeckt sind ...

    Sonnige Grüße
    DotNETWork (Generische Tcp-Klasse, verschlüsselt!)
    MonogameMinecraftClone (Minecraft-Klon)
    NeuroEvolution (Implementation zweier Lernmethoden für neuronale Netze)

    φConst schrieb:

    Differenz welcher Koordinaten ?
    Mittelpunkte der Voxel.
    Welche Fälle sind nicht abgedeckt?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!
    Intuitiv würde ich sagen wenn zum Beispiel das Dreieck riesig ist und der Voxel ( der? Das? Der Pixel) weitaus kleiner, würde der Abstand des Mittelpunktes des Voxels zu den Eckpunkten des Dreiecks wenn der Voxel inmitten des AABB ist keine Aussagekraft haben ob denn nun der Voxel im Dreieck ist .

    _
    DotNETWork (Generische Tcp-Klasse, verschlüsselt!)
    MonogameMinecraftClone (Minecraft-Klon)
    NeuroEvolution (Implementation zweier Lernmethoden für neuronale Netze)