728x90
반응형
카메라 관련 인공지능 프로그램을 개발하려면 몇 가지 라이브러리와 프레임워크를 사용해야 합니다. 다음은 파이썬으로 카메라 관련 인공지능 프로그램을 개발하는 데 도움이 될 수 있는 몇 가지 라이브러리와 프레임워크입니다.
- OpenCV (Open Source Computer Vision):
- OpenCV는 이미지 및 비디오 처리를 위한 강력한 라이브러리입니다. 카메라에서 영상을 읽고 처리하는 데 사용할 수 있습니다.
- TensorFlow 및 Keras:
- TensorFlow와 Keras는 딥러닝 모델을 만들고 학습시키는 데 사용되는 강력한 도구입니다. 객체 감지, 얼굴 인식 등을 수행할 수 있는 사전 학습된 모델을 활용할 수 있습니다.
- PyTorch:
- PyTorch는 딥러닝 연구 및 개발을 위한 라이브러리로, 유연하고 사용하기 쉬운 API를 제공합니다. PyTorch를 사용하여 강력한 컴퓨터 비전 작업을 수행할 수 있습니다.
- Dlib:
- Dlib은 얼굴 감지, 얼굴 인식 및 얼굴 특징 추출을 위한 라이브러리로, 오픈소스로 제공됩니다.
- YOLO (You Only Look Once):
- YOLO는 물체 감지를 위한 신경망 아키텍처로, 실시간 객체 감지에 많이 사용됩니다. YOLO를 통해 카메라 영상에서 물체를 식별하는 프로그램을 개발할 수 있습니다.
- face_recognition 라이브러리:
- face_recognition은 얼굴을 식별하기 위한 간단한 라이브러리로, 빠르게 얼굴을 감지하고 식별할 수 있습니다.
이러한 라이브러리와 프레임워크를 조합하여 원하는 인공지능 프로그램을 개발할 수 있습니다. 필요에 따라 다양한 튜토리얼과 예제 코드를 참고하여 진행하면 도움이 될 것입니다.
학습을 목적으로 쥬피터 노트북으로 뭔가 우선 하나쯤 만들어 볼려 합니다 .
5번 YOLO를 이용해서 간단한 예제로 시작해보도록 하겠습니다. 물론 저도 이 부분은 처음이라 같이 공부하는 방식으로 진행하고자 합니다.
필요한 모듈을 설치하는 것으로 부터 시작하겠습니다.
!pip install opencv-python numpy
YOLO의 예제를 실행하기 위해서 필요한 3개의 파일을 다운 받아야 합니다.
https://pjreddie.com/media/files/yolov3.weights
https://github.com/pjreddie/darknet/blob/master/data/coco.names
https://github.com/AlexeyAB/darknet/blob/master/cfg/yolov3.cfg
저는 D:/YOLO로 임시로 저장하였습니다. 각자 다운받은 위치를 # YOLO 모델 부분에 파일의 경로를 잘 넣어 주시면 되겠습니다.
import cv2
import numpy as np
# YOLO 모델 로딩
net = cv2.dnn.readNet("D:/YOLO/yolov3.weights", "D:/YOLO/yolov3.cfg") # 파일경로
layer_names = net.getLayerNames()
output_layers = [layer_names[i - 1] for i in net.getUnconnectedOutLayers()]
# 클래스 이름 로딩
with open("D:/YOLO/coco.names", "r") as f: #파일경로
classes = [line.strip() for line in f.readlines()]
# 웹캠 열기
cap = cv2.VideoCapture(0) # 0은 기본 웹캠을 나타냄
while True:
# 웹캠에서 프레임 읽기
ret, frame = cap.read()
# YOLO 입력 이미지로 변환
height, width, channels = frame.shape
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
net.setInput(blob)
outs = net.forward(output_layers)
# 감지된 객체 정보 저장
class_ids = []
confidences = []
boxes = []
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.5: # 신뢰도가 50% 이상인 경우
# 감지된 객체의 바운딩 박스 정보 저장
center_x = int(detection[0] * width)
center_y = int(detection[1] * height)
w = int(detection[2] * width)
h = int(detection[3] * height)
x = int(center_x - w / 2)
y = int(center_y - h / 2)
boxes.append([x, y, w, h])
confidences.append(float(confidence))
class_ids.append(class_id)
# 비최대 억제 적용
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)
# 감지된 객체 정보를 화면에 표시
font = cv2.FONT_HERSHEY_PLAIN
for i in range(len(boxes)):
if i in indexes:
x, y, w, h = boxes[i]
label = str(classes[class_ids[i]])
color = (0, 255, 0) # 각 클래스에 대해 새로운 색상을 할당
cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)
cv2.putText(frame, label, (x, y + 30), font, 3, color, 2)
# 화면에 결과 표시
cv2.imshow("YOLO Object Detection", frame)
# 'q' 키를 누르면 종료
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 웹캠 해제 및 창 닫기
cap.release()
cv2.destroyAllWindows()
이상으로 YOLO 예제 하나 실행하였네요.
오늘은 여기까지 입니다.
728x90
반응형
'파이썬 > 이미지데이터 처리' 카테고리의 다른 글
Jupyter Notebook에 가상환경 구성하기 (0) | 2023.12.17 |
---|---|
TensorFlow 설치하기 (0) | 2023.12.17 |
Pytorch 설치하기 (0) | 2023.12.17 |
detectron2 튜토리얼 (0) | 2023.12.09 |