Kerangka Deteksi Objek Darknet dan YOLO
Darknet adalah kerangka jaringan saraf sumber terbuka yang ditulis dalam C, C++ dan CUDA. YOLO (You Only Look Once) adalah sistem deteksi target real-time canggih yang berjalan dalam kerangka Darknet.
Baca bagaimana Hank.ai membantu komunitas Darknet/YOLO
Mengumumkan Darknet V3 "Jazz"
Kunjungi situs web Darknet/YOLO
Silakan baca FAQ Darknet/YOLO
Bergabunglah dengan server Darknet/YOLO Discord
Dokumen
1. Kertas YOLOv7
2. Kertas Berskala-YOLOv4
3. Kertas YOLOv4
4. Kertas YOLOv3
Informasi Umum
Framework Darknet/YOLO masih lebih cepat dan akurat dibandingkan framework dan versi YOLO lainnya.
Kerangka kerja ini sepenuhnya gratis dan open source. Anda dapat mengintegrasikan Darknet/YOLO ke dalam proyek dan produk yang sudah ada - termasuk produk komersial - tanpa lisensi atau biaya.
Darknet V3 ("Jazz"), dirilis pada Oktober 2024, dapat menjalankan video kumpulan data LEGO secara akurat hingga 1000 FPS menggunakan GPU NVIDIA RTX 3090, yang berarti setiap bingkai video diambil oleh Darknet dalam 1 milidetik atau kurang /YOLO Baca, ubah ukuran, dan proses .
Jika Anda memerlukan bantuan atau ingin berdiskusi tentang Darknet/YOLO, silakan bergabung dengan server Darknet/YOLO Discord: https://discord.gg/zSq8rtW
Versi CPU Darknet/YOLO dapat berjalan di perangkat sederhana seperti Raspberry Pi, server cloud dan kolaborasi, desktop, laptop, dan peralatan pelatihan kelas atas. Versi GPU Darknet/YOLO memerlukan GPU yang kompatibel dengan CUDA dari NVIDIA.
Darknet/YOLO diketahui bekerja dengan baik di Linux, Windows, dan Mac. Lihat petunjuk pembuatan di bawah.
Versi jaringan gelap
Alat Darknet asli yang ditulis oleh Joseph Redmon pada tahun 2013-2017 tidak memiliki nomor versi. Kami menganggap versi ini sebagai 0.x.
Repositori Darknet populer berikutnya yang dikelola oleh Alexei Bochkovskiy dari 2017-2021 juga tidak memiliki nomor versi. Kami yakin versi ini adalah 1.x.
Repositori Darknet yang disponsori oleh Hank.ai dan dikelola oleh Stéphane Charette mulai tahun 2023 adalah yang pertama memiliki perintah versi. Dari tahun 2023 hingga akhir tahun 2024, ia kembali ke versi 2.x "OAK".
Tujuannya adalah mencoba sesedikit mungkin memecah fungsionalitas yang ada sambil membiasakan diri dengan basis kode.
1. Tulis ulang langkah-langkah pembangunan sehingga kita memiliki cara terpadu untuk membangun di Windows dan Linux menggunakan CMake.
2. Konversi basis kode untuk menggunakan kompiler C++.
3. Chart.png yang ditingkatkan selama pelatihan.
4. Perbaikan bug dan optimalisasi terkait kinerja, terutama terkait pengurangan waktu yang diperlukan untuk melatih jaringan.
Cabang terakhir dari basis kode adalah versi 2.1 di cabang v2.
Tahap pengembangan selanjutnya dimulai pada pertengahan tahun 2024 dan akan dirilis pada bulan Oktober 2024. Perintah versi sekarang mengembalikan 3.x "JAZZ".
Anda selalu dapat melakukan checkout cabang v2 sebelumnya jika Anda perlu menjalankan perintah berikut. Harap beri tahu kami sehingga kami dapat menyelidiki penambahan perintah yang hilang.
1. Menghapus banyak perintah lama dan tidak terawat.
2. Banyak optimalisasi kinerja, termasuk proses pelatihan dan inferensi.
3. API C tradisional telah dimodifikasi; aplikasi yang menggunakan API Darknet asli perlu melakukan sedikit modifikasi: https://darknetcv.ai/api/api.html
4. Darknet V3 C dan C++ API baru: https://darknetcv.ai/api/api.html
5. Aplikasi baru dan contoh kode dalam contoh src: https://darknetcv.ai/api/files.html
Anak angkat beban MSCOCO yang telah dilatih sebelumnya
Untuk kenyamanan, beberapa versi YOLO yang populer telah dilatih sebelumnya pada kumpulan data MSCOCO. Kumpulan data ini memiliki 80 kategori dan 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. Untuk informasi lebih lanjut, lihat FAQ Darknet/YOLO.
Anak timbangan terlatih MSCOCO dapat diunduh dari sejumlah lokasi berbeda atau dari repositori ini:
1. YOLOv2, November 2016
-YOLOv2-kecil
-YOLOv2-penuh
2. YOLOv3, Mei 2018
- YOLOv3-kecil
-YOLOv3-penuh
3. YOLOv4, Mei 2020
- YOLOv4-kecil
-YOLOv4-penuh
4. YOLOv7, Agustus 2022
-YOLOv7-kecil
-YOLOv7-penuh
Anak timbangan MSCOCO yang telah dilatih sebelumnya hanya untuk tujuan demonstrasi. File .cfg dan .names yang sesuai untuk MSCOCO terletak di direktori cfg. Contoh perintah:
' pesta
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.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
Perhatikan bahwa seseorang harus melatih jaringannya sendiri. MSCOCO sering digunakan untuk memastikan bahwa semuanya baik-baik saja.
membangun
Berbagai metode pembangunan dari masa lalu (sebelum tahun 2023) telah digabungkan menjadi satu solusi terpadu. Darknet memerlukan C++17 atau lebih tinggi, 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
Petunjuk Google Colab sama dengan petunjuk Linux. Ada beberapa notebook Jupyter yang menunjukkan cara melakukan tugas tertentu, seperti melatih jaringan baru.
Lihat notebook di subdirektori colab, atau ikuti petunjuk Linux di bawah.
Metode CMake Linux
Tutorial pembuatan Darknet untuk Linux
Opsional: Jika Anda memiliki GPU NVIDIA modern, Anda dapat menginstal CUDA atau CUDA+cuDNN saat ini. Jika dipasang, Darknet akan menggunakan GPU Anda untuk mempercepat pemrosesan gambar (dan video).
Anda harus menghapus file CMakeCache.txt di direktori build Darknet untuk memaksa CMake menemukan kembali semua file yang diperlukan.
Ingatlah untuk membangun kembali Darknet.
Darknet dapat dijalankan tanpanya, tetapi jika Anda ingin melatih jaringan khusus, Anda memerlukan 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 menginstal CUDA, pastikan nvcc dan nvidia-smi dapat berjalan. Anda mungkin perlu mengubah variabel PATH.
Jika Anda menginstal CUDA atau CUDA+cuDNN nanti, atau jika Anda mengupgrade ke versi perangkat lunak NVIDIA yang lebih baru, lakukan hal berikut:
Instruksi ini mengasumsikan (tetapi tidak memerlukan!) sistem yang menjalankan Ubuntu 22.04. Jika menggunakan distribusi lain, sesuaikan dengan kebutuhan.
' pesta
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 -DCMAKEBUILDTYPE=Release .. make -j4 package sudo dpkg -i darknet-VERSION.deb
`
Jika Anda menggunakan CMake versi lama, Anda perlu memutakhirkan CMake sebelum menjalankan perintah cmake di atas. Upgrade CMake di Ubuntu dapat dilakukan dengan menggunakan perintah berikut:
' pesta
sudo apt-get purge cmake sudo snap install cmake --classic
`
Jika menggunakan bash sebagai shell perintah, Anda perlu me-restart shell saat ini. Jika Anda menggunakan ikan, ia harus 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 menjalankan paket make -j4 Anda perlu mengedit dua baris ini:
' pesta
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
Untuk distribusi seperti Centos dan OpenSUSE, Anda perlu mengubah dua baris berikut di CM_package.cmake menjadi:
' pesta
SET (CPACKGENERATOR "DEB")SET (CPACKGENERATOR "RPM")
`
Untuk menginstal paket instalasi, setelah dibuat, gunakan manajer paket distribusi Anda yang biasa. Misalnya pada sistem berbasis Debian seperti Ubuntu:
' pesta
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Menginstal paket .deb akan menyalin file berikut:
1. /usr/bin/darknet adalah file eksekusi Darknet biasa. Jalankan versi darknet dari CLI untuk mengonfirmasi bahwa versi tersebut telah diinstal dengan benar.
2. /usr/include/darknet.h adalah API Darknet untuk pengembang C, C++ dan Python.
3. /usr/include/darknet_version.h berisi informasi versi untuk pengembang.
4. /usr/lib/libdarknet.so adalah perpustakaan untuk pengembang C, C++ dan Python.
5. /opt/darknet/cfg/... adalah lokasi penyimpanan semua template .cfg.
Anda sudah selesai sekarang! Darknet dibangun dan diinstal ke /usr/bin/. Jalankan perintah berikut untuk menguji: versi darknet.
Jika Anda tidak memiliki /usr/bin/darknet, Anda tidak menginstalnya, Anda baru saja membuatnya! Pastikan untuk menginstal file .deb atau .rpm seperti dijelaskan di atas.
Metode Windows CMake
Petunjuk ini mengasumsikan instalasi baru Windows 11 22H2.
Buka jendela prompt perintah cmd.exe normal dan jalankan perintah berikut:
' pesta
winget install Git.Git winget install Kitware.CMake winget install nsis.nsis winget install Microsoft.VisualStudio.2022.Community
`
Pada titik ini, kita perlu memodifikasi instalasi Visual Studio untuk menyertakan dukungan untuk aplikasi C++:
1. Klik menu Start Windows dan jalankan Visual Studio Setup.
2. Klik Sunting.
3. Pilih pengembangan desktop menggunakan C++.
4. Klik "Edit" di pojok kanan bawah, lalu klik "Ya".
Setelah semuanya diunduh dan diinstal, klik lagi menu Start Windows dan pilih Prompt Perintah Pengembang untuk VS 2022. Jangan gunakan PowerShell untuk melakukan langkah-langkah ini, Anda akan mengalami masalah!
Pengguna tingkat lanjut:
Daripada menjalankan prompt perintah pengembang, Anda dapat menggunakan prompt perintah normal atau masuk ke perangkat menggunakan ssh dan menjalankan "Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat" secara manual.
Setelah Anda menjalankan command prompt pengembang seperti dijelaskan di atas (bukan PowerShell!), jalankan perintah berikut untuk menginstal Microsoft VCPKG dan kemudian gunakan untuk membangun OpenCV:
' pesta
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe integrasikan instalasi .vcpkg.exe integrasikan instalasi powershell.vcpkg.exe opencv[kontrib,dnn,freetype,jpeg,openmp,png,webp,dunia]:x64-windows
`
Bersabarlah dengan langkah terakhir ini karena mungkin memerlukan waktu lama untuk dijalankan. Ini memerlukan pengunduhan dan pembuatan 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 lengkapnya.
Opsional: Jika Anda memiliki GPU NVIDIA modern, Anda dapat menginstal CUDA atau CUDA+cuDNN saat ini. Jika dipasang, Darknet akan menggunakan GPU Anda untuk mempercepat pemrosesan gambar (dan video).
Anda harus menghapus file CMakeCache.txt di direktori build Darknet untuk memaksa CMake menemukan kembali semua file yang diperlukan.
Ingatlah untuk membangun kembali Darknet.
Darknet dapat dijalankan tanpanya, tetapi jika Anda ingin melatih jaringan khusus, Anda memerlukan 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 menginstal CUDA, pastikan Anda dapat menjalankan nvcc.exe dan nvidia-smi.exe. Anda mungkin perlu mengubah variabel PATH.
Setelah mengunduh cuDNN, unzip dan salin direktori bin, include, dan lib ke C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[version]/.
Jika Anda menginstal CUDA atau CUDA+cuDNN nanti, atau jika Anda mengupgrade ke versi perangkat lunak NVIDIA yang lebih baru, lakukan hal berikut:
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:
' pesta
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake .. msbuild. exe /property:Platform=x64;Configuration=Rilis /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Jika Anda menerima kesalahan tentang beberapa CUDA atau cuDNN DLL yang hilang (seperti culas64_12.dll), salin file CUDA .dll secara manual ke direktori keluaran yang sama dengan Darknet.exe. Misalnya:
' pesta
salin "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(Ini adalah contohnya! Silakan periksa untuk memastikan versi mana yang Anda jalankan dan jalankan perintah yang sesuai dengan versi yang telah Anda instal.)
Setelah menyalin file, jalankan kembali perintah msbuild.exe terakhir untuk menghasilkan paket instalasi NSIS:
' pesta
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 sering menggunakan Visual Studio GUI alih-alih msbuild.exe untuk membangun proyek, Anda dapat mengabaikan baris perintah dan memuat proyek Darknet di Visual Studio.
Anda sekarang harus memiliki file berikut yang dapat Anda jalankan: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Jalankan perintah berikut untuk menguji: Versi C:srcDarknetbuildsrc-cliReleasedarknet.exe.
Untuk menginstal Darknet, pustaka, menyertakan file, dan DLL yang diperlukan dengan benar, jalankan wizard instalasi NSIS yang dibuat pada langkah terakhir. Periksa file darknet-VERSION.exe di direktori build. Misalnya:
' pesta
darknet-2.0.31-win64.exe
`
Menginstal paket instalasi NSIS akan:
1. Buat direktori bernama Darknet, misalnya C:Program FilesDarknet.
2. Instal aplikasi CLI, darknet.exe, dan contoh aplikasi lainnya.
3. Instal file .dll pihak ketiga yang diperlukan, misalnya dari OpenCV.
4. Instal file Darknet .dll, .lib, dan .h yang diperlukan untuk menggunakan darknet.dll dari aplikasi lain.
5. Instal file templat .cfg.
Anda sudah selesai sekarang! Setelah wizard instalasi selesai, Darknet akan diinstal ke C:Program FilesDarknet. Jalankan perintah berikut untuk menguji: C:Program FilesDarknetbindarknet.exe version.
Jika Anda tidak memiliki C:/Program Files/darknet/bin/darknet.exe, Anda tidak menginstalnya, Anda baru saja membuatnya! Pastikan untuk menyelesaikan setiap panel Wizard Instalasi NSIS seperti yang dijelaskan pada langkah sebelumnya.
Menggunakan Darknet
CLI
Berikut ini bukan daftar lengkap semua perintah yang didukung oleh Darknet.
Selain Darknet CLI, harap perhatikan CLI proyek DarkHelp, yang menyediakan alternatif untuk Darknet/YOLO CLI. DarkHelp CLI juga memiliki beberapa fitur lanjutan yang tidak tersedia secara 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 dari Internet yang telah dilatih oleh orang lain dan tersedia secara gratis. Contoh kumpulan data pra-pelatihan meliputi:
1. LEGO Gears (temukan objek dalam gambar)
2. Rolodex (menemukan teks dalam gambar)
3. MSCOCO (deteksi target kategori standar 80)
Perintah yang harus dijalankan meliputi:
Daftar beberapa perintah dan opsi yang dapat dijalankan:
' pesta
bantuan darknet
`
Periksa versi:
' pesta
versi darknet
`
Gunakan gambar untuk membuat prediksi:
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
`
Gunakan 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 kamera web:
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
`
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
`
Jalankan pada GPU tertentu:
V2:
' pesta
demo detektor darknet animal.data animal.cfg animal_best.weights -i 1 test.mp4
`
Untuk memeriksa keakuratan jaringan saraf:
' pesta
peta detektor darknet Driving.data Driving.cfg Driving_best.weights ... Nama Id AvgPrecision 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 keakuratan mAP@IoU=75:
' pesta
detektor darknet peta animal.data animal.cfg animalbest.weights -iouthresh 0.75
`
Menghitung ulang titik jangkar paling baik dilakukan di DarkMark karena akan berjalan 100 kali berturut-turut dan memilih titik jangkar terbaik dari semua titik jangkar yang dihitung. Namun jika Anda ingin menjalankan versi lama di Darknet, lakukan hal berikut:
' pesta
detektor darknet calcanchors animal.data -numof_clusters 6 -width 320 -height 256
`
Latih jaringan baru:
' pesta
darknet detector -map -dont_show train animal.data animal.cfg (lihat juga bagian pelatihan di bawah)
`
kereta
Tautan cepat ke bagian yang relevan dari FAQ Darknet/YOLO:
1. Bagaimana cara mengatur file dan direktori saya?
2. Profil mana yang harus saya gunakan?
3. Perintah mana yang harus Anda gunakan saat melatih jaringan Anda sendiri?
Menggunakan DarkMark untuk membuat semua file Darknet yang diperlukan adalah cara termudah untuk membuat anotasi dan melatih. Ini jelas merupakan cara yang disarankan untuk melatih jaringan saraf baru.
Jika Anda ingin mengatur berbagai file secara manual untuk melatih jaringan kustom, lakukan hal berikut:
1. Buat folder baru untuk menyimpan file-file ini. Untuk contoh ini, jaringan saraf akan dibuat untuk mendeteksi hewan, sehingga direktori berikut akan dibuat: ~/nn/animals/.
2. Copy salah satu file konfigurasi Darknet yang ingin digunakan sebagai template. Misalnya, lihat cfg/yolov4-tiny.cfg. Tempatkan di folder yang Anda buat. Untuk contoh ini, kita sekarang memiliki ~/nn/animals/animals.cfg.
3. Buat file teks animal.names di folder yang sama tempat Anda meletakkan file konfigurasi. Untuk contoh ini, kita sekarang memiliki ~/nn/animals/animals.names.
4. Gunakan editor teks Anda untuk mengedit file animal.names. Cantumkan kategori yang ingin Anda gunakan. Anda memerlukan tepat satu entri per baris, tidak ada baris kosong, dan tidak ada komentar. Untuk contoh ini, file .names akan berisi 4 baris:
`
anjing
kucing
burung
kuda
`
5. 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 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 komentar .txt sangat spesifik. Anda tidak dapat membuat file ini secara manual karena setiap anotasi harus berisi koordinat anotasi yang tepat. Lihat DarkMark atau perangkat lunak serupa lainnya untuk membuat anotasi pada gambar Anda. Format anotasi YOLO dijelaskan di FAQ Darknet/YOLO.
7. Buat file teks "train" dan "valid" yang diberi nama dalam file .data. Kedua file teks ini perlu mencantumkan semua gambar yang harus digunakan Darknet untuk pelatihan dan validasi mAP%, masing-masing. Tepatnya ada satu gambar per baris. Jalur dan nama file bisa bersifat relatif atau absolut.
8. Gunakan editor teks untuk mengubah file .cfg Anda.
- Pastikan batch=64.
- Perhatikan subdivisi. Tergantung pada ukuran jaringan dan jumlah memori yang tersedia pada GPU, Anda mungkin perlu menambah subdivisi. Nilai optimalnya adalah 1, jadi mulailah dengan itu. Jika 1 tidak berhasil untuk Anda, lihat FAQ Darknet/YOLO.
- Catatan maxbatches=.... Saat memulai, nilai yang baik adalah 2000 untuk jumlah kategori. Untuk contoh ini kita mempunyai 4 hewan, jadi 4 2000 = 8000. Artinya kita akan menggunakan maxbatches=8000.
- Catatan langkah=.... Ini harus diatur ke 80% dan 90% dari maxbatch. Untuk contoh ini, kita akan menggunakan langkah=6400,7200 karena maxbatches disetel ke 8000.
- Perhatikan bahwa lebar=... dan tinggi=.... ini adalah dimensi jaringan. FAQ Darknet/YOLO menjelaskan cara menghitung ukuran optimal untuk digunakan.
- Di setiap bagian [yolo] sebelum bagian [konvolusional], cari semua contoh baris filter=.... Nilai yang digunakan adalah (jumlah kategori + 5) 3. Artinya untuk contoh ini, (4 + 5) 3 = 27. Oleh karena itu, kami menggunakan filter=27 pada baris yang sesuai.
9. Mulai pelatihan! Jalankan perintah berikut:
' pesta
cd ~/nn/hewan/
detektor darknet -peta -dont_show melatih hewan.data hewan.cfg
`
Bersabarlah. Bobot terbaik akan disimpan sebagai animal_best.weights. Anda dapat mengamati kemajuan pelatihan 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 lebih lanjut selama pelatihan, tambahkan parameter --verbose. Misalnya:
' pesta
detektor darknet -peta -dont_show --verbose melatih hewan.data hewan.cfg
`
Alat dan tautan lainnya
Untuk mengelola proyek Darknet/YOLO Anda, memberi anotasi pada gambar, memvalidasi anotasi Anda, dan menghasilkan file yang diperlukan untuk pelatihan dengan Darknet, lihat DarkMark.
Untuk CLI alternatif Darknet yang canggih untuk penggabungan gambar, pelacakan objek dalam video, atau API C++ canggih yang dapat dengan mudah digunakan dalam aplikasi komersial, lihat DarkHelp.
Lihat FAQ Darknet/YOLO untuk mengetahui apakah ini dapat membantu menjawab pertanyaan Anda.
Lihat banyak tutorial dan contoh video di saluran YouTube Stéphane
Jika Anda memiliki pertanyaan dukungan atau ingin mengobrol dengan pengguna Darknet/YOLO lainnya, silakan bergabung dengan server Darknet/YOLO Discord.
peta jalan
Terakhir diperbarui: 30-10-2024:
Selesai
1. Ganti qsort() dengan std::sort() selama pelatihan (beberapa kode tidak jelas lainnya masih ada)
2. Hapus check_mistakes, getchar() dan system()
3. Konversi Darknet untuk menggunakan kompiler C++ (g++ di Linux, VisualStudio di Windows)
4. Perbaiki versi Windows
5. Perbaiki dukungan Python
6. Bangun perpustakaan darknet
7. Aktifkan kembali label pada prediksi (kode "abjad")
8. Aktifkan kembali kode CUDA/GPU
9. Aktifkan kembali CUDNN
10. Aktifkan kembali separuh CUDNN
11. Jangan melakukan hardcode pada arsitektur CUDA
12. Informasi versi CUDA yang lebih baik
13. Aktifkan kembali AVX
14. Hapus solusi lama dan Makefile
15. Jadikan OpenCV non-opsional
16. Hapus ketergantungan pada perpustakaan pthread lama
17. Hapus STB
18. Tulis ulang CMakeLists.txt untuk menggunakan instrumentasi CUDA baru
19. Hapus kode “abjad” lama dan hapus lebih dari 700 gambar di data/label
20. Membangun melampaui kode sumber
21. Memiliki keluaran nomor versi yang lebih baik
22. Optimalisasi kinerja terkait pelatihan (tugas berkelanjutan)
23. Optimalisasi kinerja terkait inferensi (tugas yang sedang berlangsung)
24. Gunakan referensi berdasarkan nilai bila memungkinkan
25. Bersihkan file .hpp
26. Tulis ulang darknet.h
27. Jangan konversikan cv::Mat ke void*, melainkan gunakan sebagai objek C++ yang benar
28. Memperbaiki atau mempertahankan struktur gambar internal yang digunakan secara konsisten
29. Perbaiki 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 berjalan
30. Perbaiki Python API di V3
31. Diperlukan dukungan Python yang lebih baik (adakah pengembang Python yang membutuhkan bantuan?)
tujuan jangka pendek
1. Ganti printf() dengan std::cout (sedang dalam proses)
2. Selidiki dukungan kamera zed lama
3. Penguraian baris perintah yang lebih baik dan lebih konsisten (sedang dalam proses)
tujuan jangka menengah
1. Hapus semua kode char* dan ganti dengan std::string
2. Jangan sembunyikan peringatan dan bersihkan peringatan kompiler (sedang berlangsung)
3. Penggunaan cv::Mat yang lebih baik daripada struktur gambar khusus di C (sedang dalam proses)
4. Ganti fungsionalitas daftar lama dengan std::vector atau std::list
5. Memperbaiki dukungan untuk gambar skala abu-abu 1 saluran
6. Tambahkan dukungan untuk gambar saluran-N dengan N > 3 (misalnya gambar dengan kedalaman ekstra atau saluran panas)
7. Pembersihan kode yang sedang berlangsung (berkelanjutan)
tujuan jangka panjang
1. Perbaiki masalah CUDA/CUDNN di semua GPU
2. Tulis ulang kode CUDA+cuDNN
3. Selidiki penambahan dukungan untuk GPU non-NVIDIA
4. Kotak pembatas yang diputar, atau semacam penyangga "sudut".
5. Poin/kerangka penting
6. Peta Panas (sedang berlangsung)
7. Berpisah