관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

컴퓨터 비전 9 - 얼굴 탐지(Face Detection) 2 : 사람 얼굴 객체 탐지하기 본문

인공지능/컴퓨터 비전

컴퓨터 비전 9 - 얼굴 탐지(Face Detection) 2 : 사람 얼굴 객체 탐지하기

huenuri 2024. 11. 14. 11:50

오늘은 조금 천천히 가고 싶은 날이어서 아침 루틴을 천천히 수행하고 휴식을 취하며 아침 공부를 느지막하게 시작해 본다. 수학은 지금은 별로 하고 싶지 않아 수업을 들으며 새벽에 했던 공부를 마무리해 볼 것이다.


 

 

 

얼굴 탐지 실습 두 번째

 

 

이 코드는 numpy 라이브러리를 사용하여 크기가 480×640x3480×640×3인 검은색 배경 이미지를 생성하는 코드이다.

  • np.zeros((480, 640, 3)): numpy의 zeros 함수를 사용하여 모든 값이 0으로 채워진 배열을 생성한다.
    • (480, 640, 3): 배열의 형태(shape)를 지정하며, (480, 640)는 이미지의 높이와 너비, 3은 RGB 채널을 의미한다.
    • 0으로 채워져 있으므로 각 픽셀의 RGB 값이 (0, 0, 0)인 검은색 이미지가 생성된다.

따라서 해상도가 480 이고 검은색 배경을 가진 이미지를 생성하고, 이를 변수 img_bg에 저장하는 역할을 한다.


 

 

 

직사각형 공간 그리기

이제 칸을 그릴 건데 설정 항목을 잘 모른다면 img를 치고 기다리면 해당 매개변수가 나온다.

 

 

 

 

 

컴퓨터 비전에서는 x, y축이 반대이므로 y축부터 시작한다. 이런 식으로 영역을 그릴 것이다.

 

 

 

 

 

아래쪽에 초록색 직사각형이 그려졌다.

 

 

 

 

 

이번에는 오른쪽에 직사각형을 그려볼 것이다.

 

 

 

 

 

 

 

이렇게 하나는 속이 빈, 다른 하나는 속이 꽉 찬 직사각형이 만들어졌다. 하지만 인물의 얼굴을 탐지하는 코드는 아무리 해도 실행이 되지 않아 사진을 변경해 보았다.


 

 

 

 

얼굴 탐지 네모 그리기

 

 

 

조금 전에는 안 되었던 코드인데 사진을 변경한 후에는 잘 실행된다. 신기한 일이다. 아마도 이 코드는 사람의 얼굴만 탐지하는 것 같다. 그래서 강아지 사진을 가져온 내 경우에는 해당하지 않았다.


 

 

 

 

 

이 코드도 앞에서는 실행이 되지 않아 다른 코드로 변경했었다. 하지만 지금은 얼굴이 있는 위치를 잘 탐지하고 있다. 총 네 명의 아이들의 얼굴을 잘 탐지하고 있으며 정확도도 99% 이상이다.


 

 

 

 

 

 

 

 

 

 

 

이제 한 명의 얼굴의 네모 박스가 쳐졌다. 나머지 세 명의 얼굴에도 표시해 볼 텐데 하나씩 하려니 너무 귀찮다. 반복문으로 돌리면 편할 것 같다.


 

 

 

 

 

여러 가지를 묶을 때 zip을 사용하고 출력 화면을 보면 좌표값이 나온다.

 

 

 

 

for 문으로 두 가지의 값을 함께 출력해 볼 수 있다. 튜플로 함께 생성되어 출력되었다. 이것을 각각 출력되도록 바꾸어주겠다.

 

 


 

 

 

 

요소별로 각각 출력되었다. 이제 이 값을 for문으로 돌려볼 것이다.


 

 

 

 


 

 

 

 

학습을 마치고

오늘은 공부하기가 정말 버겁고 힘든 날이었다. 새벽에 몸이 좀 안 좋아서 잠시 쉬기도 했었는데, 그래도 다시 공부할 수 있는 몸과 마음이 허락되어서 감사하다. 엊그제 굉장히 마음이 힘들고 스트레스를 너무나 많이 받았는데 그 후로 몸에 독소가 쌓인 것 같다.

난 마음이 힘들면 언제나 몸이 아픈 걸 느낀다. 모든 일은 전화위복이 된다. 그러니 이 안 좋은 일을 통해서도 오히려 더 좋은 뜻이 있다고 여기기로 했다.

 

사람 얼굴을 객체 탐지하는 코드도 작성하며 이제 이 부분도 잘 이해했다. 실습이 조금 남았지만 너무 길어지기도 하고 여기서 마치기로 했다.