[3주차] 당근 이미지 배경색 제거
Category: AI Core Projects
Tags: facedetection project
이번주 task는 지난 피드백을 반영하기 위해 당근 이미지 뒷 배경을 제거해서 투명하게 바꾸기
출력 결과
뒷배경을 제거했더니 훨씬 깔끔하게 입혀진다!
영상에서 마스크를 낀 상황에서도 잘 인식되는 것을 확인했다.
당근 png 이미지 뒷 배경 투명하게 제거하기
-
문제점
이미지를 불러와서 numpy 배열로 바꾸는 과정에서 뒷배경 값을 0으로 초기화한다. 즉, png 파일로 투명한 당근 이미지를 불러와도 결국 뒷배경이 검은색으로 채워지게 되는 것.
-
(노가다로) 해결한 방법
검은색이면 원본 영상을 가져오고, 검은색이 아닌 경우 당근 이미지를 가져오는 mask 필터 생성
detect.py 파일에서 수정한 코드
# 당근 이미지의 rgb값 합산
img_sum = img_r[:,:,0] + img_r[:,:,1] + img_r[:,:,2]
# rgb값이 0보다 크면 1, 0이면 0
mask = mask = np.where(img_sum > 0, 1, 0)
(w, h, ) = img_sum.shape
mask_rgb = np.zeros((w, h, 3), dtype=int)
mask_rgb[:,:,0] = mask
mask_rgb[:,:,1] = mask
mask_rgb[:,:,2] = mask
당근 이미지를 넣는 부분도 일부 수정
if save_img or view_img: # Add bbox to image
label = f'{names[int(cls)]} {conf:.2f}'
if opt.heads or opt.person:
if 'head' in label and opt.heads and count!= max_idx:
# plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3)
im0_crop = im0[res[0,1]:res[0,3], res[0,0]:res[0,2], :]
im0[res[0,1]:res[0,3], res[0,0]:res[0,2],:] = np.where(mask_rgb > 0, img_r, im0_crop)
피드백 및 문제점
한 줄 요약 : 영상이 너무 난잡하다
-
주인공(max-bbox) 대상이 계속 바뀐다 -> face recognition 팀에서 주인공 학습해서 반영
-
당근 이미지의 크기도 계속 왔다갔다 -> 프레임별 바운딩 박스 위치 차이를 계산해서 일정 범위 안에 들어오면 바꾸지 않도록 설정
-
사람의 뒷통수도 인식, 가끔 카메라도 인식
-> 뒷통수를 train하는 모델을 간단히 구현해서 적용해보기 (다음주 task)