Inferensi Deteksi Objek Real-Time dengan Python dengan YOLOv7 PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Inferensi Deteksi Objek Real-Time dengan Python dengan YOLOv7

Pengantar

Deteksi objek adalah bidang besar dalam visi komputer, dan salah satu aplikasi visi komputer yang lebih penting "di alam liar".

Deteksi objek tidak standar seperti klasifikasi gambar, terutama karena sebagian besar perkembangan baru biasanya dilakukan oleh peneliti individu, pengelola dan pengembang, daripada perpustakaan besar dan kerangka kerja. Sulit untuk mengemas skrip utilitas yang diperlukan dalam kerangka kerja seperti TensorFlow atau PyTorch dan mempertahankan pedoman API yang memandu pengembangan sejauh ini.

Hal ini membuat deteksi objek agak lebih kompleks, biasanya lebih bertele-tele (tetapi tidak selalu), dan kurang mudah didekati daripada klasifikasi gambar.

Untungnya bagi banyak orang โ€“ Ultralytics telah mengembangkan API deteksi objek yang sederhana, sangat kuat, dan indah di sekitar YOLOv5 mereka yang telah diperluas oleh tim penelitian dan pengembangan lain ke versi yang lebih baru, seperti YOLOv7.

Dalam panduan singkat ini, kita akan melakukan Deteksi Objek dengan Python, dengan YOLOv7 yang canggih.

Lanskap YOLO dan YOLOv7

YOLO (Kamu Hanya Melihat Sekali) adalah metodologi, serta keluarga model yang dibangun untuk deteksi objek. Sejak dimulai pada tahun 2015, YOLOv1, YOLOv2 (YOLO9000) dan YOLOv3 telah diusulkan oleh penulis yang sama โ€“ dan komunitas pembelajaran mendalam melanjutkan dengan kemajuan open-source di tahun-tahun berikutnya.

YOLOv5 dari Ultralitik adalah implementasi skala besar pertama dari YOLO di PyTorch, yang membuatnya lebih mudah diakses daripada sebelumnya, tetapi alasan utama YOLOv5 mendapatkan pijakan seperti itu juga adalah API sederhana dan kuat yang dibangun di sekitarnya. Proyek ini mengabstraksikan detail yang tidak perlu, sementara memungkinkan penyesuaian, hampir semua format ekspor yang dapat digunakan, dan menggunakan praktik luar biasa yang membuat keseluruhan proyek menjadi efisien dan seoptimal mungkin.

YOLOv5 masih merupakan proyek pokok untuk membangun model Deteksi Objek, dan banyak repositori yang bertujuan untuk memajukan metode YOLO dimulai dengan YOLOv5 sebagai dasar dan menawarkan API serupa (atau cukup garpu proyek dan bangun di atasnya). Demikian halnya dengan YOLOR (Anda Hanya Belajar Satu Representasi) dan YOLOv7 yang dibangun di atas YOLOR (penulis yang sama). YOLOv7 adalah kemajuan terbaru dalam metodologi YOLO dan terutama, YOLOv7 menyediakan model head baru, yang dapat menampilkan keypoint (kerangka) dan melakukan segmentasi instan selain hanya regresi kotak pembatas, yang tidak standar dengan model YOLO sebelumnya.

Ini membuat segmentasi instans dan deteksi keypoint lebih cepat dari sebelumnya!

Selain itu, YOLOv7 bekerja lebih cepat dan dengan tingkat akurasi yang lebih tinggi daripada model sebelumnya karena pengurangan jumlah parameter dan efisiensi komputasi yang lebih tinggi:

Inferensi Deteksi Objek Real-Time dengan Python dengan YOLOv7 PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Model itu sendiri dibuat melalui perubahan arsitektur, serta mengoptimalkan aspek pelatihan, dijuluki "bag-of-freebies", yang meningkatkan akurasi tanpa meningkatkan biaya inferensi.

Menginstal YOLOv7

Menginstal dan menggunakan YOLOv7 bermuara pada mengunduh repositori GitHub ke mesin lokal Anda dan menjalankan skrip yang disertakan dengannya.

Catatan: Sayangnya, pada saat penulisan, YOLOv7 tidak menawarkan API program yang bersih seperti YOLOv5, yang biasanya dimuat dari torch.hub(), meneruskan repositori GitHub. Ini tampaknya merupakan fitur yang seharusnya berfungsi tetapi saat ini gagal. Setelah diperbaiki, saya akan memperbarui panduan atau menerbitkan yang baru di API terprogram. Untuk saat ini โ€“ kita akan fokus pada skrip inferensi yang disediakan di repositori.

