Kerangka Deteksi Objek Darknet dan YOLO
Darknet adalah kerangka jaringan saraf sumber terbuka yang sebagian besar ditulis dalam C dan C++, dengan beberapa kode CUDA untuk akselerasi GPU. Ia dikenal karena kecepatan dan efisiensinya, menjadikannya pilihan populer untuk aplikasi deteksi objek real-time.
YOLO (You Only Look Once) adalah sistem deteksi objek real-time yang dirancang untuk berjalan dalam kerangka Darknet. Sistem ini unggul dalam kecepatan dan akurasi, secara konsisten mengungguli sistem deteksi objek lainnya dalam benchmark.
Selami lebih dalam dunia Darknet/YOLO:
Kontribusi Hank.ai: Temukan bagaimana Hank.ai secara aktif mendukung komunitas Darknet/YOLO.
Situs Resmi: Jelajahi situs resmi Darknet/YOLO untuk informasi lengkap.
Pertanyaan yang Sering Diajukan: Temukan jawaban atas pertanyaan umum tentang Darknet/YOLO.
Discord Server: Bergabunglah dengan komunitas Darknet/YOLO Discord yang dinamis untuk berdiskusi dan mendapatkan bantuan.
Dokumen
Evolusi YOLO didokumentasikan dalam beberapa makalah penelitian:
1. YOLOv7: Mendorong Batasan Pembelajaran Mendalam untuk Deteksi Objek
2. Scaled-YOLOv4: Meningkatkan YOLOv4 untuk Aplikasi Industri
3. YOLOv4: Kecepatan Optimal dan Akurasi Deteksi Objek
4. YOLOv3: Peningkatan Bertahap
Informasi Umum
Kerangka kerja Darknet/YOLO terus menjadi yang terdepan dalam pendeteksian objek, dengan kecepatan dan akurasi yang baik. Kerangka kerja ini sepenuhnya gratis dan open source, memungkinkan pengembang untuk memasukkannya ke dalam proyek mereka tanpa batasan lisensi atau biaya apa pun.
Darknet V3, dengan nama kode "Jazz", dirilis pada Oktober 2024, mencapai performa luar biasa dengan GPU NVIDIA RTX 3090. Ia dapat memproses video kumpulan data LEGO hingga 1000 FPS, yang berarti setiap frame dianalisis hanya dalam 1 milidetik atau kurang.
Tetap terhubung:
Perselisihan: Bergabunglah dengan server Darknet/YOLO Discord untuk dukungan dan diskusi: https://discord.gg/zSq8rtW.
Darknet/YOLO dapat beradaptasi dan berjalan di berbagai platform, mulai dari Raspberry Pi dan server cloud hingga desktop dan sistem pelatihan kelas atas. Meskipun versi CPU beroperasi pada berbagai perangkat, versi GPU memerlukan GPU berkemampuan CUDA dari NVIDIA.
Versi Darknet
Kerangka kerja Darknet telah berkembang secara signifikan sejak awal, dengan beberapa versi utama:
1. Versi 0.x: Versi asli ini, dikembangkan oleh Joseph Redmon antara tahun 2013-2017, tidak memiliki nomor versi tertentu.
2. Versi 1.x: Dikelola oleh Alexei Bochkovskiy dari 2017-2021, versi ini juga tidak memiliki nomor versi.
3. Versi 2.x "OAK": Disponsori oleh Hank.ai dan dikelola oleh Stéphane Charette mulai tahun 2023, ini menandai versi pertama dengan perintah versi. Versi ini berjalan hingga akhir tahun 2024.
4. Versi 3.x "JAZZ": Versi terbaru, dirilis pada Oktober 2024, memperkenalkan peningkatan signifikan dan API baru.
Membangun Jaringan Gelap
Membangun Darknet memerlukan kompiler C++17 atau yang lebih baru, OpenCV, dan sistem build CMake. Meskipun prosesnya mungkin tampak rumit, Anda tidak perlu menjadi ahli C++ untuk membangun, menginstal, dan menjalankan Darknet/YOLO.
Opsi Bangunan:
1. Google Colab: Instruksi Google Colab identik dengan instruksi Linux.
2. Metode CMake Linux: Metode ini memberikan panduan rinci untuk pengguna Linux.
3. Metode CMake Windows: Ikuti petunjuk berikut untuk membuat Darknet di Windows.
Catatan: Jika Anda menggunakan tutorial lama, langkah pembuatannya mungkin berbeda dari pendekatan terpadu baru yang diuraikan di bawah.
Pengembang Perangkat Lunak: Kunjungi https://darknetcv.ai/ untuk mendapatkan wawasan tentang cara kerja kerangka deteksi objek Darknet/YOLO.
Google Kolab
Petunjuk Google Colab sangat mirip dengan Metode CMake Linux. Ada beberapa notebook Jupyter dalam subdirektori colab yang mendemonstrasikan tugas tertentu seperti melatih jaringan baru.
Metode CMake Linux
Ikuti petunjuk berikut untuk membangun Darknet di Linux:
1. Prasyarat: Instal alat yang diperlukan:
' pesta
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Clone Darknet: Unduh repositori Darknet:
' pesta
mkdir ~/srccd ~/src
git klon https://github.com/hank-ai/darknet
cd darknet
`
3. Buat Direktori Pembuatan: Buat direktori untuk proses pembuatan:
' pesta
mkdir membangun
pembuatan cd
`
4. Konfigurasikan dengan CMake: Hasilkan file build:
' pesta
cmake -DCMAKEBUILDTYPE=Lepaskan ..
`
5. Bangun Darknet: Bangun executable Darknet:
' pesta
buat -j4
`
6. Paket Instalasi: Buat paket DEB untuk kemudahan instalasi (opsional):
' pesta
membuat paket
sudo dpkg -i darknet-VERSION.deb
`
7. CUDA/cuDNN (Opsional): Untuk akselerasi GPU, instal CUDA atau CUDA+cuDNN:
* CUDA: https://developer.nvidia.com/cuda-downloads
* cuDNN: https://developer.nvidia.com/rdp/cudnn-download
8. Verifikasi Instalasi: Setelah instalasi, periksa versi Darknet:
' pesta
versi darknet
`
Metode Windows CMake
Petunjuk ini ditujukan untuk membangun Darknet pada instalasi Windows 11 22H2 yang bersih.
1. Instal Prasyarat:
' pesta
winget install Git.Git winget install Kitware.CMake winget install nsis.nsis winget install Microsoft.VisualStudio.2022.Community
`
2. Dukungan Visual Studio C++:
* Buka Penginstal Visual Studio dan pilih Ubah.
* Aktifkan Pengembangan Desktop Dengan C++ dan klik Modifikasi.
3. Prompt Perintah Pengembang untuk VS 2022: Buka Prompt Perintah Pengembang untuk VS 2022.
4. Instal Microsoft VCPKG:
' pesta
CDC:
mkdir c:src
cd c:src
git clone https://github.com/microsoft/vcpkg
cd vcpkg.dll
bootstrap-vcpkg.bat
.vcpkg.exe mengintegrasikan instalasi
.vcpkg.exe mengintegrasikan PowerShell
.vcpkg.exe instal opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
5. CUDA/cuDNN (Opsional): Untuk akselerasi GPU, instal CUDA atau CUDA+cuDNN:
* CUDA: https://developer.nvidia.com/cuda-downloads
* cuDNN: https://developer.nvidia.com/rdp/cudnn-download
6. Klon Darknet:
' pesta
cd c:src
git klon https://github.com/hank-ai/darknet.git
cd darknet
mkdir membangun
pembuatan cd
`
7. Konfigurasi dengan CMake:
' pesta
cmake -DCMAKEBUILDTYPE=Rilis -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
`
8. Bangun Darknet dengan MSBuild:
' pesta
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Rilis PACKAGE.vcxproj
`
9. Verifikasi Instalasi: Jalankan Darknet yang dapat dieksekusi dan periksa versinya:
' pesta
C:srcdarknetbuildsrc-cliReleasedarknet.exe versi
`
10. Instal Paket NSIS: Jalankan file darknet-VERSION.exe di direktori build untuk menginstal Darknet, perpustakaan, menyertakan file, dan DLL.
Menggunakan Darknet
Darknet menawarkan antarmuka baris perintah (CLI) untuk berinteraksi dengan kerangka kerja.
Catatan: Selain Darknet CLI, proyek DarkHelp menyediakan CLI alternatif dengan fitur yang ditingkatkan. Anda dapat menggunakan Darknet CLI dan DarkHelp CLI secara bersamaan.
Perintah Umum Darknet CLI:
Bantuan: Daftar perintah yang tersedia:
' pesta
bantuan darknet
`
Versi: Periksa versi Darknet:
' pesta
versi darknet
`
Prediksi (Gambar): Melakukan deteksi objek pada gambar:
' pesta
# Versi 2
tes detektor darknet cars.data cars.cfg cars_best.weights image1.jpg
# Versi 3
darknet02displayannotatedimages mobil.cfg image1.jpg
# Bantuan Gelap
DarkHelp mobil.cfg mobil.cfg mobil_best.weights image1.jpg
`
Koordinat Keluaran (Gambar): Dapatkan koordinat objek:
' pesta
# Versi 2
detektor darknet menguji animal.data animal.cfg animalbest.weights -extoutput dog.jpg
# Versi 3
darknet01inference_images hewan anjing.jpg
# Bantuan Gelap
DarkHelp --json animal.cfg animal.names animal_best.weights dog.jpg
`
Pemrosesan Video:
' pesta
# Versi 2
# Jalankan pada file video
demo detektor darknet animal.data animal.cfg animalbest.weights -extoutput test.mp4
# Jalankan di webcam
demo detektor darknet animal.data animal.cfg animal_best.weights -c 0
# Versi 3
# Jalankan pada file video
darknet03display_videos animal.cfg test.mp4
# Jalankan di webcam
darknet08display_webcam binatang
# Bantuan Gelap
# Jalankan pada file video
DarkHelp animal.cfg animal.names animal_best.weights test.mp4
`
Simpan Hasil ke Video:
' pesta
# Versi 2
demo detektor darknet animal.data animal.cfg animalbest.weights test.mp4 -outfilename res.avi
# Versi 3
darknet05prosesvideoshewan multithread.cfg hewan.nama hewan_terbaik.tes bobot.mp4
# Bantuan Gelap
DarkHelp animal.cfg animal.names animal_best.weights test.mp4
`
Keluaran JSON:
' pesta
# Versi 2
demo detektor darknet hewan.data hewan.cfg hewanbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
# Versi 3
darknet06imagestojson hewan image1.jpg
# Bantuan Gelap
DarkHelp --json animal.names animal.cfg animal_best.weights image1.jpg
`
GPU Tertentu: Jalankan pada GPU yang ditunjuk:
' pesta
# Versi 2
demo detektor darknet animal.data animal.cfg animal_best.weights -i 1 test.mp4
`
Pemeriksaan Akurasi: Evaluasi keakuratan jaringan:
' pesta
peta detektor darknet Driving.data Driving.cfg Driving_best.weights
`
Hitung Jangkar:
' pesta
detektor darknet calcanchors animal.data -numof_clusters 6 -width 320 -height 256
`
Melatih Jaringan Baru
DarkMark: Untuk pendekatan yang intuitif dan efisien dalam membuat anotasi dan pelatihan, gunakan DarkMark.
Pengaturan Manual:
1. Buat Direktori: Siapkan folder untuk data pelatihan Anda.
2. Salin Konfigurasi: Pilih file konfigurasi sebagai templat, misalnya cfg/yolov4-tiny.cfg, dan salin ke direktori Anda.
3. Buat File .names: Buat file teks (misalnya, animal.names) yang berisi daftar kelas Anda, satu per baris.
4. Buat File .data: Buat file teks (misalnya, hewan.data) dengan struktur berikut:
`
kelas = 4
kereta = /path/ke/animals_train.txt
valid = /path/ke/animals_valid.txt
nama = /path/ke/hewan.nama
cadangan = /path/ke/backup_directory
`
5. Siapkan Kumpulan Data: Atur gambar dan file anotasi terkait dalam direktori.
6. Buat File Teks Train/Valid: Buat dua file teks (animalstrain.txt, animalvalid.txt) yang mencantumkan jalur ke gambar untuk pelatihan dan validasi.
7. Ubah Konfigurasi:
* Tetapkan kumpulan=64.
* Sesuaikan subdivisi berdasarkan memori GPU Anda.
Tetapkan max_batches ke nilai yang sesuai (misalnya, jumlah kelas 2000).
* Tetapkan langkah ke 80% dan 90% dari max_batches.
* Sesuaikan lebar dan tinggi sesuai dengan dimensi jaringan Anda.
* Perbarui kelas agar sesuai dengan jumlah kelas.
* Ubah filter di bagian [konvolusional] sebelum bagian [yolo].
8. Mulai Pelatihan:
' pesta
cd /path/ke/animals
detektor darknet -peta -dont_show melatih hewan.data hewan.cfg
`
9. Lihat Kemajuan: Pantau kemajuan pelatihan melalui file chart.png.
Alat dan Tautan Lainnya
DarkMark: Alat ini menyederhanakan anotasi gambar, verifikasi, dan pembuatan file untuk pelatihan dengan Darknet.
DarkHelp: CLI alternatif yang tangguh untuk Darknet dengan fitur seperti ubin gambar dan pelacakan objek.
FAQ Darknet/YOLO: Temukan jawaban atas pertanyaan umum.
Saluran YouTube Stéphane: Akses tutorial dan video contoh.
Server Perselisihan Darknet/YOLO: Bergabunglah dengan komunitas untuk mendapatkan dukungan dan diskusi.
Peta jalan
Selesai:
Mengganti qsort() dengan std::sort() untuk efisiensi.
Menghapus kode yang tidak digunakan lagi (misalnya, check_mistakes, getchar(), system()).
Memigrasikan Darknet ke kompiler C++.
Memperbaiki masalah pembuatan Windows.
Dukungan Python dipulihkan.
Membangun perpustakaan Darknet.
Mengaktifkan kembali kode CUDA/GPU, CUDNN, dan setengah CUDNN.
Peningkatan informasi versi CUDA.
Set instruksi AVX diaktifkan kembali.
Menghapus solusi lama dan Makefile.
Menjadikan OpenCV sebagai ketergantungan wajib.
Menghapus dependensi perpustakaan yang sudah ketinggalan zaman (misalnya, pthread, STB).
CMakeLists.txt ditulis ulang untuk meningkatkan deteksi CUDA.
Mengaktifkan build di luar sumber.
Output nomor versi yang ditingkatkan.
Mengoptimalkan kinerja untuk pelatihan dan inferensi.
Kode yang dibersihkan agar lebih mudah dibaca.
Ditulis ulang darknet.h untuk API yang lebih baik.
Peningkatan dukungan untuk perangkat Jetson berbasis ARM.
Memperbaiki API Python di V3.
Tujuan Jangka Pendek:
Tukar printf() dengan std::cout.
Selidiki dukungan kamera zed.
Tingkatkan penguraian baris perintah.
Tujuan Jangka Menengah:
Ganti semua kode char dengan std::string.
Alamat peringatan kompiler.
Tingkatkan penggunaan cv::Mat alih-alih struktur gambar khusus.
Tingkatkan fungsionalitas daftar ke std::vector atau std::list.
Mendukung gambar skala abu-abu 1 saluran.
Tambahkan dukungan untuk gambar saluran-N (N > 3).
Pembersihan kode yang sedang berlangsung.
Tujuan Jangka Panjang:
Mengatasi masalah CUDA/CUDNN di berbagai GPU.
Tulis ulang kode CUDA+cuDNN untuk meningkatkan efisiensi.
Jelajahi dukungan untuk GPU non-NVIDIA.
Terapkan kotak pembatas yang diputar dan dukungan "sudut".
Tambahkan titik kunci, kerangka, dan peta panas.
Memperkenalkan kemampuan segmentasi.