객체 감지는 컴퓨터 비전에서 가장 흥미로운 영역 중 하나이며, 이를 통해 기계는 이미지나 비디오에서 객체를 인식하고 찾을 수 있습니다. 이 가이드에서는 Python을 사용한 객체 감지 방법을 소개하여 널리 사용되는 라이브러리를 사용하여 기본 감지 파이프라인을 구현하는 데 도움을 줍니다. 초보자이거나 기존 기술을 기반으로 구축하려는 경우 이 튜토리얼은 시작하는 데 필수적인 통찰력을 제공합니다.
객체 감지에는 두 가지 주요 작업이 포함됩니다.
이는 모델이 클래스 레이블만 예측하는 단순한 이미지 분류보다 더 복잡합니다. 객체 감지를 위해서는 이미지 내 객체의 클래스와 위치를 모두 예측해야 합니다.
Python에서 객체 감지를 시작하려면 몇 가지 라이브러리가 필요합니다.
python.org로 이동하여 최신 버전의 Python(3.8)을 다운로드하세요.
이미지 처리에는 OpenCV를 사용하고 객체 감지에는 TensorFlow를 사용합니다.
pip install opencv-python tensorflow
선택적으로 Matplotlib를 설치하여 탐지 결과를 시각화합니다.
pip install matplotlib
처음부터 학습하는 대신 TensorFlow의 객체 감지 API 또는 PyTorch에서 사전 학습된 모델을 사용하세요. 사전 학습된 모델은 COCO(Common Objects in Context)와 같은 데이터 세트를 활용하여 리소스를 절약합니다.
이 튜토리얼에서는 빠르고 정확한 사전 학습된 모델인 TensorFlow의 ssd_mobilenet_v2를 사용합니다.
간단한 객체 감지 파이프라인을 구현하는 방법은 다음과 같습니다.
import tensorflow as tf # Load the pre-trained model model = tf.saved_model.load("ssd_mobilenet_v2_fpnlite_320x320/saved_model")
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()
이 코드는 이미지를 로드하고 객체를 감지한 후 경계 상자로 시각화합니다. 신뢰도 임계값은 50%로 설정되어 신뢰도가 낮은 탐지를 필터링합니다.
객체 감지 기술을 한 단계 더 발전시킬 준비가 되셨나요?
Python의 객체 감지는 의료, 보안, 자율 주행과 같은 산업에서 가능성의 세계를 열어줍니다. TensorFlow 및 OpenCV와 같은 도구를 사용하면 YOLO 또는 SSD와 같은 사전 학습된 모델을 사용하여 감지 파이프라인을 빠르게 구현할 수 있습니다. 기본 사항에 익숙해지면 실시간 감지 및 커스텀 모델 학습과 같은 고급 주제를 탐색할 수 있습니다.
다음에는 객체 감지를 어디에 적용하시겠습니까? 아래 댓글에서 토론해 보세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3