Apakah ada teknik pembelajaran mesin untuk mengidentifikasi titik pada plot / gambar?


8

Saya memiliki data untuk posisi lateral setiap kendaraan dari waktu ke waktu dan nomor lajur seperti yang ditunjukkan dalam 3 plot ini dalam gambar dan sampel data di bawah ini.

masukkan deskripsi gambar di sini

> a
   Frame.ID   xcoord Lane
1       452 27.39400    3
2       453 27.38331    3
3       454 27.42999    3
4       455 27.46512    3
5       456 27.49066    3

Posisi lateral bervariasi dari waktu ke waktu karena pengemudi manusia tidak memiliki kontrol sempurna atas posisi kendaraan. Manuver perubahan jalur dimulai ketika posisi lateral berubah secara drastis dan berakhir ketika variasi menjadi 'normal' lagi. Ini tidak dapat diidentifikasi dari data secara langsung. Saya harus secara manual melihat plot setiap kendaraan untuk menentukan titik awal dan akhir dari manuver perubahan jalur untuk memperkirakan durasi perubahan jalur. Tapi saya punya ribuan kendaraan di set data. Bisakah Anda mengarahkan saya ke algoritma analisis gambar / pembelajaran mesin yang relevan yang dapat dilatih untuk mengidentifikasi poin-poin ini? Saya bekerja di R. Terima kasih sebelumnya.


Sudahkah Anda mencoba mengidentifikasi secara matematis apa yang Anda lakukan ketika Anda secara manual mengklasifikasikan manuver perubahan jalur? Apakah Anda secara luas mencari perubahan dari periode stabil dekat dengan gradien nol dari fungsi posisi jalur diikuti oleh peningkatan besar dalam besarnya gradien, yang mengarah ke periode lain yang dekat dengan gradien nol atau akhir data?
image_doctor

Apakah Anda memiliki sejumlah gambar asli untuk kami coba?
image_doctor

Sumbu dan skala adalah legenda yang tidak terlalu konsisten di seluruh contoh gambar, apakah ada cara untuk membakukan plot, atau apakah Anda tidak memiliki kendali atas pembuatan gambar?
image_doctor

1
Ya, saya mengerti bahwa Anda ingin mengidentifikasi akhir dari manuver lane perubahan, tetapi jika Anda sudah memiliki lajur kendaraan pada setiap waktu, maka tidak sulit untuk mendeteksi perubahan itu. Saya akan mulai dengan menentukan kapan kita harus mempertimbangkan bahwa kendaraan tidak mengubah jalur lagi (misalnya setelah beberapa detik mengemudi di jalur yang sama). Anda dapat menggunakan jendela untuk mendeteksi segmen di mana kendaraan menyimpan jalur yang sama dan titik-titik di awal dan akhir segmen tersebut menggambarkan "permulaan perubahan jalur" dan "perubahan jalur akhir" Anda masing-masing.
Robert Smith

1
Bagus. Saya pikir Anda tidak memiliki jalur asal dan target tetapi jika Anda selalu memilikinya, solusi Anda harusnya berfungsi dan selain itu menggunakan data yang sudah Anda miliki untuk membuat definisi perubahan jalur.
Robert Smith

Jawaban:


2

Turunan pertama, di permukaan, akan melakukannya. Namun, data yang Anda tunjukkan memiliki banyak noise di dalamnya, jadi kami membutuhkan cara untuk mengevaluasi turunan pertama dengan cara yang agak tanpa suara, atau setidaknya dalam domain frekuensi yang menghilangkan jitter dan mempertahankan perubahan turunan utama.

Analisis wavelet dapat mencapai ini untuk Anda, terutama jika Anda menggunakan turunan pertama Gaussian sebagai wavelet ibu Anda. R memiliki beberapa paket wavelet yang layak (lihat r-project.org sebagai permulaan). Jika Anda melakukan transformasi wavelet pada skala pendek, ini akan mengidentifikasi lokasi bit jitter dalam setir. Jika Anda melakukannya pada skala yang lebih besar (yaitu frekuensi yang lebih rendah), Anda mungkin dapat menemukan hanya pergeseran jalur dan bukan kegelisahan kecil.

Jika Anda melatih transformasi dengan kumpulan data yang masuk akal, Anda harus dapat mengidentifikasi skala atau rentang skala yang terkait dengan perubahan jalur. Tetapi perhatikan bahwa jika Anda tidak mengetahuinya, ini adalah sesuatu seperti O (n ^ 2), jadi cobalah untuk mempersempit rentang skala sedikit demi menghemat waktu komputasi.


1

Sepertinya Anda hanya bisa mencari beberapa detik turunan noise yang lebih tinggi. Hitung saja nilai absolut dari selisih terbatas dari setiap catatan waktu hingga yang terakhir (atau salah satu dari yang pertama) dan tunggu serangkaian nilai tinggi. Saat itulah perubahan jalur terjadi.


Ini sebenarnya yang saya lakukan sejak awal. Masalahnya adalah bahwa perbedaan ambang batas dan nilai "tinggi" sangat subyektif karena perjalanan setiap kendaraan berbeda.
umair durrani

1

Coba paket changepoint . Saya menggunakannya dalam kasus serupa.

Analisis Changepoint adalah nama statistik untuk metode yang mendeteksi perubahan antara dua "rezim". Mobil yang tinggal di jalur adalah garis dengan gradien 0 di titik tengah jalur. Anda dapat dengan mudah memasukkan model statistik untuk mobil yang mengemudi di jalur. Lajur pengubah mobil mengemudi di sepanjang garis dengan gradien yang bukan 0. Model telah berubah. Analisis changepoint, dan paket changepoint, adalah persis apa yang Anda butuhkan untuk menentukan titik ketika model berubah dari y=a' (straight and level) toy = a + bx` (naik atau turun).


Ini pada dasarnya adalah jawaban tautan saja dan cenderung tidak disarankan di SE. Mungkin Anda bisa menguraikan apa itu dan mengapa itu membantu.
Sean Owen

@AlbertoD Bahasa kuno dari sketsa yang Anda bagikan tidak membantu seseorang yang baru dengan konsep analisis changepoint.
umair durrani

@AlbertoD Bisakah Anda memberikan contoh bagaimana Anda menggunakan paket cp dalam kasus Anda?
umair durrani
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.