Posts
Q&A
๋์ ํ ๋น ๋ฉ๋ชจ๋ฆฌ ์ง๋ฌธ
ํ๋ฃจ ๋์ ๊ณ ๋ฏผํด๋ณด์๋๋ฐ.. ์๋ฌธ์๋ต ํฉ๋๋ค. ๊ฐ์ฌ๋ ๊ฐ์์ฒ๋ผ ์ง์ 2์ฐจ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด์ ํด๋ณด๋๊น ์ดํด๊ฐ ๋๋ค์! ์ ๊ฐ ์ง๋ฌธ๋๋ฆฐ ๊ฒ ์ค 2๋ฒ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ ๋ทฐ์ pList ์ &pList ๋ฅผ ์ ๋ ฅํ์ ๋์ ์ฐจ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค๋ ์๊ฐ์ ๋๋ค.ใด pList ๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ทฐ์ ์ ๋ ฅ : "pList ๋ผ๋ ์ ์ ํฌ์ธํฐ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฐ์ดํฐ"ใด &pList๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ทฐ์ ์ ๋ ฅ : "pList ๋ผ๋ ์ ์ ํฌ์ธํฐ ๋ณ์์ ๋ด๊ฒจ์๋ ๋ฐ์ดํฐ(๋ฉ๋ชจ๋ฆฌ ์ฃผ์)"๊ทธ๋ฆฌ๊ณ 4๋ฒ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ ๋ทฐ์ pList๋ฅผ ์ ๋ ฅํ๋๊น Failed to load memory ๊ฐ ๋ฐ์ํ ์ด์ ๋ pList ๋ผ๋ ํฌ์ธํฐ ๋ณ์๋ฅผ NULL๋ก ํ ๋นํด์ pList ํฌ์ธํฐ ๋ณ์์ ๋ด๊ฒจ์๋ ๋ฐ์ดํฐ ์ฆ, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ชจ๋ 0์ผ๋ก ์ด๊ธฐํ๋์๊ณ , ๊ฒฐ๊ตญ 0x0000000000000000 ์ฃผ์๊ฐ ๋๋๋ฐ, ํด๋น ์ฃผ์๋ฅผ ๊ฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ๊ฑฐ์์ต๋๋ค!๊ทธ๋ฆผ ๊ทธ๋ฆฐ ๋ถ๋ถ๋ ์ฐธ๊ณ ์ฐจ ๋จ๊น๋๋ค. ํน์ ์ ๊ฐ ์ดํดํ ๊ฒ ์ค ์๋ชป๋ ๋ถ๋ถ์ ๋ณด์ ๋ค๋ฉด ์ ๊ทน ๋ต๊ธ ๋จ๊ฒจ์ฃผ์ ๋ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!(์ฌ์ง) (์ฌ์ง)
- 0
- 3
- 251
Q&A
ํจ์ ์ด๋ฆ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
๋ฐ์์ ์ธํด์ด ๋ต๋ณํด์ฃผ์ด์ ์ ๊ฐ ์ง๋ฌธ๋๋ฆฐ ๋ถ๋ถ์ ์ด๋์ ๋ ํด๊ฒฐ์ด๋์์ต๋๋ค! ์๋ ์ง๋ฌธ์ ๋ํด์๋ง ๊ฐ์ฌ๋์ด ๋ต๋ณ ๊ฐ๋ฅํ์ ์ง ์ฌ์ญ์ต๋๋ค! ๊ทธ๋ฌ๋ฉด ํจ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํด์๋ ๋ฐํ์์์ ์ํํ๋ '๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น'๋ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ํํ ๊น์? ๋ฌธ์์ด์ด๋ ๋ฐฐ์ด์ ๋ํด์๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ฐ์์ ํ๋ ๊ฒฝ์ฐ๋ ๊ฐ์์์๋ ์์๋ฅผ ๋ค์ด์ฃผ์๋ฉด์ ํด์ฃผ์ จ๋๋ฐ, ํจ์์ ์ด๋ฆ ์ฆ, ํจ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ํด์๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ฐ๊ฒ๋๋ ๊ฒฝ์ฐ๋ ์๋์?
- 0
- 3
- 232
Q&A
๋ฌธ์ ์ /์ถ๋ ฅ ์ง๋ฌธ์ ๋๋ค
๋ฐ์ AI๊ฐ ๋ต๋ณ์ ํด์ค์ ๊ฐ์ฌ๋๊ป์ ๋ต๋ณ ์์ฃผ์ ๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค ใ ใ
- 1
- 3
- 317
Q&A
DFS๋ฅผ ํ์ฉํ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๊ฒฐ๊ณผ ๋ง๋๋ ๋ฐฉ๋ฒ ์ง๋ฌธ์ ๋๋ค!
๊ฐ์ฌ๋ ์ ์จ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋๋ฐ.. ์ํํธ๋ฆฌ๋ฅผ ๋ง๋ค๊ธด ํ๋๋ฐ, ์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.. ์๋์ ๊ฐ์ด 2๊ฐ ๊ฐ๋๊ธธ๋ก ๋ง๋๋ ๊ฒ ๋ง๊ณ ์ฌ๋ฌ๊ฐ๋๊ธธ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ๋ ๊ตฌํํด๋ณด์๋๋ฐ ์๋ ๊ฒ ๊ฐ๊ณ ... ํ.. ๋๋ฌด ํ๋๋ค์.. ํํธ๋ฅผ ์กฐ๊ธ ์ฃผ์ค ์ ์์ผ์ค์ง...ใ ใ ๋ฌธ์๋๋ฆฝ๋๋ค.. ๊ตฌ๊ธ๋งํด๋ ์ฐธ์กฐ ์ฝ๋๋ ์๋์ค๋ค์.. (์ฌ์ง)
- 0
- 4
- 414
Q&A
DFS๋ฅผ ํ์ฉํ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๊ฒฐ๊ณผ ๋ง๋๋ ๋ฐฉ๋ฒ ์ง๋ฌธ์ ๋๋ค!
๊ฐ์ฌ๋! ๊ทธ๋ ๋ค๋ฉด ์ ๊ฐ ๊ตฌํํ๋ ์ด์ค๋ฆฌ์คํธ ๋ฐฉ์๋ณด๋ค ์ฌ๊ทํจ์๋ฅผ ํ์ฉํ DFS ๋ฐฉ์์ด ์๊ฐ ๋ณต์ก๋ ๋ฉด์์ ํจ์ฌ ํจ์จ์ ์ธ๊ฐ์!? ์ฌ๊ทํจ์์ ๋ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ด๋ป๊ฒ ๊ณ์ฐํ ์ง ์ ๋ชจ๋ฅด๊ฒ๋ค์ฉ..
- 0
- 4
- 414
Q&A
์์ค ํจ์์ ๋ํด์ ์ง๋ฌธ ์์ต๋๋ค.
๊ฐ์ด ๋ฐฐ์ฐ๋ ์ฌ๋ ์ ์ฅ์ผ๋ก์จ ์ง๋๊ฐ๋ค ํ ๋ฒ ๋ต๋ณ ๋จ๊ธฐ๊ณ ๊ฐ๋๋ค! ์ฐ์ ๊ณผ์ ํฉ์ด๋ผ๋ ๊ฐ๋ ์ ๋ํด ๋ค์ ์ ์ํ๊ณ ๊ฐ์๋ฉด, "ํ์ต ๋ฐ์ดํฐ์๋ง ๋๋ฌด ์ง์คํด์ ํ์ต ๋ฐ์ดํฐ๋ง ์ ๋ง์ถ๊ณ ๊ฒ์ฆ(๋๋ ํ ์คํธ) ๋ฐ์ดํฐ์๋ ์ ๋ชป ๋ง์ถ๋ ํ์"์ด ์์์!? ์ด ๋ง์ ๊ณง "ํ์ต ๋ฐ์ดํฐ์ผ ๋๋ง Loss ๊ฐ์ด ๋งค์ฐ ๋ฎ๊ณ ๊ฒ์ฆ(๋๋ ํ ์คํธ) ๋ฐ์ดํฐ์ผ ๋์ Loss ๊ฐ์ ์๋์ ์ผ๋ก ๋์ ํ์"์ ์๋ฏธํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ ๊ฐ์ ์์์ ์ค๋ช ํ์๋ ๊ฐ์ค์น ๊ท์ ๋ผ๋ ๊ฐ๋ ์ ํ์ต ๋ฐ์ดํฐ์ ๋ํ Loss ๊ฐ์ alpha*||w||^2 ๊ฐ์ ๋ํด์ค๋ค๋ ๊ฒ์ธ๋ฐ์! ์ด๋ ๊ฒ ๋๋ฉด ํ์ต ๋ฐ์ดํฐ์ ๋ํ Loss ๊ฐ์ด ์ด์ ๋ณด๋ค ์ปค์ง๊ฒ ์ฃ !? ๊ทธ๋ง์ ๊ฒฐ๊ตญ ํ์ต ๋ฐ์ดํฐ๋ ์ด์ ๋ณด๋ค ๋ชป ๋ง์ถ๋ ๊ฒ์ ์๋ฏธํ๊ฒ ๋ฉ๋๋ค. ๊ฒฐ๊ตญ ๊ฐ์ค์น ๊ท์ ๋ฅผ ์ ์ฉํจ์ผ๋ก์จ ๋ชจ๋ธ์ด "ํ์ต ๋ฐ์ดํฐ์ ๋ ์ง์คํ๊ฒ ๋๊ณ ๊ฒ์ฆ(๋๋ ํ ์คํธ) ๋ฐ์ดํฐ์ ์ข ๋ ์ ๊ฒฝ์ ์ฐ๊ฒ ๋๊ณ ๊ฒฐ๊ตญ ์ด๋ ๊ณผ์ ํฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ธฐ์ฌํ๋ค"๋ผ๊ณ ์ดํดํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค! ๋ ์์ธํ ๊ฑด ๊ฐ์ฌ๋๊ป์ ๋ฌ์์ฃผ์ค ๋ต๋ณ์ ๋ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค! ์ ์๊ฒฌ์ ์ฐธ๊ณ ๋ง ํด์ฃผ์ธ์!
- 0
- 2
- 479
Q&A
๊ฐ GD๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ iteration ํ์๊ฐ ๋ฌ๋ผ์ง๋์?
์ง๋๊ฐ๋ค ํท๊ฐ๋ฆฌ๋ ์๊ฐ์๋ ์ดํดํ๊ณ ๊ฐ๋๋ค! ์ง๋ฌธ, ๋ต๋ณ ๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค!
- 1
- 3
- 854
Q&A
Mask RCNN ๊ด๋ จํด ๋ช ๊ฐ์ง ์ง๋ฌธ๋๋ฆฝ๋๋ค.
๋ต๋ณ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! 3๋ฒ ์ง๋ฌธ์ ํด์ฃผ์ ์ ์๋์ ๋ต๋ณ์ ์ ๋ฐฉ์์ผ๋ก ๋ค์ ์ ๋ฆฌํ์๋ฉด, ๊ฒฐ๊ตญ 'Binary Mask Prediction'์ด๋, Masking์ธ์ง ์๋์ง๋ง ์์ธกํ๋ ๊ฒ์ด ๋์ง์? Masking ์ด๋ผ๊ณ ์์ธก๋ ํฝ์ ๊ฐ์ ๋์ผ๋ก ์ง์ ๋ณด์์ ๋, ๊ทธ ํฝ์ ๊ฐ์ด '๊ฐ'์ ํด๋นํ๋ ํฝ์ ์ธ์ง, '๊ณ ์์ด'์ ํด๋นํ๋ ํฝ์ ์ธ์ง, '์ฌ์'์ ํด๋นํ๋ ํฝ์ ์ธ์ง๋ ๊ตฌ๋ถํ ์ ์๋ค๋ ๋ง์ด์ ๊ฑด๊ฐ์?
- 0
- 2
- 618
Q&A
OpenCV YOLO์์ ๊ฐ Output layer shape ์ถ๋ ฅ ์ง๋ฌธ์ ๋๋ค!
๋ฆ์ ๋ต๋ณ ์ฃ์กํฉ๋๋ค ใ ใ ํ๋จ์ ์ฝ๋ ์ฒจ๋ถํด๋๋ ธ์ต๋๋ค! # ๋จ์ผ ์ด๋ฏธ์ง๋ฅผ YOLO๋ก Object Detection ํจ์ํ ์ํค๊ธฐ import numpy as np import time import os def get_detected_img(cv_net, img_array, conf_threshold, nms_threshold, use_copied_img=True, is_print=True): # ์๋ณธ ์ด๋ฏธ์ง ์ฌ์ด์ฆ๋ก ๋ค์ ๋๋ ค์ผ ํจ! -> array์ผ๋ row๋ height๋ฅผ ์๋ฏธ! Detection๊ฒฐ๊ณผ๋ก ๋ฐํ๋๋ x์ขํ๋ width๋ฅผ ์๋ฏธํจ! ํท๊ฐ๋ฆฌ์ง ๋ง์ฆ์! height = img_array.shape[0] width = img_array.shape[1] draw_img = None if use_copied_img: draw_img = img_array.copy() else: draw_img = img_array # YOLO์ 3๊ฐ Output layer๋ฅผ ์ป์ layer_names = cv_net.getLayerNames() outlayer_names = [layer_names[i[0] - 1] for i in cv_net.getUnconnectedOutLayers()] #print('out layer names:', outlayer_names) # ๋ก๋ํ YOLO ๋ชจ๋ธ์ ์ ๋ ฅ ์ด๋ฏธ์ง ๋ฃ๊ธฐ cv_net.setInput(cv2.dnn.blobFromImage(img_array, scalefactor=1/255., size=(416, 416), swapRB=True, crop=False)) # ์ด๋ฏธ์ง Object Detection ์ํํ๋๋ฐ Output layers ๋ฃ์ด์ฃผ๊ธฐ! -> ๋ฃ์ด์ค layer์ผ ๋๋ง๋ค์ Output์ ๋ฐํํด์ค start = time.time() cv_out = cv_net.forward(outlayer_names) green, red = (0, 255, 0), (0, 0, 255) class_ids = [] confidences = [] boxes = [] # print('type cv_out:', type(cv_out)) # ์ด 3๊ฐ์ Ouput layer๋ค์ ๋ํด ํ๋์ฉ loop for idx, ouput in enumerate(cv_out): print('output shape:', output.shape) # ๊ฐ Output layer๋ค์ Object Detection ๊ฒฐ๊ณผ ์ฒ๋ฆฌ for idx2, detection in enumerate(ouput): scores = detection[5:] # 80๊ฐ์ ํด๋์ค softmax ํ๋ฅ class_id = np.argmax(scores) # ๊ฐ์ฅ ํ๋ฅ ์ด ๋์ ํด๋์ค id ๋ฐํ confidence = scores[class_id] # ๊ฐ์ฅ ํ๋ฅ ์ด ๋์ ํด๋์ค์ confidence score ๋ฐํ if confidence > conf_threshold: # ๋ค์ด์๋ ์ค์ผ์ผ๋ง๋ ์ขํ๊ฐ๋ค ์ฒ๋ฆฌ(scaled center_x, center_y, width, height) center_x = int(detection[0] * width) center_y = int(detection[1] * height) o_width = int(detection[2] * width) o_height = int(detection[3] * height) # ์ผ์ชฝ ์๋จ ์ขํ left = int(center_x - o_width/2) top = int(center_y - o_height/2) class_ids.append(class_id) confidences.append(float(confidence)) # confidence type => just floatํ์ผ๋ก!(not np.float) boxes.append([left, top, o_width, o_height]) # NMS ์ํ optimal_idx = cv2.dnn.NMSBoxes(boxes, confidences, conf_threshold, nms_threshold) # NMS ๊ฒฐ๊ณผ์ ์ต์ ์ ๋ฐ์ด๋ฉ ๋ฐ์ค๋ค์ ํ๋์ฉ ํ์! if len(optimal_idx) > 0: for i in optimal_idx.flatten(): class_id = class_ids[i] confidence = confidences[i] box = boxes[i] left = int(box[0]) top = int(box[1]) right = int(left + box[2]) bottom = int(top + box[3]) caption = f"{labels_to_names_seq[class_id]}: {confidence :.3f}" # ๋ฐ์ค ์์ฐ๊ณ ์บก์ ๋ฃ๊ธฐ cv2.rectangle(draw_img, (left, top), (right, bottom), green, thickness=2) cv2.putText(draw_img, caption, (left, top-5), cv2.FONT_HERSHEY_COMPLEX, 0.4, red, 1) if is_print: print("Detection ์ํ ์๊ฐ:", time.time() - start, "์ด") return draw_img
- 0
- 3
- 834
Q&A
RPN Lossํจ์์์ t,t*๊ฐ๊ณผ Alternating Training ์ง๋ฌธ์ ๋๋ค!
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค! ๋ต๋ณ์ ์ฝ๊ณ ์ ๊ฐ ์ ๋๋ก ์ดํดํ๋์ง ํ์ธํด๋ณด๋ ค ํฉ๋๋ค! ํ์คํ ์ดํด๋ฅผ ํ๊ณ ์ถ์ด์ ๊ณ์ ์ง๋ฌธ๋๋ฆฌ๋ค์ ใ ใ 1. ๊ทธ๋ ๋ค๋ฉด t*๋ Anchor Box์ ๋ํ Ground Truth Bounding Box์ ์ขํ๊ฐ๋ค์ด๋ผ๋ ๊ฒ์ด์ฃ !? 2. ์๋ฅผ 1๊ฐ์ง๋ง ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ฒซ ๋ฒ์งธ batch๋ก 32๊ฐ์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ด ๋ค์ด๊ฐ๊ณ ์ ์๋๊ป์ ๋ง์ํด์ฃผ์ ๊ณผ์ (RPNํ์ต->์ค๋ธ์ ํธ์ฌ๋ถ,์ขํ๋ฅผ predict->Positive/Negative Anchor๋ก Faster-RCNNํ์ต)์ ํ ๋ฒ ์ํํ ๋ค์, ๋ ๋ฒ์งธ batch๋ก 32๊ฐ์ ๋ค๋ฅธ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์ฒซ ๋ฒ์งธ ๊ณผ์ ์ ์ํํ ๋๋ 'RPN์ ์ ๊น ํ์ต'ํ๋ ๋์์ ๋์ผํ๊ฒ ์ํํ๋์? '์ ๊น ํ์ต'์ด๋ผ๋ ๊ฒ์ด ๊ฐ์ ์์์ ์ธ๊ธํด์ฃผ์ จ๋ RPN์์๋ 1 by 1 ์ปจ๋ณผ๋ฃจ์ layer, Faster RCNN์์๋ FC layer์์๋ง ์ด๋ฃจ์ด์ง๋ ํ์ต์ ์๋ฏธํ์๋ ๊ฑด๊ฐ์? '์ ๊น ํ์ต' ํ๋ค๋ ์๋ฏธ๊ฐ ์๋ก์ด batch ๋ฐ์ดํฐ์ ์ด ๋ค์ด๊ฐ์ ๋ ์ด๋ค ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค๋ ๊ฑด์ง..์ด๋ป๊ฒ ์๋ก์ด ๋ฐ์ดํฐ์ ์ด ๋ค์ด๊ฐ์์๋ 1 by 1 ์ปจ๋ณผ๋ฃจ์ layer์ ํ๋ผ๋ฏธํฐ๋ง ๋ณ๊ฒฝ์ด ๋๋๊ฑด์ง... ๊ฐ์ด ์ ์์ต๋๋ค.. ํํ..ใ ใ .. ์ด๊ฑฐ๋ ๊ตฌํ ์ฝ๋๋ฅผ ์ดํดํด์ผ ํ ๋ฌธ์ ์ผ๊น์..
- 0
- 3
- 493