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.
> 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.
sumber
Jawaban:
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.
sumber
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.
sumber
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) to
y = a + bx` (naik atau turun).sumber