Kerangka Deteksi Objek Darknet dan YOLO
Logo !darknet dan hank.ai
Darknet adalah kerangka jaringan saraf sumber terbuka yang sebagian besar ditulis dalam C dan CUDA.
YOLO (You Only Look Once) adalah sistem deteksi objek real-time yang beroperasi dalam kerangka Darknet.
Baca bagaimana Hank.ai membantu komunitas Darknet/YOLO
Mengumumkan Darknet V3 "Jazz"
Lihat situs web Darknet/YOLO
Silakan baca FAQ Darknet/YOLO
Bergabunglah dengan server perselisihan Darknet/YOLO
Dokumen
1. Kertas YOLOv7
2. Kertas Berskala-YOLOv4
3. Kertas YOLOv4
4. Kertas YOLOv3
Informasi Umum
Kerangka kerja Darknet/YOLO tetap lebih cepat dan akurat dibandingkan kerangka kerja dan versi YOLO lainnya.
Kerangka kerja ini sepenuhnya gratis dan bersumber terbuka. Anda dapat mengintegrasikan Darknet/YOLO ke dalam proyek dan produk yang sudah ada, termasuk proyek dan produk komersial, tanpa lisensi atau pembayaran.
Darknet V3 (“Jazz”), yang dirilis pada Oktober 2024, dapat memproses video dataset LEGO secara akurat hingga 1000 FPS saat menggunakan GPU NVIDIA RTX 3090. Ini berarti setiap frame video dibaca, diubah ukurannya, dan diproses oleh Darknet/YOLO dalam 1 milidetik atau kurang.
Bergabunglah dengan server Darknet/YOLO Discord untuk bantuan atau diskusi: https://discord.gg/zSq8rtW
Versi CPU Darknet/YOLO berjalan di berbagai perangkat, termasuk Raspberry Pi, server cloud & colab, desktop, laptop, dan rig pelatihan kelas atas. Versi GPU Darknet/YOLO memerlukan GPU berkemampuan CUDA dari NVIDIA.
Darknet/YOLO diketahui bekerja di Linux, Windows, dan Mac. Lihat petunjuk pembuatan di bawah.
Versi Darknet
Alat Darknet asli yang ditulis oleh Joseph Redmon pada tahun 2013-2017 tidak memiliki nomor versi. Kami menganggap versi ini 0.x.
Repo Darknet populer berikutnya yang dikelola oleh Alexei Bochkovskiy antara tahun 2017-2021 juga tidak memiliki nomor versi. Kami menganggap ini versi 1.x.
Repo Darknet yang disponsori oleh Hank.ai dan dikelola oleh Stéphane Charette mulai tahun 2023 adalah yang pertama dengan perintah versi. Dari tahun 2023 hingga akhir tahun 2024, ia mengembalikan versi 2.x "OAK".
Tujuannya adalah untuk mencoba dan memecah sesedikit mungkin fungsi yang ada sambil mengenal basis kode.
Perubahan penting di Darknet 2.x meliputi:
Menulis ulang langkah-langkah pembangunan untuk pembangunan berbasis CMake terpadu di Windows dan Linux.
Mengonversi basis kode untuk menggunakan kompiler C++.
Meningkatkan visualisasi chart.png selama pelatihan.
Perbaikan bug dan optimalisasi kinerja, terutama berfokus pada pengurangan waktu pelatihan.
Cabang terakhir dari basis kode ini adalah versi 2.1 di cabang v2.
Fase pengembangan berikutnya dimulai pada pertengahan tahun 2024 dan dirilis pada bulan Oktober 2024. Perintah versi sekarang mengembalikan 3.x "JAZZ".
Anda selalu dapat melakukan checkout pada cabang v2 sebelumnya jika Anda perlu menjalankan salah satu perintah ini. Beri tahu kami jika Anda menemukan perintah yang hilang.
Perubahan penting di Darknet 3.x meliputi:
Penghapusan banyak perintah lama dan tidak terawat.
Optimalisasi kinerja yang signifikan untuk pelatihan dan inferensi.
Modifikasi API C lama, memerlukan sedikit modifikasi untuk aplikasi yang menggunakan API Darknet asli. Lihat dokumentasi API yang diperbarui di sini: https://darknetcv.ai/api/api.html
Pengenalan Darknet V3 C dan C++ API baru: https://darknetcv.ai/api/api.html
Aplikasi baru dan kode contoh di direktori src-examples: https://darknetcv.ai/api/files.html
Anak Timbangan Terlatih MSCOCO
Beberapa versi YOLO yang populer telah dilatih sebelumnya untuk kenyamanan pada kumpulan data MSCOCO. Dataset ini berisi 80 kelas, yang dapat ditemukan di file teks cfg/coco.names.
Ada beberapa kumpulan data sederhana dan anak timbangan terlatih lainnya yang tersedia untuk pengujian Darknet/YOLO, seperti LEGO Gears dan Rolodex. Lihat FAQ Darknet/YOLO untuk detailnya.
Anak timbang terlatih MSCOCO dapat diunduh dari berbagai lokasi, termasuk repositori ini:
YOLOv2 (November 2016)
YOLOv2-kecil
YOLOv2-penuh
YOLOv3 (Mei 2018)
YOLOv3-kecil
YOLOv3-penuh
YOLOv4 (Mei 2020)
YOLOv4-kecil
YOLOv4-penuh
YOLOv7 (Agustus 2022)
YOLOv7-kecil
YOLOv7-penuh
Anak timbangan MSCOCO yang telah dilatih sebelumnya disediakan untuk tujuan demonstrasi saja. File .cfg dan .names yang sesuai untuk MSCOCO ada di direktori cfg. Contoh perintah:
`
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.nama yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.nama yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
Ingatlah bahwa Anda didorong untuk melatih jaringan Anda sendiri. MSCOCO terutama digunakan untuk mengonfirmasi bahwa semuanya berfungsi dengan benar.
Bangunan
Berbagai metode pembangunan yang tersedia di masa lalu (sebelum tahun 2023) telah digabungkan menjadi satu solusi terpadu. Darknet memerlukan C++17 atau lebih baru, OpenCV, dan menggunakan CMake untuk menghasilkan file proyek yang diperlukan.
Anda tidak perlu mengetahui C++ untuk membangun, menginstal, atau menjalankan Darknet/YOLO, sama seperti Anda tidak perlu menjadi mekanik untuk mengendarai mobil.
Hati-hati jika Anda mengikuti tutorial lama dengan langkah build yang lebih rumit, atau langkah build yang tidak sesuai dengan yang ada di readme ini. Langkah-langkah pembangunan baru seperti yang dijelaskan di bawah dimulai pada Agustus 2023.
Pengembang perangkat lunak didorong untuk mengunjungi https://darknetcv.ai/ untuk mendapatkan informasi tentang internal kerangka deteksi objek Darknet/YOLO.
Google Kolab
Petunjuk Google Colab sama dengan petunjuk Linux. Beberapa buku catatan Jupyter tersedia untuk mendemonstrasikan tugas seperti melatih jaringan baru.
Lihat notebook di subdirektori colab, dan/atau ikuti petunjuk Linux di bawah.
Metode CMake Linux
Tutorial pembuatan Darknet untuk Linux
1. Instal paket yang diperlukan:
' pesta
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Kloning repositori Darknet:
' pesta
mkdir ~/src
cd ~/src
git klon https://github.com/hank-ai/darknet
cd darknet
`
3. Buat direktori build dan jalankan CMake:
' pesta
mkdir membangun
pembuatan cd
cmake -DCMAKEBUILDTYPE=Lepaskan ..
`
4. Bangun Jaringan Gelap:
' pesta
buat -j4
`
5. Opsional: Instal CUDA atau CUDA+cuDNN
Jika Anda memiliki GPU NVIDIA modern, Anda dapat menginstal CUDA atau CUDA+cuDNN. Ini akan memungkinkan Darknet menggunakan GPU Anda untuk pemrosesan gambar dan video yang lebih cepat.
- Unduh dan instal CUDA dari https://developer.nvidia.com/cuda-downloads.
- Unduh dan instal cuDNN dari https://developer.nvidia.com/rdp/cudnn-download atau https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- ikhtisar instalasi.
Penting: Jika Anda menginstal CUDA atau CUDA+cuDNN setelah membangun Darknet, Anda harus menghapus file CMakeCache.txt di direktori build Anda dan menjalankan kembali cmake untuk memastikan bahwa CMake dapat menemukan file yang diperlukan.
Catatan: Darknet dapat berjalan tanpa CUDA, tetapi jika Anda ingin melatih jaringan khusus, diperlukan CUDA atau CUDA+cuDNN.
6. Paket dan instal Darknet:
' pesta
membuat paket
sudo dpkg -i darknet-VERSION.deb
`
Penting: Jika Anda menggunakan CMake versi lama, Anda mungkin perlu memutakhirkannya sebelum menjalankan perintah cmake. Tingkatkan CMake di Ubuntu menggunakan:
' pesta
sudo apt-get pembersihan cmake
sudo snap install cmake --klasik
`
Pengguna tingkat lanjut:
- Jika Anda ingin membuat file instalasi RPM dan bukan file DEB, edit dua baris berikut di CM_package.cmake sebelum menjalankan make package:
`membuat
# SET (CPACK_GENERATOR "DEB")
SET (CPACK_GENERATOR "RPM")
`
- Untuk menginstal paket instalasi setelah selesai dibangun, gunakan manajer paket distribusi Anda. Misalnya, pada sistem berbasis Debian seperti Ubuntu:
' pesta
sudo dpkg -i darknet-2.0.1-Linux.deb
`
- Menginstal paket .deb akan menyalin file berikut:
- /usr/bin/darknet: Darknet dapat dieksekusi.
- /usr/include/darknet.h: Darknet API untuk pengembang C, C++, dan Python.
- /usr/include/darknet_version.h: Berisi informasi versi untuk pengembang.
- /usr/lib/libdarknet.so: Pustaka yang akan dihubungkan dengan pengembang C, C++, dan Python.
- /opt/darknet/cfg/...: Lokasi semua templat .cfg.
- Kamu sekarang sudah selesai! Darknet telah dibangun dan diinstal ke /usr/bin/. Jalankan versi darknet dari CLI untuk mengonfirmasi instalasi.
Metode Windows CMake
Petunjuk ini mengasumsikan instalasi baru Windows 11 22H2.
1. Instal perangkat lunak yang diperlukan:
`kekuatan
dapatkan instal Git.Git
winget instal Kitware.CMake
winget instal nsis.nsis
winget instal Microsoft.VisualStudio.2022.Community
`
2. Ubah instalasi Visual Studio:
- Buka menu "Windows Start" dan jalankan "Visual Studio Installer".
- Klik "Ubah".
- Pilih "Pengembangan Desktop Dengan C++".
- Klik "Modify" di pojok kanan bawah dan kemudian "Yes".
3. Instal Microsoft VCPKG:
- Buka menu "Windows Start" dan pilih "Developer Command Prompt for VS 2022". Jangan gunakan PowerShell untuk langkah-langkah ini.
- Pengguna tingkat lanjut: Daripada menjalankan Prompt Perintah Pengembang, Anda dapat menggunakan prompt perintah normal atau ssh ke dalam perangkat dan menjalankan Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat secara manual.
- Jalankan perintah berikut:
`kekuatan
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
`
- Bersabarlah selama langkah terakhir ini karena mungkin memerlukan waktu lama untuk dijalankan. Perlu mengunduh dan membangun banyak hal.
- Pengguna tingkat lanjut: Perhatikan bahwa ada banyak modul opsional lain yang mungkin ingin Anda tambahkan saat membuat OpenCV. Jalankan .vcpkg.exe cari opencv untuk melihat daftar lengkap.
4. Opsional: Instal CUDA atau CUDA+cuDNN
Jika Anda memiliki GPU NVIDIA modern, Anda dapat menginstal CUDA atau CUDA+cuDNN. Ini akan memungkinkan Darknet menggunakan GPU Anda untuk pemrosesan gambar dan video yang lebih cepat.
- Unduh dan instal CUDA dari https://developer.nvidia.com/cuda-downloads.
- Unduh dan instal cuDNN dari https://developer.nvidia.com/rdp/cudnn-download atau https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows.
Penting: Jika Anda menginstal CUDA atau CUDA+cuDNN setelah membangun Darknet, Anda harus menghapus file CMakeCache.txt di direktori build Anda dan menjalankan kembali cmake untuk memastikan bahwa CMake dapat menemukan file yang diperlukan.
Catatan: Darknet dapat berjalan tanpa CUDA, tetapi jika Anda ingin melatih jaringan khusus, diperlukan CUDA atau CUDA+cuDNN.
5. Mengkloning Darknet dan membangunnya:
`kekuatan
cd c:src
git klon https://github.com/hank-ai/darknet.git
cd darknet
mkdir membangun
pembuatan cd
cmake -DCMAKEBUILDTYPE=Rilis -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Rilis PACKAGE.vcxproj
`
Penting:
- Instalasi CUDA: CUDA harus diinstal setelah Visual Studio. Jika Anda memutakhirkan Visual Studio, ingatlah untuk menginstal ulang CUDA.
- DLL yang Hilang: Jika Anda mengalami kesalahan tentang DLL CUDA atau cuDNN yang hilang (misalnya, culas64_12.dll), salin file CUDA .dll secara manual ke direktori keluaran yang sama dengan darknet.exe. Misalnya:
`kekuatan
salin "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(Ini adalah contohnya; periksa versi CUDA yang Anda jalankan dan sesuaikan jalurnya.)
- Jalankan kembali msbuild.exe: Setelah menyalin file .dll, jalankan kembali perintah msbuild.exe terakhir untuk menghasilkan paket instalasi NSIS:
`kekuatan
msbuild.exe /property:Platform=x64;Configuration=Rilis PACKAGE.vcxproj
`
- Pengguna tingkat lanjut: Perhatikan bahwa output dari perintah cmake adalah file solusi Visual Studio normal (darknet.sln). Jika Anda rutin menggunakan Visual Studio GUI dan bukan msbuild.exe, Anda dapat mengabaikan langkah-langkah baris perintah dan memuat proyek Darknet di Visual Studio.
- Anda sekarang seharusnya memiliki file yang dapat Anda jalankan: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Jalankan ini untuk menguji: versi C:srcDarknetbuildsrc-cliReleasedarknet.exe.
6. Instal Darknet:
- Jalankan wizard instalasi NSIS yang dibuat pada langkah terakhir. Cari file darknet-VERSION.exe di direktori build. Misalnya:
`
darknet-2.0.31-win64.exe
`
- Paket instalasi NSIS akan:
- Buat direktori bernama Darknet, misalnya C:Program FilesDarknet.
- Instal aplikasi CLI (darknet.exe) dan aplikasi contoh lainnya.
- Instal file .dll pihak ketiga yang diperlukan, seperti file dari OpenCV.
- Instal file Darknet .dll, .lib, dan .h yang diperlukan untuk menggunakan darknet.dll dari aplikasi lain.
- Instal file templat .cfg.
- Kamu sekarang sudah selesai! Setelah wizard penginstalan selesai, Darknet akan diinstal ke C:Program FilesDarknet. Jalankan ini untuk menguji: versi C:Program FilesDarknetbindarknet.exe.
Menggunakan Darknet
CLI
Berikut ini bukan daftar lengkap semua perintah yang didukung oleh Darknet.
Selain CLI Darknet, pertimbangkan juga CLI proyek DarkHelp, yang menawarkan CLI alternatif untuk Darknet/YOLO dengan fitur-fitur canggih yang tidak tersedia langsung di Darknet. Anda dapat menggunakan Darknet CLI dan DarkHelp CLI secara bersamaan.
Untuk sebagian besar perintah di bawah ini, Anda memerlukan file .weights bersama dengan file .names dan .cfg yang sesuai. Anda dapat melatih jaringan Anda sendiri (sangat disarankan!) atau mengunduh jaringan yang telah dilatih sebelumnya dari internet. Contoh kumpulan data terlatih meliputi:
LEGO Gears (untuk menemukan objek dalam gambar)
Rolodex (untuk menemukan teks dalam gambar)
MSCOCO (deteksi objek kelas 80 standar)
Perintah untuk dijalankan:
Dapatkan bantuan:
' pesta
bantuan darknet
`
Periksa versinya:
' pesta
versi darknet
`
Prediksi menggunakan gambar:
V2:
' pesta
tes detektor darknet cars.data cars.cfg cars_best.weights image1.jpg
`
V3:
' pesta
darknet02displayannotatedimages mobil.cfg image1.jpg
`
Bantuan Gelap:
' pesta
DarkHelp mobil.cfg mobil.cfg mobil_best.weights image1.jpg
`
Koordinat keluaran:
V2:
' pesta
detektor darknet menguji animal.data animal.cfg animalbest.weights -extoutput dog.jpg
`
V3:
' pesta
darknet01inference_images hewan anjing.jpg
`
Bantuan Gelap:
' pesta
DarkHelp --json animal.cfg animal.names animal_best.weights dog.jpg
`
Bekerja dengan video:
V2:
' pesta
demo detektor darknet animal.data animal.cfg animalbest.weights -extoutput test.mp4
`
V3:
' pesta
darknet03display_videos animal.cfg test.mp4
`
Bantuan Gelap:
' pesta
DarkHelp animal.cfg animal.names animal_best.weights test.mp4
`
Membaca dari webcam:
V2:
' pesta
demo detektor darknet animal.data animal.cfg animal_best.weights -c 0
`
V3:
' pesta
darknet08display_webcam binatang
`
Simpan hasil ke video:
V2:
' pesta
demo detektor darknet animal.data animal.cfg animalbest.weights test.mp4 -outfilename res.avi
`
V3:
' pesta
darknet05prosesvideoshewan multithread.cfg hewan.nama hewan_terbaik.tes bobot.mp4
`
Bantuan Gelap:
' pesta
DarkHelp animal.cfg animal.names animal_best.weights test.mp4
`
Keluaran JSON:
V2:
' pesta
demo detektor darknet hewan.data hewan.cfg hewanbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
V3:
' pesta
darknet06imagestojson hewan image1.jpg
`
Bantuan Gelap:
' pesta
DarkHelp --json animal.names animal.cfg animal_best.weights image1.jpg
`
Berjalan pada GPU tertentu:
V2:
' pesta
demo detektor darknet animal.data animal.cfg animal_best.weights -i 1 test.mp4
`
Memeriksa keakuratan jaringan saraf:
' pesta
peta detektor darknet Driving.data Driving.cfg Driving_best.weights ...
`
Contoh keluaran:
`
Nama Id Rata-rata Presisi TP FN FP TN Akurasi ErrorRate Precision Recall Spesifisitas FalsePosRate -- ---- ------------ ------ ------ ------ - ----- -------- --------- --------- ------ ----------- -- ---------- 0 kendaraan 91,2495 32648 3903 5826 65129 0,9095 0,0905 0,8486 0,8932 0,9179 0,0821 1 sepeda motor 80,4499 2936 513 569 5393 0,8850 0,1150 0,8377 0,8513 0,9046 0,0954 2 sepeda 89,0912 570 124 104 3548 0,9475 0,0525 0,8457 0,8213 0,9715 0,0285 3 orang 76,7937 7072 1727 2574 27523 0,8894 0,1106 0,7332 0,8037 0,9145 0,0855 4 banyak kendaraan 64.3089 1068 509 733 11288 0,9087 0,0913 0,5930 0,6772 0,9390 0,0610 5 lampu hijau 86,8118 1969 239 510 4116 0,8904 0,1096 0,7943 0,8918 0,8898 0,1102 6 lampu kuning 82,0390 126 38 30 1239 0,9525 0,0475 0,8077 0,7683 0,9764 0,0236 7 lampu merah 94,1033 3449 217 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
`
Memeriksa akurasi mAP@IoU=75:
' pesta
detektor darknet peta animal.data animal.cfg animalbest.weights -iouthresh 0.75
`
Menghitung ulang jangkar:
Yang terbaik adalah menghitung ulang jangkar di DarkMark, karena ini berjalan 100 kali berturut-turut dan memilih jangkar terbaik. Namun, jika Anda ingin menggunakan versi lama di Darknet:
' pesta
detektor darknet calcanchors animal.data -numof_clusters 6 -width 320 -height 256
`
Melatih jaringan baru:
' pesta
detektor darknet -peta -dont_show melatih hewan.data hewan.cfg
`
(Juga lihat bagian Pelatihan di bawah)
Pelatihan
Tautan cepat ke bagian yang relevan dari FAQ Darknet/YOLO:
Bagaimana cara mengatur file dan direktori saya?
File konfigurasi mana yang harus saya gunakan?
Perintah apa yang harus saya gunakan saat melatih jaringan saya sendiri?
Cara termudah untuk membuat anotasi dan melatih adalah dengan DarkMark, yang membuat semua file Darknet yang diperlukan. Ini adalah cara yang disarankan untuk melatih jaringan saraf baru.
Jika Anda lebih suka mengatur berbagai file secara manual untuk melatih jaringan khusus:
1. Buat folder baru:
- Pilih folder untuk menyimpan file Anda. Untuk contoh ini, kita akan membuat jaringan saraf untuk mendeteksi hewan, sehingga direktorinya adalah ~/nn/animals/.
2. Salin file konfigurasi Darknet:
- Salin file konfigurasi Darknet sebagai templat. Misalnya, gunakan cfg/yolov4-tiny.cfg. Tempatkan ini di folder yang Anda buat. Sekarang, Anda harus memiliki ~/nn/animals/animals.cfg.
3. Buat file teks nama binatang:
- Buat file teks animal.names di folder yang sama dengan file konfigurasi. Anda sekarang memiliki ~/nn/animals/animals.names.
4. Edit file animal.names:
- Edit file animal.names menggunakan editor teks. Buat daftar kelas yang ingin Anda deteksi, dengan tepat satu entri per baris, tanpa baris kosong, dan tanpa komentar. Untuk contoh ini, file .names akan berisi empat baris:
`
anjing
kucing
burung
kuda
`
5. Buat file teks animal.data:
- Buat file teks animal.data di folder yang sama. Untuk contoh ini, file .data akan berisi:
`
kelas = 4
kereta = /home/nama pengguna/nn/animals/animals_train.txt
valid = /home/nama pengguna/nn/animals/animals_valid.txt
nama = /home/nama pengguna/nn/animals/animals.names
backup = /home/nama pengguna/nn/animals
`
6. Buat folder untuk gambar dan anotasi:
- Buat folder untuk menyimpan gambar dan anotasi Anda. Misalnya, ini bisa berupa ~/nn/animals/dataset.
- Setiap gambar memerlukan file .txt terkait yang menjelaskan anotasi untuk gambar tersebut. Format file anotasi .txt ini sangat spesifik. Anda tidak dapat membuatnya dengan tangan, karena setiap anotasi memerlukan koordinat yang tepat. Gunakan DarkMark atau perangkat lunak serupa untuk memberi anotasi pada gambar Anda. Format anotasi YOLO dijelaskan di FAQ Darknet/YOLO.
7. Buat file teks "train" dan "valid":
- Buat file teks "kereta" dan "valid" yang diberi nama dalam file .data.
- Kedua file teks ini harus mencantumkan semua gambar yang akan digunakan Darknet untuk pelatihan dan validasi (untuk menghitung% peta).
- Setiap baris harus berisi tepat satu jalur gambar dan nama file. Anda dapat menggunakan jalur relatif atau absolut.
8. Ubah file .cfg:
- Gunakan editor teks untuk mengubah file .cfg Anda:
- Pastikan batch=64.
- Subdivisi: Tergantung pada dimensi jaringan dan memori GPU, Anda mungkin perlu menyesuaikan subdivisi. Mulailah dengan subdivisions=1 dan lihat FAQ Darknet/YOLO jika tidak berhasil.
- Maxbatches: Tetapkan nilai awal yang baik untuk maxbatches hingga 2000 kali jumlah kelas. Untuk contoh ini, kita mempunyai 4 hewan, jadi max_batches=8000.
- Langkah: Tetapkan langkah ke 80% dan 90% dari max_batches. Dalam hal ini, kami akan menggunakan langkah=6400,7200.
- Lebar dan Tinggi: Ini adalah dimensi jaringan. FAQ Darknet/YOLO menjelaskan cara menghitung ukuran terbaik.
- Kelas: Cari semua contoh kelas=... dan perbarui dengan jumlah kelas di file .names Anda. Dalam contoh ini, kami akan menggunakan kelas=4.
- Filter: Cari semua contoh filter=... di bagian [konvolusional] sebelum setiap bagian [yolo]. Nilai yang digunakan adalah (numberofclasses + 5) 3. Untuk contoh ini, (4 + 5) 3 = 27. Jadi kita akan menggunakan filter=27 pada baris yang sesuai.
9. Mulai pelatihan:
- Navigasikan ke direktori ~/nn/animals/:
' pesta
cd ~/nn/hewan/
`
- Jalankan perintah berikut untuk memulai pelatihan:
' pesta
detektor darknet -peta -dont_show melatih hewan.data hewan.cfg
`
- Bersabarlah. Bobot terbaik akan disimpan sebagai animal_best.weights. Anda dapat melacak kemajuan pelatihan dengan mengamati file chart.png. Lihat FAQ Darknet/YOLO untuk parameter tambahan yang mungkin ingin Anda gunakan selama pelatihan.
- Jika Anda ingin informasi pelatihan lebih detail, tambahkan parameter --verbose:
' pesta
detektor darknet -peta -dont_show --verbose melatih hewan.data hewan.cfg
`
Alat dan Tautan Lainnya
DarkMark: Untuk mengelola proyek Darknet/YOLO Anda, membuat anotasi gambar, memverifikasi anotasi, dan membuat file untuk pelatihan dengan Darknet.
DarkHelp: Untuk CLI alternatif yang tangguh untuk Darknet, menggunakan ubin gambar, pelacakan objek dalam video, dan API C++ tangguh yang cocok untuk aplikasi komersial.
FAQ Darknet/YOLO: Sumber daya komprehensif untuk menjawab pertanyaan Anda.
Saluran YouTube Stéphane: Banyak tutorial dan video contoh.
Server Darknet/YOLO Discord: Bergabunglah dengan komunitas untuk mendapatkan dukungan dan diskusi.
Peta jalan
Terakhir diperbarui 30-10-2024:
Selesai:
Mengganti qsort() dengan std::sort() selama pelatihan (beberapa yang tidak jelas lainnya tetap ada).
Menghapus check_mistakes, getchar(), dan system().
Mengonversi Darknet untuk menggunakan kompiler C++ (g++ di Linux, VisualStudio di Windows).
Memperbaiki versi Windows.
Memperbaiki dukungan Python.
Membangun perpustakaan darknet.
Mengaktifkan kembali label pada prediksi (kode "alfabet").
Mengaktifkan kembali kode CUDA/GPU.
Mengaktifkan kembali CUDNN.
Mengaktifkan kembali setengah CUDNN.
Menghapus arsitektur CUDA hard-coded.
Peningkatan informasi versi CUDA.
Mengaktifkan kembali AVX.
Menghapus solusi lama dan Makefile.
Menjadikan OpenCV non-opsional.
Menghapus ketergantungan pada perpustakaan pthread lama.
STB dihapus.
Tulis ulang CMakeLists.txt untuk menggunakan deteksi CUDA baru.
Menghapus kode "abjad" lama dan menghapus 700+ gambar di data/label.
Mengaktifkan build di luar sumber.
Output nomor versi yang ditingkatkan.
Optimalisasi kinerja yang diterapkan terkait pelatihan (berkelanjutan).
Optimalisasi kinerja yang diterapkan terkait inferensi (berkelanjutan).
Gunakan referensi lewat jika memungkinkan.
Membersihkan file .hpp.
Menulis ulang darknet.h.
Menghindari casting cv::Mat ke void*, menggunakannya sebagai objek C++ yang tepat.
Memperbaiki atau meningkatkan konsistensi dalam penggunaan struktur gambar internal.
Memperbaiki build untuk perangkat Jetson berbasis ARM. (Perangkat Jetson asli kemungkinan besar tidak akan diperbaiki karena tidak lagi didukung oleh NVIDIA - tidak ada kompiler C++17. Perangkat Jetson Orin baru berfungsi).
Memperbaiki API Python di V3.
Peningkatan dukungan untuk Python. (Apakah ada pengembang Python yang bersedia membantu dalam hal ini?)
Tujuan jangka pendek
Ganti printf() dengan std::cout (sedang berlangsung).
Selidiki dukungan untuk kamera zed lama.
Tingkatkan dan jadikan penguraian baris perintah lebih konsisten (sedang berlangsung).
Tujuan jangka menengah
Hapus semua kode char* dan ganti dengan std::string.
Hindari menyembunyikan peringatan dan bersihkan peringatan kompiler (sedang berlangsung).
Tingkatkan penggunaan cv::Mat alih-alih struktur gambar khusus di C (sedang berlangsung).
Ganti fungsionalitas daftar lama dengan std::vector atau std::list.
Perbaiki dukungan untuk gambar skala abu-abu 1 saluran.
Tambahkan dukungan untuk gambar saluran N dengan N > 3 (misalnya, gambar dengan kedalaman tambahan atau saluran termal).
Lanjutkan pembersihan kode yang sedang berlangsung (sedang berlangsung).
Tujuan jangka panjang
Perbaiki masalah CUDA/CUDNN dengan semua GPU.
Tulis ulang kode CUDA+cuDNN.
Pertimbangkan untuk menambahkan dukungan untuk GPU non-NVIDIA.
Tambahkan kotak pembatas yang diputar atau dukungan "sudut".
Menerapkan titik kunci/kerangka.
Tambahkan peta panas (sedang berlangsung).
Menerapkan segmentasi.