Meski begitu, Anda dapat melakukan deteksi secara real-time pada video, gambar, dll dan menyimpan hasilnya dengan mudah. Proyek ini mengikuti konvensi yang sama dengan YOLOv5, yang memiliki dokumentasi ekstensif, jadi Anda mungkin akan menemukan jawaban untuk lebih banyak pertanyaan khusus di repositori YOLOv5 jika Anda memilikinya.

Mari unduh repositori dan lakukan beberapa inferensi:

! git clone https://github.com/WongKinYiu/yolov7.git

Ini menciptakan a yolov7 direktori di direktori kerja Anda saat ini, yang menampung proyek. Mari pindah ke direktori itu dan lihat file-filenya:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

Catatan: Di Notebook Google Colab, Anda harus menjalankan keajaiban %cd perintah di setiap sel yang ingin Anda ubah direktorinya yolov7, sementara sel berikutnya mengembalikan Anda ke direktori kerja asli Anda. Di Notebook Jupyter Lokal, mengubah direktori sekali membuat Anda tetap di dalamnya, jadi tidak perlu mengeluarkan kembali perintah beberapa kali.

Grafik detect.py adalah skrip inferensi yang menjalankan deteksi dan menyimpan hasilnya di bawah runs/detect/video_name, di mana Anda dapat menentukan video_name sambil memanggil detect.py Script. export.py mengekspor model ke berbagai format, seperti ONNX, TFLite, dll. train.py dapat digunakan untuk melatih detektor YOLOv7 khusus (topik panduan lain), dan test.py dapat digunakan untuk menguji detektor (dimuat dari file bobot).

Beberapa direktori tambahan menyimpan konfigurasi (cfg), contoh data (inference), data tentang pembuatan model dan konfigurasi COCO (data), Dll

Ukuran YOLOv7

Model berbasis YOLO berskala dengan baik, dan biasanya diekspor sebagai model yang lebih kecil dan kurang akurat, dan model yang lebih besar dan lebih akurat. Ini kemudian dikerahkan ke perangkat yang lebih lemah atau lebih kuat masing-masing.

YOLOv7 menawarkan beberapa ukuran, dan membandingkannya dengan MS COCO:

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan termasuk lembar contekan. Hentikan perintah Googling Git dan sebenarnya belajar itu!

Model Ukuran Tes APuji AP50tes AP75tes batch 1fps batch 32 waktu rata-rata
YOLOv7 640 51.4% 69.7% 55.9% 161 fps 2.8 ms
YOLOv7-X 640 53.1% 71.2% 57.8% 114 fps 4.3 ms
YOLOv7-W6 1280 54.9% 72.6% 60.1% 84 fps 7.6 ms
YOLOv7-E6 1280 56.0% 73.5% 61.2% 56 fps 12.3 ms
YOLOv7-D6 1280 56.6% 74.0% 61.8% 44 fps 15.0 ms
YOLOv7-E6E 1280 56.8% 74.4% 62.1% 36 fps 18.7 ms

Tergantung pada perangkat keras yang mendasari Anda mengharapkan model untuk berjalan, dan akurasi yang diperlukan โ€“ Anda dapat memilih di antara keduanya. Model terkecil mencapai lebih dari 160FPS pada gambar berukuran 640, pada V100! Anda juga dapat mengharapkan kinerja real-time yang memuaskan pada GPU konsumen yang lebih umum.

Inferensi Video dengan YOLOv7

Buat inference-data folder untuk menyimpan gambar dan/atau video yang ingin Anda deteksi. Dengan asumsi itu di direktori yang sama, kita dapat menjalankan skrip deteksi dengan:

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

Ini akan meminta video berbasis Qt di desktop Anda di mana Anda dapat melihat kemajuan dan inferensi langsung, bingkai demi bingkai, serta menampilkan status ke pipa keluaran standar kami:

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR ๐Ÿš€ v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

Perhatikan bahwa proyek akan berjalan lambat pada mesin berbasis CPU (seperti 1000 md per langkah inferensi dalam output di atas, berjalan pada MacBook Pro 2017 berbasis Intel), dan secara signifikan lebih cepat pada mesin berbasis GPU (mendekati ~5 md/bingkai pada V100). Bahkan pada sistem berbasis CPU seperti ini, yolov7-tiny.pt berjalan di 172ms/frame, yang meskipun jauh dari waktu nyata, masih sangat layak untuk menangani operasi ini pada CPU.

Setelah dijalankan, Anda dapat menemukan video yang dihasilkan di bawah runs/video_1 (nama yang kami berikan di detect.py panggilan), disimpan sebagai .mp4:

Inferensi Deteksi Objek Real-Time dengan Python dengan YOLOv7 PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Inferensi pada Gambar

Inferensi pada gambar bermuara pada proses yang sama โ€“ memasok URL ke gambar di sistem file, dan memanggil detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

