Kerangka Deteksi Objek Darknet dan YOLO
Dokumen
Informasi Umum
Versi Darknet
Anak Timbangan Terlatih MSCOCO
Bangunan
Google Kolab
Metode CMake Linux
Metode Windows CMake
Menggunakan Darknet
CLI
Pelatihan
Alat dan Tautan Lainnya
Peta jalan
Tujuan jangka pendek
Tujuan jangka menengah
Tujuan jangka panjang
Darknet adalah kerangka jaringan saraf sumber terbuka yang ditulis dalam C, C++, dan CUDA.
YOLO (You Only Look Once) adalah sistem deteksi objek real-time yang canggih, yang berjalan 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
Kertas YOLOv7
Kertas Berskala-YOLOv4
Kertas YOLOv4
Kertas YOLOv3
Kerangka kerja Darknet/YOLO tetap lebih cepat dan akurat dibandingkan kerangka kerja dan versi YOLO lainnya.
Kerangka kerja ini sepenuhnya gratis dan open source . Anda dapat memasukkan Darknet/YOLO ke dalam proyek dan produk yang sudah ada -- termasuk proyek dan produk komersial -- tanpa lisensi atau membayar biaya.
Darknet V3 ("Jazz") yang dirilis pada Oktober 2024 dapat menjalankan video dataset LEGO secara akurat hingga 1000 FPS saat menggunakan GPU NVIDIA RTX 3090, artinya setiap frame video dibaca, diubah ukurannya, dan diproses oleh Darknet/YOLO dalam 1 milidetik atau lebih sedikit.
Silakan bergabung dengan server Darknet/YOLO Discord jika Anda memerlukan bantuan atau ingin berdiskusi Darknet/YOLO: https://discord.gg/zSq8rtW
Versi CPU Darknet/YOLO dapat berjalan di perangkat sederhana seperti 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.
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 version
. 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.
Tulis ulang langkah-langkah pembangunan sehingga kami memiliki 1 cara terpadu untuk membangun menggunakan CMake di Windows dan Linux.
Mengonversi basis kode untuk menggunakan kompiler C++.
Chart.png yang ditingkatkan saat berlatih.
Perbaikan bug dan pengoptimalan terkait kinerja, sebagian besar terkait dengan pengurangan waktu yang diperlukan untuk melatih jaringan.
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 version
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 agar kami dapat menyelidiki penambahan kembali perintah yang hilang.
Menghapus banyak perintah lama dan tidak terawat.
Banyak pengoptimalan performa, baik saat pelatihan maupun saat inferensi.
API C lama telah dimodifikasi; aplikasi yang menggunakan API Darknet asli memerlukan sedikit modifikasi: https://darknetcv.ai/api/api.html
API Darknet V3 C dan C++ baru: https://darknetcv.ai/api/api.html
Aplikasi baru dan kode contoh di src-examples
: https://darknetcv.ai/api/files.html
Beberapa versi YOLO yang populer telah dilatih sebelumnya untuk kenyamanan pada kumpulan data MSCOCO. Dataset ini memiliki 80 kelas, yang dapat dilihat pada 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 timbangan terlatih MSCOCO dapat diunduh dari beberapa lokasi berbeda, dan juga tersedia untuk diunduh dari repo 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 timbang terlatih MSCOCO disediakan hanya untuk tujuan demo. 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 darknet_02_display_annotated_images coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg darknet_03_display_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
Perhatikan bahwa masyarakat diharapkan untuk melatih jaringan mereka sendiri. MSCOCO biasanya digunakan untuk memastikan bahwa semuanya berfungsi dengan benar.
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.
Google Kolab
Linux
jendela
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 dianjurkan untuk mengunjungi https://darknetcv.ai/ untuk mendapatkan informasi tentang internal kerangka deteksi objek Darknet/YOLO.
Petunjuk Google Colab sama dengan petunjuk Linux. Beberapa notebook Jupyter tersedia yang menunjukkan cara melakukan tugas tertentu, seperti melatih jaringan baru.
Lihat notebook di subdirektori colab
, dan/atau ikuti petunjuk Linux di bawah.
Opsional: Jika Anda memiliki GPU NVIDIA modern, Anda dapat menginstal CUDA atau CUDA+cuDNN pada tahap ini. Jika dipasang, Darknet akan menggunakan GPU Anda untuk mempercepat pemrosesan gambar (dan video).
Anda harus menghapus file CMakeCache.txt
dari direktori build
Darknet Anda untuk memaksa CMake menemukan kembali semua file yang diperlukan.
Ingatlah untuk membangun kembali Darknet.
Darknet dapat berjalan tanpanya, tetapi jika Anda ingin melatih jaringan khusus maka diperlukan CUDA atau CUDA+cuDNN.
Kunjungi https://developer.nvidia.com/cuda-downloads untuk mengunduh dan menginstal CUDA.
Kunjungi https://developer.nvidia.com/rdp/cudnn-download atau https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview untuk mengunduh dan instal cuDNN.
Setelah Anda menginstal CUDA pastikan Anda dapat menjalankan nvcc
dan nvidia-smi
. Anda mungkin harus mengubah variabel PATH
Anda.
Jika Anda menginstal CUDA atau CUDA+cuDNN di lain waktu, atau Anda meningkatkan ke versi perangkat lunak NVIDIA yang lebih baru:
Instruksi ini mengasumsikan (tetapi tidak memerlukan!) sistem yang menjalankan Ubuntu 22.04. Beradaptasi seperlunya jika Anda menggunakan distribusi yang berbeda.
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKE_BUILD_TYPE=Lepaskan .. buat paket -j4 sudo dpkg -i darknet-<INSERT-VERSION-YOU-BUILT-HERE>.deb
Jika Anda menggunakan CMake versi lama maka Anda perlu memutakhirkan CMake sebelum dapat menjalankan perintah cmake
di atas. Upgrade CMake di Ubuntu dapat dilakukan dengan perintah berikut:
sudo apt-get pembersihan cmake sudo snap install cmake --klasik
Jika menggunakan bash
sebagai shell perintah, Anda sebaiknya memulai ulang shell Anda saat ini. Jika menggunakan fish
, sebaiknya segera mengambil jalur baru.
Pengguna tingkat lanjut:
Jika Anda ingin membuat file instalasi RPM dan bukan file DEB, lihat baris yang relevan di
CM_package.cmake
. Sebelum menjalankanmake -j4 package
Anda harus mengedit dua baris ini:
SET (CPACK_GENERATOR "DEB")# SET (CPACK_GENERATOR "RPM")
Untuk distro seperti Centos dan OpenSUSE, Anda harus mengganti kedua baris tersebut di
CM_package.cmake
menjadi:
# SET (CPACK_GENERATOR "DEB")SET (CPACK_GENERATOR "RPM")
Untuk menginstal paket instalasi setelah selesai dibuat, gunakan manajer paket yang biasa untuk distribusi Anda. Misalnya pada sistem berbasis Debian seperti Ubuntu:
sudo dpkg -i darknet-2.0.1-Linux.deb
Menginstal paket .deb
akan menyalin file berikut:
/usr/bin/darknet
adalah Darknet biasa yang dapat dieksekusi. Jalankan darknet version
dari CLI untuk mengonfirmasi bahwa versi tersebut diinstal dengan benar.
/usr/include/darknet.h
adalah API Darknet untuk pengembang C, C++, dan Python.
/usr/include/darknet_version.h
berisi informasi versi untuk pengembang.
/usr/lib/libdarknet.so
adalah perpustakaan yang dapat dihubungkan dengan pengembang C, C++, dan Python.
/opt/darknet/cfg/...
adalah tempat semua templat .cfg
disimpan.
Anda sekarang sudah selesai! Darknet telah dibangun dan diinstal ke /usr/bin/
. Jalankan ini untuk menguji: darknet version
.
Jika Anda tidak memiliki
/usr/bin/darknet
berarti Anda tidak menginstalnya, Anda hanya membuatnya! Pastikan Anda menginstal file.deb
atau.rpm
seperti dijelaskan di atas.
Petunjuk ini mengasumsikan instalasi baru Windows 11 22H2.
Buka jendela prompt perintah cmd.exe
normal dan jalankan perintah berikut:
winget instal Git.Git winget instal Kitware.CMake winget instal nsis.nsis winget instal Microsoft.VisualStudio.2022.Community
Pada titik ini kita perlu memodifikasi instalasi Visual Studio untuk menyertakan dukungan untuk aplikasi C++:
klik menu "Windows Start" dan jalankan "Visual Studio Installer"
klik Modify
pilih Desktop Development With C++
klik Modify
di pojok kanan bawah, lalu klik Yes
Setelah semuanya diunduh dan diinstal, klik lagi menu "Windows Start" dan pilih Developer Command Prompt for VS 2022
. Jangan gunakan PowerShell untuk langkah ini, Anda akan mengalami masalah!
Pengguna tingkat lanjut:
Daripada menjalankan
Developer Command Prompt
, Anda dapat menggunakan prompt perintah normal atau ssh ke dalam perangkat dan menjalankan"Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat"
secara manual.
Banyak orang melakukan kesalahan yang sama dan berpikir mereka bisa melewatkan langkah sebelumnya. Tolong jangan lewati langkah ini! Jangan gunakan command prompt normal atau PowerShell! Baca kembali langkah-langkah di atas untuk melihat jenis jendela apa yang harus Anda gunakan. Kapan pun Anda ingin menggunakan Visual Studio dari command prompt untuk mengkompilasi kode C++, Anda harus menggunakan command prompt pengembang Visual Studio seperti dijelaskan di atas.
Setelah Anda menjalankan Prompt Perintah Pengembang seperti dijelaskan di atas, jalankan perintah berikut untuk menginstal Microsoft VCPKG, yang kemudian akan digunakan untuk membangun OpenCV:
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg 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 pada langkah terakhir ini karena mungkin membutuhkan 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 search opencv
untuk melihat daftar lengkap.
Opsional: Jika Anda memiliki GPU NVIDIA modern, Anda dapat menginstal CUDA atau CUDA+cuDNN pada tahap ini. Jika dipasang, Darknet akan menggunakan GPU Anda untuk mempercepat pemrosesan gambar (dan video).
Anda harus menghapus file CMakeCache.txt
dari direktori build
Darknet Anda untuk memaksa CMake menemukan kembali semua file yang diperlukan.
Ingatlah untuk membangun kembali Darknet.
Darknet dapat berjalan tanpanya, tetapi jika Anda ingin melatih jaringan khusus maka diperlukan CUDA atau CUDA+cuDNN.
Kunjungi https://developer.nvidia.com/cuda-downloads untuk mengunduh dan menginstal CUDA.
Kunjungi https://developer.nvidia.com/rdp/cudnn-download atau https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows untuk mengunduh dan menginstal cuDNN.
Setelah Anda menginstal CUDA pastikan Anda dapat menjalankan nvcc.exe
dan nvidia-smi.exe
. Anda mungkin harus mengubah variabel PATH
Anda.
Setelah Anda mengunduh cuDNN, unzip dan salin direktori bin, include, dan lib ke C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/
. Anda mungkin perlu menimpa beberapa file.
Jika Anda menginstal CUDA atau CUDA+cuDNN di lain waktu, atau Anda meningkatkan ke versi perangkat lunak NVIDIA yang lebih baru:
CUDA harus diinstal setelah Visual Studio. Jika Anda memutakhirkan Visual Studio, ingatlah untuk menginstal ulang CUDA.
Setelah semua langkah sebelumnya berhasil diselesaikan, Anda perlu mengkloning Darknet dan membangunnya. Pada langkah ini kita juga perlu memberi tahu CMake di mana vcpkg berada sehingga dapat menemukan OpenCV dan dependensi lainnya:
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKE_BUILD_TYPE=Rilis -DCMAKE_TOOLCHAIN_FILE=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=Release PACKAGE.vcxproj
Jika Anda mendapatkan kesalahan tentang beberapa DLL CUDA atau cuDNN yang hilang seperti cublas64_12.dll
, salin file CUDA .dll
secara manual ke direktori keluaran yang sama dengan Darknet.exe
. Misalnya:
salin "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
(Itu adalah contohnya! Periksa untuk memastikan versi apa yang Anda jalankan, dan jalankan perintah yang sesuai dengan apa yang telah Anda instal.)
Setelah file disalin, jalankan kembali perintah msbuild.exe
terakhir untuk menghasilkan paket instalasi NSIS:
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
Pengguna tingkat lanjut:
Perhatikan bahwa output dari perintah
cmake
adalah file solusi Visual Studio normal,Darknet.sln
. Jika Anda seorang pengembang perangkat lunak yang secara rutin menggunakan Visual Studio GUI alih-alihmsbuild.exe
untuk membangun proyek, Anda dapat mengabaikan baris perintah dan memuat proyek Darknet di Visual Studio.
Anda sekarang seharusnya memiliki file ini yang dapat Anda jalankan: C:srcDarknetbuildsrc-cliReleasedarknet.exe
. Jalankan ini untuk menguji: C:srcDarknetbuildsrc-cliReleasedarknet.exe --version
.
Untuk menginstal Darknet dengan benar, perpustakaan, file yang disertakan, dan DLL yang diperlukan, jalankan wizard instalasi NSIS yang dibuat pada langkah terakhir. Lihat file darknet-<INSERT-VERSION-YOU-BUILT-HERE>-win64.exe
di direktori build
. Misalnya:
darknet-<MASUKKAN VERSI-ANDA-BANGUN-DI SINI>-win64.exe
Menginstal paket instalasi NSIS akan:
Buat direktori bernama Darknet
, seperti 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
.
Anda sekarang sudah selesai! Setelah wizard penginstalan selesai, Darknet akan diinstal ke C:Program FilesDarknet
. Jalankan ini untuk menguji: C:Program FilesDarknetbindarknet.exe version
.
Jika Anda tidak memiliki
C:/Program Files/darknet/bin/darknet.exe
maka ini berarti Anda tidak menginstalnya, Anda hanya membuatnya! Pastikan Anda menelusuri setiap panel wizard instalasi NSIS pada langkah sebelumnya.
Berikut ini bukan daftar lengkap semua perintah yang didukung oleh Darknet.
Selain CLI Darknet, perhatikan juga CLI proyek DarkHelp yang menyediakan CLI alternatif untuk Darknet/YOLO. DarkHelp CLI juga memiliki beberapa fitur lanjutan yang tidak tersedia langsung di Darknet. Anda dapat menggunakan Darknet CLI dan DarkHelp CLI secara bersamaan, keduanya tidak eksklusif.
Untuk sebagian besar perintah yang ditampilkan di bawah, Anda memerlukan file .weights
dengan file .names
dan .cfg
yang sesuai. Anda dapat melatih jaringan Anda sendiri (sangat disarankan!) atau mengunduh jaringan saraf yang telah dilatih dan disediakan secara gratis oleh seseorang di internet. Contoh kumpulan data terlatih meliputi:
LEGO Gears (menemukan objek dalam gambar)
Rolodex (menemukan teks dalam gambar)
MSCOCO (deteksi objek kelas 80 standar)
Perintah yang harus dijalankan meliputi:
Buat daftar beberapa perintah dan opsi yang mungkin untuk dijalankan:
darknet help
Periksa versinya:
darknet version
Prediksi menggunakan gambar:
V2: darknet detector test cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet_02_display_annotated_images cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars.cfg cars_best.weights image1.jpg
Koordinat keluaran:
V2: darknet detector test animals.data animals.cfg animals_best.weights -ext_output dog.jpg
V3: darknet_01_inference_images animals dog.jpg
DarkHelp: DarkHelp --json animals.cfg animals.names animals_best.weights dog.jpg
Bekerja dengan video:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -ext_output test.mp4
V3: darknet_03_display_videos animals.cfg test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
Membaca dari webcam:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -c 0
V3: darknet_08_display_webcam animals
Simpan hasil ke video:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test.mp4 -out_filename res.avi
V3: darknet_05_process_videos_multithreaded animals.cfg animals.names animals_best.weights test.mp4
DarkHelp: DarkHelp animals.cfg animals.names animals_best.weights test.mp4
JSON:
V2: darknet detector demo animals.data animals.cfg animals_best.weights test50.mp4 -json_port 8070 -mjpeg_port 8090 -ext_output
V3: darknet_06_images_to_json animals image1.jpg
DarkHelp: DarkHelp --json animals.names animals.cfg animals_best.weights image1.jpg
Berjalan pada GPU tertentu:
V2: darknet detector demo animals.data animals.cfg animals_best.weights -i 1 test.mp4
Untuk memeriksa keakuratan jaringan saraf:
peta detektor darknet Driving.data Driving.cfg Driving_best.weights ... 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
Untuk memeriksa akurasi mAP@IoU=75:
darknet detector map animals.data animals.cfg animals_best.weights -iou_thresh 0.75
Menghitung ulang jangkar paling baik dilakukan di DarkMark, karena ini akan berjalan 100 kali berturut-turut dan memilih jangkar terbaik dari semua jangkar yang dihitung. Namun jika Anda ingin menjalankan versi lama di Darknet:
detektor darknet calc_anchors animal.data -num_of_clusters 6 -lebar 320 -tinggi 256
Latih jaringan baru:
darknet detector -map -dont_show train animals.data animals.cfg
(lihat juga bagian pelatihan di bawah)
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 menggunakan DarkMark untuk membuat semua file Darknet yang diperlukan. Ini jelas merupakan cara yang disarankan untuk melatih jaringan saraf baru.
Jika Anda lebih suka mengatur berbagai file secara manual untuk melatih jaringan khusus:
Buat folder baru tempat file akan disimpan. Untuk contoh ini, jaringan saraf akan dibuat untuk mendeteksi hewan, sehingga direktori berikut dibuat: ~/nn/animals/
.
Salin salah satu file konfigurasi Darknet yang ingin Anda gunakan sebagai templat. Misalnya, lihat cfg/yolov4-tiny.cfg
. Tempatkan ini di folder yang Anda buat. Untuk contoh ini, kita sekarang memiliki ~/nn/animals/animals.cfg
.
Buat file teks animals.names
di folder yang sama tempat Anda meletakkan file konfigurasi. Untuk contoh ini, kita sekarang memiliki ~/nn/animals/animals.names
.
Edit file animals.names
dengan editor teks Anda. Buat daftar kelas yang ingin Anda gunakan. Anda harus memiliki tepat 1 entri per baris, tanpa baris kosong dan tanpa komentar. Untuk contoh ini, file .names
akan berisi 4 baris:
anjing kucing burung kuda
Buat file teks animals.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
Buat folder tempat Anda menyimpan gambar dan anotasi. Misalnya, ini bisa berupa ~/nn/animals/dataset
. Setiap gambar memerlukan file .txt
terkait yang menjelaskan anotasi untuk gambar tersebut. Format file anotasi .txt
sangat spesifik. Anda tidak dapat membuat file ini dengan tangan karena setiap anotasi harus berisi koordinat yang tepat untuk anotasi tersebut. Lihat DarkMark atau perangkat lunak serupa lainnya untuk membuat anotasi pada gambar Anda. Format anotasi YOLO dijelaskan di FAQ Darknet/YOLO.
Buat file teks "train" dan "valid" yang diberi nama dalam file .data
. Kedua file teks ini perlu mencantumkan satu per satu semua gambar yang harus digunakan Darknet untuk melatih dan untuk validasi saat menghitung% peta. Tepat satu gambar per baris. Jalur dan nama file mungkin relatif atau absolut.
Ubah file .cfg
Anda dengan editor teks.
Pastikan batch=64
itu.
Perhatikan subdivisinya. Bergantung pada dimensi jaringan dan jumlah memori yang tersedia pada GPU Anda, Anda mungkin perlu menambah subdivisi. Nilai terbaik untuk digunakan adalah 1
jadi mulailah dengan itu. Lihat FAQ Darknet/YOLO jika 1
tidak berhasil untuk Anda.
Catatan max_batches=...
. Nilai yang baik untuk digunakan saat memulai adalah 2000 x jumlah kelas. Untuk contoh ini, kita mempunyai 4 hewan, jadi 4 * 2000 = 8000. Artinya kita akan menggunakan max_batches=8000
.
Catatan steps=...
. Ini harus disetel ke 80% dan 90% dari max_batches
. Untuk contoh ini kita akan menggunakan steps=6400,7200
karena max_batches
disetel ke 8000.
Perhatikan width=...
dan height=...
. Ini adalah dimensi jaringan. FAQ Darknet/YOLO menjelaskan cara menghitung ukuran terbaik untuk digunakan.
Cari semua contoh baris classes=...
dan modifikasi dengan jumlah kelas di file .names
Anda. Untuk contoh ini, kami akan menggunakan classes=4
.
Cari semua contoh baris filters=...
di bagian [convolutional]
sebelum setiap bagian [yolo]
. Nilai yang digunakan adalah (number_of_classes + 5) * 3. Arti contoh ini, (4 + 5) * 3 = 27. Jadi kita akan menggunakan filters=27
pada baris yang sesuai.
Mulai pelatihan! Jalankan perintah berikut:
cd ~/nn/hewan/ detektor darknet -peta -dont_show melatih hewan.data hewan.cfg
Bersabarlah. Bobot terbaik akan disimpan sebagai animals_best.weights
. Dan kemajuan pelatihan dapat diamati dengan melihat file chart.png
. Lihat FAQ Darknet/YOLO untuk parameter tambahan yang mungkin ingin Anda gunakan saat melatih jaringan baru.
Jika Anda ingin melihat detail selengkapnya selama pelatihan, tambahkan parameter --verbose
. Misalnya:
detektor darknet -peta -dont_show --verbose melatih hewan.data hewan.cfg
Untuk mengelola proyek Darknet/YOLO Anda, memberi anotasi pada gambar, memverifikasi anotasi Anda, dan membuat file yang diperlukan untuk berlatih dengan Darknet, lihat DarkMark.
Untuk CLI alternatif yang tangguh selain Darknet, untuk menggunakan ubin gambar, untuk pelacakan objek di video Anda, atau untuk C++ API tangguh yang dapat dengan mudah digunakan dalam aplikasi komersial, lihat DarkHelp.
Lihat apakah FAQ Darknet/YOLO dapat membantu menjawab pertanyaan Anda.
Lihat banyak video tutorial dan contoh di saluran YouTube Stéphane
Jika Anda memiliki pertanyaan dukungan atau ingin mengobrol dengan pengguna Darknet/YOLO lainnya, bergabunglah dengan server perselisihan Darknet/YOLO.
Terakhir diperbarui 02-11-2024:
tukar qsort() dengan std::sort() yang digunakan selama pelatihan (beberapa yang tidak jelas lainnya tetap ada)
singkirkan 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")
aktifkan kembali kode CUDA/GPU
aktifkan kembali CUDNN
aktifkan kembali setengah CUDNN
jangan melakukan hard-code pada arsitektur CUDA
informasi versi CUDA yang lebih baik
aktifkan kembali AVX
hapus solusi lama dan Makefile
jadikan OpenCV non-opsional
hapus ketergantungan pada perpustakaan pthread lama
menghapus STB
tulis ulang CMakeLists.txt untuk menggunakan deteksi CUDA baru
hapus kode "abjad" lama, dan hapus 700+ gambar di data/label
membangun di luar sumber
memiliki keluaran nomor versi yang lebih baik
optimalisasi kinerja terkait dengan pelatihan (tugas yang sedang berjalan)
pengoptimalan kinerja terkait dengan inferensi (tugas yang sedang berjalan)
referensi lewat jika memungkinkan
bersihkan file .hpp
tulis ulang darknet.h
jangan masukkan cv::Mat
ke void*
tetapi gunakan sebagai objek C++ yang tepat
memperbaiki atau konsisten dalam penggunaan struktur image
internal
perbaikan build untuk perangkat Jetson berbasis ARM
perangkat Jetson asli (tidak mungkin diperbaiki karena tidak lagi didukung oleh NVIDIA dan tidak memiliki kompiler C++17)
perangkat Jetson Orin baru berfungsi
memperbaiki Python API di V3
diperlukan dukungan yang lebih baik untuk Python (adakah pengembang Python yang ingin membantu dalam hal ini?)
tukar printf() dengan std::cout (sedang berlangsung)
lihat dukungan kamera zed lama
penguraian baris perintah yang lebih baik dan lebih konsisten (sedang berlangsung)
hapus semua kode char*
dan ganti dengan std::string
jangan sembunyikan peringatan dan bersihkan peringatan kompiler (sedang berlangsung)
penggunaan cv::Mat
yang lebih baik daripada struktur image
khusus di C (sedang berlangsung)
ganti fungsionalitas list
lama dengan std::vector
atau std::list
memperbaiki dukungan untuk gambar skala abu-abu 1 saluran
tambahkan dukungan untuk gambar saluran-N di mana N > 3 (misalnya, gambar dengan kedalaman tambahan atau saluran termal)
pembersihan kode yang sedang berlangsung (sedang berlangsung)
memperbaiki masalah CUDA/CUDNN dengan semua GPU
tulis ulang kode CUDA+cuDNN
pertimbangkan untuk menambahkan dukungan untuk GPU non-NVIDIA
kotak pembatas yang diputar, atau semacam penyangga "sudut".
titik kunci/kerangka
peta panas (sedang berlangsung)
segmentasi