Introduction
저번글(python에서 Image matting을 이용한 누끼따기_1 (remove background, Image matting using python))에서는 Image matting을 이용해 배경으로부터 아바타를 분리하는 작업을 진행했다.
배경이 깔끔하거나 아바타의 외곽선이 명확한 경우에는 matting작업이 원활하게 진행 되었지만, 배경에 영상이 있거나 아바타 외곽선이 명확하지않은 경우에는 matting작업을 해도 배경까지 mask에 포함되는 경우가 많았다.
이러한 경우를 보완하기위해 matting작업대신 차라리 아바타의 위치를 찾는 segmentation 모델을 사용하는것이 좀 더 정확하게 아바타를 추출할 수 있는 방법일 것 같아서 시도해봤다.
Method
이번 semantic segmentation에 사용한 모델은 Mask R-CNN으로 SOTA 알고리즘은 아니지만 torch vision 라이브러리에서 기본적으로 제공하는 모델이기도 하고 범용적으로 사용되었던 모델이라 관련 자료가 많아 채택했다.
Google의 Deeplab v3도 이번 프로젝트에서 사용해봤지만 학습이 잘 되지 않아 포기했다.
Mask R-CNN은 사용해본 적이 있기 때문에 원래 가지고 있던 코드에서 데이터셋클래스만 변형해서 바로 학습을 진행했다.
Results
기존에 올렸던 반응영상에 전부 누끼를 적용해봤다.
누끼 추출에 영상 하나당 약 1.5~2시간이 소요된다.
2022-03-30 13:21:42.133976
r_cut_jingburger.mp4 start
0
1000
2000
3000
4000
5000
6000
7000
8000
9000
10000
11000
12000
13000
14000
15000
16000
17000
18000
19000
image to matte: 100%|█| 19278/19278 [29:53<00:00, 10.75it/s
2022-03-30 13:55:18.052793
100%|██████████████| 19278/19278 [1:17:58<00:00, 4.12it/s]
2022-03-30 15:13:20.585698
frame loading: 100%|█| 19278/19278 [00:46<00:00, 413.85it/s
mp4 making: 100%|███| 19278/19278 [00:42<00:00, 451.91it/s]
frame loading: 100%|█| 19278/19278 [01:10<00:00, 273.92it/s
mp4 making: 100%|███| 19278/19278 [00:48<00:00, 396.14it/s]
frame loading: 100%|█| 19278/19278 [00:49<00:00, 387.19it/s
mp4 making: 100%|███| 19278/19278 [00:37<00:00, 514.09it/s]
frame loading: 100%|█| 19278/19278 [01:18<00:00, 245.47it/s
mp4 making: 100%|███| 19278/19278 [00:43<00:00, 445.14it/s]
frame loading: 100%|█| 19278/19278 [01:17<00:00, 248.58it/s
mp4 making: 100%|███| 19278/19278 [00:44<00:00, 433.41it/s]
Conclusion & Discussion
기존 matting에서 문제가 되었던 주르르님 리본, 세구님 후드티는 거의(90%) 잘 포착하는것을 확인했는데, 릴파님 포니테일은 추출이 잘 안되는 문제가 아직도 있다.
이번에 학습한 mask rcnn 모델로 GT 데이터셋을 추가해서 추가 학습을 시키면 지금의 문제점을 어느정도 보완할 수 있을 것으로 보인다.
추가적으로 이 내용에 다룰 시간이 있다면 SOTA 알고리즘을 추가로 적용해보거나, edge를 추출하여 후보정을 적용해 볼 수 있을 것 같다.
코드는 모두 공개했으므로 데이터셋만 잘 준비하면 학습 및 추론까지 스스로 해볼 수 있다.
GitHub - wlsdml1114/isedol_segmentation
Contribute to wlsdml1114/isedol_segmentation development by creating an account on GitHub.
github.com
'인공지능 > Toy Projects' 카테고리의 다른 글
가수의 목소리 변경_1 (Singing Voice Conversion) (0) | 2022.05.09 |
---|---|
노래에서 목소리와 악기소리 분리_完 (music demixing using mdx-net & MUSDB18 dataset) (0) | 2022.04.14 |
현실의 춤을 가상공간으로 매핑하기_관 (using 3D human pose estimation) (0) | 2022.04.13 |
현실의 춤을 가상공간으로 매핑하기_1 (using 3D human pose estimation) (0) | 2022.04.06 |
python에서 Image matting을 이용한 누끼따기_1 (remove background, Image matting using python) (0) | 2022.03.28 |