ㅇ object detection 진행순서
1. 사진 웹스크롤링
2. 라벨링 프로그램으로 라벨링
3. 코랩에서 라벨링한 이미지를 올리고 학습(200장에 1시간), 가중치와 환경구성 파일 생성
4. 학습 시킨 가중치와 환경 구성파일을 로컬 컴퓨터로 내려받음
5. 로컬 주피터 노트북에서 object detection
ㅇ파인애플과 사과 사진으로 실습해보기
1. 파인애플 사진과 사과 사진으로 라벨링해서 학습시킨 가중치와 환경구성파일을 다운로드 받습니다.
2. 함수를 생성해서 detection하기
#1. 필요한 패키지 임포트
import cv2
import numpy as np
#2. 반드시 custom data 안에 라벨링 된 이름으로 써야함
LABELS = ['pineapple','apple']
#3. object detection하려는 사물의 정확도에 대한 확률에 대한 임계치 정보를 적어줍니다.
CONFIDENCE = 0.5
THRESHOLD = 0.5 #NMS(Num Max Suppression)
#4. cv2에 내장된 readNetFromDarknet함수를 사용
# 다크넷에서 학습시킨 가중치와 환경구성 파일을 불러옴
# 다크넷은 오브젝트 디텍션을 위해 설계된 신경망
net = cv2.dnn.readNetFromDarknet('C:\\object2\\yolov4_custom.cfg','C:\\object2\\yolov4_custom_last.weights')
#5. 위에서 만든 net 신경망을 이용해 object detection 하는 함수(boxing)
def main(img_path):
img = cv2.imread(img_path) # 이미지를 숫자로 불러와서
H, W, _ = img.shape # 세로와 가로 사이즈를 변수로 받음
# 이미지를 같은 사이즈(416,416)로 리사이즈하고 정규화 진행
blob = cv2.dnn.blobFromImage(img, scalefactor=1/255., size=(416, 416), swapRB=True)
net.setInput(blob) # 다크넷으로 학습 시킨 신경망에 blob이미지를 넣음
output = net.forward() #이미지를 신경망에 흘려보낸 결과를 output에 담음
boxes, confidences, class_ids = [], [], [] #비어 있는 리스트 3개 선언
#사진에서 학습한 이미지가 있는지 찾아보는 작업
for det in output: #output [:4]:x,y,w,h, [5:]:score
box = det[:4]
scores = det[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > CONFIDENCE:
cx, cy, w, h = box * np.array([W, H, W, H])
x = cx - (w / 2)
y = cy - (h / 2)
boxes.append([int(x), int(y), int(w), int(h)])
confidences.append(float(confidence))
class_ids.append(class_id)
#Num Max Suppression
idxs = cv2.dnn.NMSBoxes(boxes, confidences, CONFIDENCE, THRESHOLD)
if len(idxs) > 0:
for i in idxs.flatten():
x, y, w, h = boxes[i]
cv2.rectangle(img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255), thickness=2)
cv2.putText(img, text='%s %.2f %d' % (LABELS[class_ids[i]], confidences[i], w), org=(x, y -10 ), fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=0.5, color=(0, 0, 255), thickness=2)
cv2.imwrite('c:\\object2\\detection9.png', img)
path='C:\\object2\\ex2.jpg'
main(path)
문제211. 웹에서 사진을 2개의 종류를 골라서 웹스크롤링하고 라벨링을 하시오.
반응형
'Study > class note' 카테고리의 다른 글
딥러닝 / 고라니, 너구리 디텍션2 (0) | 2022.05.04 |
---|---|
딥러닝 / object detection 주피터에서 실행하기2, 고라니와 너구리 디텍션 (0) | 2022.05.03 |
딥러닝 / object detection 다른 사진으로 학습시키는 방법 (0) | 2022.05.02 |
딥러닝 / 동영상 object ditection (0) | 2022.05.01 |
딥러닝 / GoogleLeNet(인셉션), ResNet50 + 사용자 인터페이스 (0) | 2022.05.01 |