Inferensi Deteksi Objek dengan Python dengan YOLOv5 dan PyTorch PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Inferensi Deteksi Objek dengan Python dengan YOLOv5 dan PyTorch

Pengantar

Deteksi objek adalah bidang besar dalam visi komputer, dan salah satu aplikasi visi komputer yang lebih penting "di alam liar". Di satu sisi, ini dapat digunakan untuk membangun sistem otonom yang menavigasi agen melalui lingkungan - baik itu robot yang melakukan tugas atau mobil yang mengemudi sendiri, tetapi ini membutuhkan persimpangan dengan bidang lain. Namun, deteksi anomali (seperti produk cacat pada garis), penempatan objek di dalam gambar, deteksi wajah, dan berbagai aplikasi deteksi objek lainnya dapat dilakukan tanpa memotong bidang lain.

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. Salah satu manfaat utama berada dalam ekosistem adalah ekosistem memberi Anda cara untuk tidak mencari informasi berguna tentang praktik, alat, dan pendekatan yang baik untuk digunakan. Dengan deteksi objek โ€“ kebanyakan orang harus melakukan lebih banyak penelitian tentang lanskap lapangan untuk mendapatkan pegangan yang baik.

Untungnya bagi banyak orang โ€“ Ultralytics telah mengembangkan API deteksi objek yang sederhana, sangat kuat, dan indah di sekitar implementasi YOLOv5 mereka.

Dalam panduan singkat ini, kita akan melakukan Deteksi Objek dengan Python, dengan YOLOv5 yang dibuat oleh Ultralytics di PyTorch, menggunakan serangkaian bobot yang telah dilatih sebelumnya yang dilatih di MS COCO.

YOLOv5

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. Sungguh, ini adalah contoh keindahan implementasi perangkat lunak sumber terbuka, dan bagaimana hal itu menggerakkan dunia tempat kita tinggal.

Proyek ini menyediakan bobot yang telah dilatih sebelumnya pada MS COCO, kumpulan data pokok pada objek dalam konteks, yang dapat digunakan untuk benchmark dan membangun sistem deteksi objek umum โ€“ tetapi yang paling penting, dapat digunakan untuk mentransfer pengetahuan umum objek dalam konteks ke kustom kumpulan data.

Deteksi Objek dengan YOLOv5

Sebelum melangkah maju, pastikan Anda memiliki torch dan torchvision dipasang:

! python -m pip install torch torchvision

YOLOv5 memiliki dokumentasi terperinci, tanpa basa-basi dan API sederhana yang indah, seperti yang ditunjukkan pada repo itu sendiri, dan dalam contoh berikut:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

Argumen kedua dari hub.load() metode menentukan bobot yang ingin kita gunakan. Dengan memilih di mana saja antara yolov5n untuk yolov5l6 โ€“ kami memuat dalam bobot pra-latihan MS COCO. Untuk model khusus:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

Bagaimanapun โ€“ setelah Anda melewati input melalui model, objek yang dikembalikan menyertakan metode yang berguna untuk menginterpretasikan hasil, dan kami telah memilih untuk render() mereka, yang mengembalikan array NumPy yang bisa kita masukkan ke dalam imshow() panggilan. Ini menghasilkan format yang bagus:

Menyimpan Hasil sebagai File

Anda dapat menyimpan hasil inferensi sebagai file, menggunakan results.save() Metode:

results.save(save_dir='results')

Ini akan membuat direktori baru jika belum ada, dan menyimpan gambar yang sama yang baru saja kita plot sebagai file.

Memotong Objek

Anda juga dapat memutuskan untuk memotong objek yang terdeteksi sebagai file individual. Dalam kasus kami, untuk setiap label yang terdeteksi, sejumlah gambar dapat diekstraksi. Ini mudah dicapai melalui results.crop() metode, yang menciptakan runs/detect/ direktori, dengan expN/crops (di mana N meningkat untuk setiap proses), di mana direktori dengan gambar yang dipotong dibuat untuk setiap label:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

Anda juga dapat memverifikasi struktur file keluaran dengan:

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!

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Penghitungan Objek

Secara default, saat Anda melakukan deteksi atau mencetak results objek โ€“ Anda akan mendapatkan jumlah gambar tempat inferensi dilakukan untuk itu results objek (YOLOv5 juga berfungsi dengan kumpulan gambar), resolusinya dan jumlah setiap label yang terdeteksi:

print(results)

Ini menghasilkan:

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Inferensi dengan Script

Atau, Anda dapat menjalankan skrip deteksi, detect.py, dengan mengkloning repositori YOLOv5:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

Dan kemudian berjalan:

$ python detect.py --source img.jpg

Atau, Anda dapat memberikan URL, file video, jalur ke direktori dengan banyak file, gumpalan di jalur yang hanya cocok untuk file tertentu, tautan YouTube, atau aliran HTTP lainnya. Hasilnya disimpan ke dalam runs/detect direktori.

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 dengan Python dengan YOLOv5 dan PyTorch 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

Kesimpulan

Dalam panduan singkat ini, kami telah melihat bagaimana Anda dapat melakukan deteksi objek dengan YOLOv5 yang dibuat menggunakan PyTorch.

Stempel Waktu:

Lebih dari penyalahgunaan