Panduan Pemula untuk Pengesanan Objek dalam Python

WBOY
Lepaskan: 2024-09-07 14:01:39
asal
308 orang telah melayarinya

A Beginner’s Guide to Object Detection in Python

Pengesanan objek ialah salah satu kawasan yang paling menarik dalam penglihatan komputer, membolehkan mesin mengecam dan mengesan objek dalam imej atau video. Panduan ini akan memperkenalkan anda kepada pengesanan objek menggunakan Python, membantu anda melaksanakan saluran pengesanan asas dengan perpustakaan popular. Sama ada anda seorang pemula atau ingin membina kemahiran sedia ada anda, tutorial ini akan memberikan cerapan penting untuk bermula.


Apakah Pengesanan Objek? ?

Pengesanan objek melibatkan dua tugas utama:

  1. Klasifikasi Imej: Menentukan objek yang terdapat dalam imej.
  2. Penyetempatan Objek: Mencari kedudukan objek menggunakan kotak sempadan.

Ini menjadikannya lebih kompleks daripada klasifikasi imej mudah, di mana model hanya meramalkan label kelas. Pengesanan objek memerlukan meramalkan kedua-dua kelas dan lokasi objek dalam imej.


Algoritma Pengesanan Objek Popular ?

1. YOLO (Anda Hanya Tengok Sekali)

  • Terkenal dengan kelajuan, YOLO ialah sistem pengesanan objek masa nyata yang meramalkan kotak sempadan dan kebarangkalian kelas secara serentak.

2. SSD (Pengesan Berbilang Kotak Tembakan Tunggal)

  • SSD mengesan objek dalam satu laluan dan cemerlang dalam mengesan objek pada skala berbeza menggunakan peta ciri.

3. R-CNN yang lebih pantas

  • Model dua peringkat yang mula-mula menjana cadangan wilayah dan kemudian mengklasifikasikannya. Ia lebih tepat tetapi lebih perlahan daripada YOLO dan SSD.

Sediakan Persekitaran Python Anda ?️

Untuk memulakan pengesanan objek dalam Python, anda memerlukan beberapa perpustakaan.

Langkah 1: Pasang Python

Pergi ke python.org dan muat turun versi terkini Python (3.8+).

Langkah 2: Pasang Perpustakaan Diperlukan

Kami akan menggunakan OpenCV untuk pemprosesan imej dan TensorFlow untuk pengesanan objek.

pip install opencv-python tensorflow
Salin selepas log masuk

Secara pilihan, pasang Matplotlib untuk menggambarkan hasil pengesanan.

pip install matplotlib
Salin selepas log masuk

Model Pra-latihan untuk Pengesanan Objek ?

Daripada berlatih dari awal, gunakan model pra-latihan daripada API Pengesanan Objek TensorFlow atau PyTorch. Model pra-latihan menjimatkan sumber dengan memanfaatkan set data seperti COCO (Objek Biasa dalam Konteks).

Untuk tutorial ini, kami akan menggunakan ssd_mobilenet_v2 TensorFlow, model pra-latihan yang pantas dan tepat.


Pengesanan Objek dengan TensorFlow dan OpenCV ?‍?

Berikut ialah cara melaksanakan saluran pengesanan objek mudah.

Langkah 1: Muatkan Model Pra-terlatih

import tensorflow as tf

# Load the pre-trained model
model = tf.saved_model.load("ssd_mobilenet_v2_fpnlite_320x320/saved_model")
Salin selepas log masuk

Anda boleh memuat turun model daripada model zoo TensorFlow.

Langkah 2: Muatkan dan Proses Imej

import cv2
import numpy as np

# Load an image using OpenCV
image_path = 'image.jpg'
image = cv2.imread(image_path)

# Convert the image to a tensor
input_tensor = tf.convert_to_tensor(image)
input_tensor = input_tensor[tf.newaxis, ...]
Salin selepas log masuk

Langkah 3: Lakukan Pengesanan Objek

# Run inference on the image
detections = model(input_tensor)

# Extract relevant information like bounding boxes, classes, and scores
num_detections = int(detections.pop('num_detections'))
detections = {key: value[0, :num_detections].numpy() for key, value in detections.items()}
boxes = detections['detection_boxes']
scores = detections['detection_scores']
classes = detections['detection_classes'].astype(np.int64)
Salin selepas log masuk

Langkah 4: Visualisasikan Hasilnya

# Draw bounding boxes on the image
for i in range(num_detections):
    if scores[i] > 0.5:  # Confidence threshold
        box = boxes[i]
        h, w, _ = image.shape
        y_min, x_min, y_max, x_max = box

        start_point = (int(x_min * w), int(y_min * h))
        end_point = (int(x_max * w), int(y_max * h))

        # Draw rectangle
        cv2.rectangle(image, start_point, end_point, (0, 255, 0), 2)

# Display the image
cv2.imshow("Detections", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Salin selepas log masuk

Kod ini memuatkan imej, mengesan objek dan menggambarkannya dengan kotak sempadan. Ambang keyakinan ditetapkan kepada 50%, menapis pengesanan keyakinan rendah.


Topik Lanjutan ?

Bersedia untuk meningkatkan kemahiran pengesanan objek anda ke tahap seterusnya?

  • Pengesanan Objek Tersuai: Latih model tersuai pada set data anda sendiri menggunakan TensorFlow atau PyTorch.
  • Pengesanan Masa Nyata: Gunakan pengesanan objek pada strim video langsung untuk aplikasi seperti keselamatan atau pemanduan autonomi.
  • Pengedaran Peranti Tepi: Optimumkan model pengesanan objek untuk peranti mudah alih dan IoT.

Kesimpulan ?

Pengesanan objek dalam Python membuka dunia kemungkinan dalam industri seperti penjagaan kesihatan, keselamatan dan pemanduan autonomi. Dengan alatan seperti TensorFlow dan OpenCV, anda boleh melaksanakan saluran pengesanan dengan cepat menggunakan model terlatih seperti YOLO atau SSD. Sebaik sahaja anda sudah biasa dengan asasnya, anda boleh meneroka topik yang lebih lanjutan seperti pengesanan masa nyata dan latihan model tersuai.

Di manakah anda akan menggunakan pengesanan objek seterusnya? Jom bincang dalam komen di bawah!


Kata kunci: pengesanan objek, Python, penglihatan komputer, OpenCV, TensorFlow, YOLO, SSD, R-CNN yang lebih pantas

Atas ialah kandungan terperinci Panduan Pemula untuk Pengesanan Objek dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!