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.
Pengesanan objek melibatkan dua tugas utama:
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.
Untuk memulakan pengesanan objek dalam Python, anda memerlukan beberapa perpustakaan.
Pergi ke python.org dan muat turun versi terkini Python (3.8+).
Kami akan menggunakan OpenCV untuk pemprosesan imej dan TensorFlow untuk pengesanan objek.
pip install opencv-python tensorflow
Secara pilihan, pasang Matplotlib untuk menggambarkan hasil pengesanan.
pip install matplotlib
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.
Berikut ialah cara melaksanakan saluran pengesanan objek mudah.
import tensorflow as tf # Load the pre-trained model model = tf.saved_model.load("ssd_mobilenet_v2_fpnlite_320x320/saved_model")
Anda boleh memuat turun model daripada model zoo TensorFlow.
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, ...]
# 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)
# 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()
Kod ini memuatkan imej, mengesan objek dan menggambarkannya dengan kotak sempadan. Ambang keyakinan ditetapkan kepada 50%, menapis pengesanan keyakinan rendah.
Bersedia untuk meningkatkan kemahiran pengesanan objek anda ke tahap seterusnya?
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!
Atas ialah kandungan terperinci Panduan Pemula untuk Pengesanan Objek dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!