You Only Look Once

**You Only Look Once (YOLO)** adalah serangkaian sistem deteksi objek langsung (*real-time*) berdasarkan Jaringan saraf konvolusional. Sejak pertama kali diperkenalkan oleh Jasoph Redmon dkk. pada tahun 2015, YOLO terus mengalami beberapa iterasi dan perbaikan, menjadikannya sebagai salah satu kerangka kerja deteksi objek yang paling populer.

Nama "You Only Look Once" atau yang dalam bahasa Indonesia diterjemahkan menjadi "Anda Hanya Melihat Sekali" mengacu pada fakta bahwa algoritma tersebut hanya memerlukan satu lintasan propagasi maju melalui jaringan saraf untuk membuat prediksi, tidak seperti teknik berbasis proposal wilayah terdahulu seperti Jaringan Syaraf Tiruan Berbasis Wilayah (R-CNN) yang memerlukan ribuan lintasan untuk satu gambar.

## Gambaran
Dibandingkan dengan metode terdahulu, seperti R-CNN dan OverFeat, YOLO menerapkan satu jaringan saraf ke seluruh gambar, alih-alih menerapkan model ke gambar di beberapa lokasi dan skala. Jaringan ini membagi gambar menjadi beberapa wilayah dan memprediksi kotak pembatas dan probabilitas untuk setiap wilayah. Kotak pembatas ini diberi bobot berdasarkan probabilitas yang diprediksi.

### OverFeat
OverFeat adalah model terdahulu yang berpengaruh untuk klasifikasi dan lokalisasi objek secara simultan. Arsitekturnya adalah sebagai berikut:

* Melatih jaringan saraf untuk klasifikasi gambar saja ("jaringan yang dilatih untuk klasifikasi"). Ini bisa seperti AlexNet.

* Lapisan terakhir jaringan yang dilatih dihapus, dan untuk setiap kelas objek yang memungkinkan, inisialisasi modul jaringan pada lapisan terakhir ("jaringan regresi"). Jaringan dasar dibekukan parameternya. Jaringan regresi dilatih untuk memprediksi koordinat (x, y) dua sudut kotak pembatas objek.

* Selama waktu inferensi, jaringan yang dilatih klasifikasi dijalankan pada gambar yang sama pada berbagai tingkat pembesaran dan pemotongan. Untuk masing-masing, jaringan tersebut mengeluarkan label kelas dan probabilitas untuk label kelas tersebut. Setiap keluaran kemudian diproses oleh jaringan regresi kelas yang sesuai. Hal ini menghasilkan ribuan kotak pembatas dengan label kelas dan probabilitas. Kotak-kotak ini digabungkan hingga hanya tersisa satu kotak dengan satu label kelas.

## Versi
Seri YOLO terdiri dari dua bagian. Bagian asli berisi YOLOv1, v2, dan v3, yang semuanya dirilis di situs web yang dikelola oleh Joseph Redmon.

### YOLOv1
Algoritma YOLO asli, yang diperkenalkan pada tahun 2015, membagi gambar S \times S menjadi kisi sel. Jika bagian tengah kotak pembatas objek jatuh ke dalam sel kisi, sel tersebut dikatakan "berisi" objek tersebut. Setiap sel kisi memprediksi kotak pembatas B dan skor keyakinan untuk kotak tersebut. Skor keyakinan ini mencerminkan seberapa yakin model tersebut bahwa kotak tersebut berisi objek dan seberapa akurat model tersebut memperkirakan kotak tersebut.

Secara lebih rinci, jaringan melakukan operasi konvolusional yang sama pada setiap S^2 *patch*. *Output* jaringan pada setiap *patch* adalah *tuple* sebagai berikut:(p_1, \dots, p_C, c_1, x_1, y_1, w_1, h_1, \dots, c_B, x_B, y_B, w_B, h_B)di mana

* p_i adalah probabilitas bersyarat (*conditional*) bahwa sel tersebut berisi objek kelas i, bersyarat pada sel yang berisi setidaknya satu objek.
* x_j, y_j, w_j, h_j adalah koordinat pusat, lebar, dan tinggi ke-j kotak pembatas yang diprediksi yang berpusat di dalam sel. Beberapa kotak pembatas diprediksi untuk memungkinkan setiap prediksi mengkhususkan diri dalam satu jenis kotak pembatas. Misalnya, objek ramping mungkin diprediksi oleh j = 2 sementara benda-benda yang kuat mungkin diprediksi oleh  j=  1.
* c_j adalah prediksi irisan atas gabungan (IoU) dari setiap kotak pembatas dengan dasar kebenarannya yang bersesuaian.
Arsitektur jaringan memiliki 24 lapisan konvolusional diikuti oleh 2 lapisan yang terhubung penuh.

Selama pelatihan, untuk setiap sel, jika berisi kotak pembatas kebenaran dasar, maka hanya kotak pembatas yang diprediksi dengan IoU tertinggi dengan kotak pembatas kebenaran dasar yang digunakan untuk penurunan gradien. Secara konkret, misalkan  j menjadi kotak pembatas yang diprediksi, dan misalkan i menjadi label kelas kebenaran dasar, maka x_j, y_j, w_j, h_j dilatih dengan penurunan gradien untuk mendekati kebenaran dasar, p_i  dilatih menuju 1 , lainnya p_{i'}  dilatih menuju nol.

Jika sel tidak mengandung kebenaran dasar, maka hanya c_1, c_2, \dots, c_B dilatih dengan penurunan gradien untuk mendekati nol.

### YOLOv2
Dirilis pada tahun 2016, YOLOv2 (juga dikenal sebagai YOLO9000) menyempurnakan model asli dengan menggabungkan normalisasi batch, pengklasifikasi resolusi yang lebih tinggi, dan menggunakan kotak jangkar untuk memprediksi kotak pembatas. Model ini dapat mendeteksi lebih dari 9000 kategori objek. Model ini juga dirilis di GitHub di bawah lisensi Apache 2.0.

### YOLOv3
YOLOv3, diperkenalkan pada tahun 2018, hanya berisi perbaikan "bertahap", termasuk penggunaan jaringan backbone yang lebih kompleks, beberapa skala untuk deteksi, dan fungsi kerugian yang lebih canggih.

### YOLOv4 dan seterusnya
Versi-versi YOLO berikutnya (v4, v5, dst.) telah dikembangkan oleh berbagai peneliti, yang selanjutnya meningkatkan kinerja dan memperkenalkan fitur-fitur baru. Versi-versi ini tidak secara resmi dikaitkan dengan penulis YOLO asli, tetapi dibangun berdasarkan karya mereka. Hingga tahun 2023, telah tersedia YOLOv8.

## Lihat juga
* Visi komputer
* Jaringan saraf konvolusional
* R-CNN

## Referensi

## Pranala luar
* Situs resmi YOLO
* Implementasi YOLO pada Darknet