Jadi teman-teman di blog hari ini kita akan melihat bagaimana kita dapat melakukan Deteksi Objek menggunakan SSD dengan cara yang paling sederhana. SSD sangat cepat dalam Deteksi Objek jika dibandingkan dengan teknologi besar seperti R-CNN atau Fast R-CNN, dll. Ini akan menjadi proyek yang sangat menyenangkan dengan kasus penggunaan tanpa akhir. Jadi tanpa batas waktu lebih lanjut.

Baca artikel lengkap dengan kode sumber di sini —https://machinelearningprojects.net/object-detection-using-ssd/

Kode untuk Deteksi Objek menggunakan SSD…

from imutils.video import FPS
import numpy as np
import argparse
import imutils
import cv2

use_gpu = True
live_video = False
confidence_level = 0.5
fps = FPS().start()
ret = True
CLASSES = ["background", "aeroplane", "bicycle", "bird", "boat",
           "bottle", "bus", "car", "cat", "chair", "cow", "diningtable",
           "dog", "horse", "motorbike", "person", "pottedplant", "sheep",
           "sofa", "train", "tvmonitor"]

COLORS = np.random.uniform(0, 255, size=(len(CLASSES), 3))

net = cv2.dnn.readNetFromCaffe('ssd_files/MobileNetSSD_deploy.prototxt', 'ssd_files/MobileNetSSD_deploy.caffemodel')

if use_gpu:
    print("[INFO] setting preferable backend and target to CUDA...")
    net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
    net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)


print("[INFO] accessing video stream...")
if live_video:
    vs = cv2.VideoCapture(0)
else:
    vs = cv2.VideoCapture('test.mp4')

while ret:
    ret, frame = vs.read()
    if ret:
        frame = imutils.resize(frame, width=400)
        (h, w) = frame.shape[:2]

        blob = cv2.dnn.blobFromImage(frame, 0.007843, (300, 300), 127.5)
        net.setInput(blob)
        detections = net.forward()

        for i in np.arange(0, detections.shape[2]):
            confidence = detections[0, 0, i, 2]
            if confidence > confidence_level:
                idx = int(detections[0, 0, i, 1])
                box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
                (startX, startY, endX, endY) = box.astype("int")

                label = "{}: {:.2f}%".format(CLASSES[idx], confidence * 100)
                cv2.rectangle(frame, (startX, startY), (endX, endY), COLORS[idx], 2)

                y = startY - 15 if startY - 15 > 15 else startY + 15
                cv2.putText(frame, label, (startX, y), cv2.FONT_HERSHEY_SIMPLEX, 0.5, COLORS[idx], 2)
                
        cv2.imshow('Live detection',frame)

        if cv2.waitKey(1)==27:
            break

        fps.update()

fps.stop()

print("[INFO] elasped time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))
  • Baris 1–5 — Mengimpor perpustakaan yang diperlukan untuk Deteksi Objek menggunakan SSD.
  • Baris 7–15 — Mendefinisikan beberapa konstanta dan array Kelas. Model SSD kami dilatih pada 21 kelas ini.
  • Baris 17 — Mendefinisikan susunan warna di mana setiap kelas diberi warna secara acak.
  • Baris 19 — Membaca jaringan dalam variabel bernama net menggunakan cv2.dnn.readNetFromCaffe.
  • Baris 21–24 — Jika parameter use_gpu disetel ke TRUE, setel backend dan target ke Cuda.
  • Baris 27–31 — Inisialisasi objek VideoCapture dengan 0 untuk video langsung atau dengan nama file video.
  • Baris 34 - Mari kita masuk ke array tak terbatas dan membaca framenya.
  • Baris 35 — Jika ret mengatakan bahwa jika objek VideoCapture mengembalikan True, maka lanjutkan saja.
  • Baris 36–37 — Ubah ukuran bingkai dan dapatkan tinggi serta lebarnya.
  • Baris 39–41 — Buat blob dari gambar, atur sebagai input, dan teruskan melalui jaringan menggunakan cv2.blobFromImage.

Untuk penjelasan kode lebih lanjut dan kode sumber kunjungi di sini



Untuk menjelajahi lebih lanjut Machine Learning, Deep Learning, Computer Vision, NLP, Proyek Flask, kunjungi blog saya.



Jadi ini saja untuk blog ini kawan, terima kasih telah membacanya dan saya harap Anda membawa sesuatu setelah membaca ini dan sampai waktu berikutnya 👋…