Catatan: Pada saat penulisan, output tidak menskalakan label ke ukuran gambar, bahkan jika Anda mengatur --img SIZE. Ini berarti bahwa gambar besar akan memiliki garis kotak pembatas yang sangat tipis dan label kecil.

Inferensi Deteksi Objek Real-Time dengan Python dengan YOLOv7 PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Kesimpulan

Dalam panduan singkat ini โ€“ kami telah melihat sekilas YOLOv7, kemajuan terbaru dalam keluarga YOLO, yang dibangun di atas YOLOR. Kami telah melihat cara menginstal repositori di mesin lokal Anda dan menjalankan skrip inferensi deteksi objek dengan jaringan yang telah dilatih sebelumnya pada video dan gambar.

Dalam panduan lebih lanjut, kita akan membahas deteksi keypoint dan segmentasi instans.

Melangkah Lebih Jauh โ€“ Pembelajaran Mendalam Praktis untuk Visi Komputer

Sifat ingin tahu Anda membuat Anda ingin melangkah lebih jauh? Kami merekomendasikan untuk memeriksa kami Kelas: โ€œPembelajaran Mendalam Praktis untuk Visi Komputer dengan Pythonโ€.

Inferensi Deteksi Objek Real-Time dengan Python dengan YOLOv7 PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Kursus Computer Vision lainnya?

Kami tidak akan melakukan klasifikasi digit MNIST atau mode MNIST. Mereka melayani bagian mereka sejak lama. Terlalu banyak sumber belajar yang berfokus pada kumpulan data dasar dan arsitektur dasar sebelum membiarkan arsitektur kotak hitam tingkat lanjut memikul beban kinerja.

Kami ingin fokus pada demistifikasi, kepraktisan, pemahaman, intuisi dan proyek nyata. Mau belajar bagaimana Anda dapat membuat perbedaan? Kami akan membawa Anda dalam perjalanan dari cara otak kami memproses gambar hingga menulis pengklasifikasi pembelajaran mendalam tingkat penelitian untuk kanker payudara hingga jaringan pembelajaran mendalam yang "berhalusinasi", mengajari Anda prinsip dan teori melalui kerja praktik, membekali Anda dengan pengetahuan dan alat untuk menjadi ahli dalam menerapkan pembelajaran mendalam untuk memecahkan visi komputer.

Apa yang ada di dalam?

  • Prinsip pertama visi dan bagaimana komputer dapat diajarkan untuk "melihat"
  • Berbagai tugas dan aplikasi visi komputer
  • Alat perdagangan yang akan membuat pekerjaan Anda lebih mudah
  • Menemukan, membuat, dan memanfaatkan kumpulan data untuk visi komputer
  • Teori dan penerapan Jaringan Saraf Konvolusi
  • Menangani pergeseran domain, kejadian bersama, dan bias lainnya dalam kumpulan data
  • Transfer Belajar dan memanfaatkan waktu pelatihan dan sumber daya komputasi orang lain untuk keuntungan Anda
  • Membangun dan melatih pengklasifikasi kanker payudara yang canggih
  • Bagaimana menerapkan dosis skeptisisme yang sehat untuk mengarusutamakan gagasan dan memahami implikasi dari teknik yang diadopsi secara luas
  • Memvisualisasikan "ruang konsep" ConvNet menggunakan t-SNE dan PCA
  • Studi kasus tentang bagaimana perusahaan menggunakan teknik visi komputer untuk mencapai hasil yang lebih baik
  • Evaluasi model yang tepat, visualisasi ruang laten dan mengidentifikasi perhatian model
  • Melakukan penelitian domain, memproses kumpulan data Anda sendiri, dan membuat pengujian model
  • Arsitektur mutakhir, perkembangan ide, apa yang membuatnya unik dan bagaimana menerapkannya
  • KerasCV โ€“ perpustakaan WIP untuk menciptakan saluran pipa dan model yang canggih
  • Cara mengurai dan membaca makalah dan menerapkannya sendiri
  • Memilih model tergantung pada aplikasi Anda
  • Membuat pipeline machine learning ujung ke ujung
  • Lanskap dan intuisi pada deteksi objek dengan R-CNN, RetinaNet, SSD, dan YOLO yang Lebih Cepat
  • Instance dan segmentasi semantik
  • Pengenalan Objek Real-Time dengan YOLOv5
  • Melatih Detektor Objek YOLOv5
  • Bekerja dengan Transformers menggunakan KerasNLP (perpustakaan WIP kekuatan industri)
  • Mengintegrasikan Transformer dengan ConvNets untuk menghasilkan keterangan gambar
  • Deepdream
  • Optimalisasi model Deep Learning untuk visi komputer

Stempel Waktu:

Lebih dari penyalahgunaan