20.11.28 19:02 작성
·
166
0
print(i, confidence, detections[0, 0, i, 3], startX, startY, endX, endY)에서 detections[0, 0, i, 3]값은 무슨 의미인지 이해가 잘 안됩니다. 왜 사용하는지 그럴 필요가있는지에 대하여 알고싶습니다.
답변 2
0
0
2020. 11. 30. 04:23
안녕하세요?
- model에서 이미지를 분석하고 가져온 값을 detections에 넣었습니다.
그럼 이렇게 출력을 해볼께요.
print(detections)
print(detections.shape[2])
# loop over the detections
for i in range(0, detections.shape[2]):......
그러면 detections은
[[[[0. 1. 0.99986076 ... 0.16988611 0.7576092
0.77922064]...... 같은 무려 4차 배열로 되어 있고
detections.shape[2]를 출력해 보시면 200이라는 값이 출력됩니다.
이미지를 marathon_02.jpg로 바꾸면 detections값은 바뀌는데 detections.shape[2]은 그대로 200입니다.
전체 몇개의 박스를 찾아오나보려고 if confidence > 0:라고 고쳐보고
아래 print(i, confidence, startX, startY, endX, endY)를 사용해서 보니
marathon_02.jpg그림은 121까지 그러니까 122개의 박스를 찾아오네요.
그러니까 detections.shape[2]는 모델이 가져오는 최대 박스의 갯수라고 보면 됩니다.
- detections은 [[[[0. 1. 0.99986076 ... 0.16988611 0.7576092
0.77922064]...... 이렇게 나왔으니 detections[0, 0]을 출력해 볼께요.
[[0. 1. 0.99986076 ... 0.16988611 0.7576092 0.77922064]....라고 나오네요.
즉, 우리가 그릴 박스들의 속성들을 가져옵니다.
confidence = detections[0, 0, i, 2]라는 루프를 돌때 첫번째 i가 0일때 detections[0, 0]의 첫번째 배열값은
[0. 1. 0.99986076 ... 0.16988611 0.7576092 0.77922064]을 의미하고
이 중 2, 즉 세번째는 0.99986076로 이 박스가 얼굴일 가능성이 99.9%를 넘는다는 것을 의미합니다.
- box = detection[0,0,i,3:7] 라는 루프를 돌때 첫번째i가 0일때 베열 3번부터 7번 이전 즉 6번째 까지 값은
0.36570626 0.16988611 0.7576092 0.77922064로 그림의 좌표를 나타냅니다.
- 3번째 0.36570626는 전체 폭 중 박스 시작점의 x좌표 상대위치
- 4번째 0.16988611는 전체 높이 중 박스 시작점의 y좌표 상대위치
- 5번째 0.7576092는 전체 폭 중 박스 끝점의 x좌표 상대위치
- 6번째 0.77922064는 전체 높이 중 박스 끝점의 y좌표 상대위치
그래서 * np.array([width, height, width, height])를 곱해서 (startX, startY, endX, endY)를 구하는 것입니다.
감사합니다.