[3주차] 당근 이미지 배경색 제거

Update:     Updated:

Category:

Tags:


이번주 task는 지난 피드백을 반영하기 위해 당근 이미지 뒷 배경을 제거해서 투명하게 바꾸기


출력 결과

뒷배경을 제거했더니 훨씬 깔끔하게 입혀진다!

image

영상에서 마스크를 낀 상황에서도 잘 인식되는 것을 확인했다.

image


당근 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 팀에서 주인공 학습해서 반영

  • 당근 이미지의 크기도 계속 왔다갔다 -> 프레임별 바운딩 박스 위치 차이를 계산해서 일정 범위 안에 들어오면 바꾸지 않도록 설정

  • 사람의 뒷통수도 인식, 가끔 카메라도 인식

    image

    -> 뒷통수를 train하는 모델을 간단히 구현해서 적용해보기 (다음주 task)



맨 위로 이동하기