블랙박스 | ||||
---|---|---|---|---|
🙈 김기용 |
🐒 김성수 |
🙉 김주엽 |
🙊 이 구 |
🐵 이태희 |
- 김기용_T4020: Cartoonize 모델 조사, 실험 결과 분석
- 김성수_T4039: Object Tracking 모델 조사, Modeling, 알고리즘 개발
- 김주엽_T4048: Model Serving
- 이 구_T4145: Cartoonize 모델 조사, Modeling, 알고리즘 개발
- 이태희_T4172: Object Tracking 모델 조사, Modeling, 코드 오류 분석 및 수정
|
|
- TV 프로그램 혹은 유튜브를 보다보면, 메인 출연자가 아닌 이들의 얼굴을 모자이크 된 것을 쉽게 찾아볼 수 있다. 하지만 이러한 모자이크 기법은 얼굴의 특징을 지워버리기 때문에 인물의 얼굴 표정, 눈빛, 시선과 같은 정보를 잃게 된다.
|
|
- 위의 사진들은 '백종원의 쿠킹로그'라는 유튜브 채널에서 가져온 것으로, 일반인의 표정과 대응되는 백종원의 사진으로 대체함으로써 그들의 반응을 효과적으로 파악할 수 있도록 하였다.
- 하지만, 이러한 방식은 편집자가 직접 해당 프레임의 얼굴을 찾아 바꿔주어야 하기 때문에 상당한 비용(시간, 노력 등)이 발생한다.
- 이에 우리는 기존의 모자이크를 대체하여 사람을 특정할 수 있을 정도로 얼굴을 노출시키지 않는 동시에 얼굴 표정, 시선, 눈빛과 같은 정보는 보존할 수 있는 새로운 방식,
CAFE(CArtoonize For Extra faces)
를 제안한다.
- Ubuntu 18.04.5 LTS
- Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz
- NVIDIA Tesla V100-SXM2-32GB (used up to 8GB at our test)
- CUDA 11.0
- Tensorflow 1.12.0
- PyTorch 1.12.1
- opencv-python 4.2.0.34
- Detection: YOLOv7
- Tracking: BoT-SORT
- Cartoonize : White-box-Cartoonization
- Backend: FastAPI
- Frontend: Streamlit
|
전체적인 Data Flow는 아래와 같다.
- User로부터 영상과 영상의 주인공(target) 사진을 입력받는다.
- 영상에 face detection & tracking, cartoonize를 적용한다.
2-1. 영상에 대한 face detection, tracking을 통하여 모든 등장인물의 얼굴 정보를 얻는다.
2-2. 영상의 모든 프레임에 대한 cartoonize를 진행한다.- 주인공 사진과 영상에 등장하는 인물들의 사진에 대한 feature를 뽑아낸 후, cosine similarity를 계산하여 target과 target이 아닌 얼굴들을 구분한다.
- target이 아닌 얼굴들에 대한 정보(from 2-1)를 이용하여, 모든 프레임의 얼굴을 swap 한다.
|
전체적인 Service Flow는 아래와 같다.
- Streamlit을 통해 user와 interaction하며, 주인공 이미지와 영상을 입력받고, 결과물을 다운받을 수 있다.
- Streamlit을 통해 입력받은 이미지와 영상은 local file storage에 저장되며, FastAPI를 통해 Detection & Tracking, Cartoonize 연산을 요청한다.
- Detection & Tracking은 PyTorch 환경에서 실행되고, Cartoonize는 Tensorflow 환경에서 실행된다. 이 과정은 병렬적으로 진행되며, Tracking 결과는 MongoDB에 저장된다.
- 위의 과정이 끝난 이후, backend에서 MongoDB에 저장된 tracking 정보를 사용하여 face swapping 과정을 수행한다.
- Streamlit을 통해 user가 최종 결과물의 재생 및 저장이 가능하다.
- To use any form of function we provide, the following process must be followed.
# Clone our repository
git clone https://github.com/boostcampaitech4lv23cv1/final-project-level3-cv-07
# Move to our dir
cd final-project-level3-cv-07
# Setup for each virtual environment (for frontend, backend, detection & tracking, cartoonize)
bash init.sh
- Then, follow instruction in Dataset section
- You can run CAFE with web demo. Just follow the instruction below.
# Open frontend/app.py and update backend ip address in line 14
vim frontend/app.py
"""
fix below line
backend = "http://115.85.182.51:30002" -> backend = "http://{your_own_ip_address}:30002"
"""
# Start all process required for starting demo page
bash start.sh
# Now, you can access demo page at "http://{your_own_ip_address}:30001"}
-
Unfortunately, we haven't checked the file path yet. Do it yourself if you need to.
-
You can also run CAFE without web demo. Just run the python file in the order below.
- Run cartoonize function (models/cartoonize/Cartoonize.py)
cd final-project-level3-cv-07/models/cartoonize
python Cartoonize.py
- Run tracking, face swapping and save result (models/track/mc_demo_yolov7.py)
cd final-project-level3-cv-07/models/track
python tools/mc_demo_yolov7.py
Trained with WiderFace, [pretrained weights]
Download the pre-trained weights and place them in the path below.
./final-project-level3-cv-07/models/track/pretrained
Trained with private dataset. Scenery images are collected from Shinkai Makoto, Miyazaki Hayao and Hosoda Mamoru films. Portrait images are from Kyoto animations and PA Works). [pretrained weights]
Download the pre-trained weights and place them in the path below. (maybe, already exist)
./final-project-level3-cv-07/models/cartoonize/saved_models
- 첫 번째 결과의 tracking result를 보면 배경 및 의상에서도 얼굴이 인식되는 것을 확인할 수 있다. CAFE는 confidence thresholding을 통해 이러한 상황에서도 강인하게 동작한다.
- 두 번째, 세 번째 결과를 보면 화면 전환에 의해 동인 인물에 대한 여러개의 tracklet이 생성되지만, 우리가 제안한 two-step similarity check 과정을 통해 성공적으로 target과 extra를 구분해내는 것을 확인할 수 있다.
target
|
tracking result
|
CAFE result
|
|
|
|
|
|
|
|
|
|
- https://www.youtube.com/watch?v=SP-LJqVgQuw&t=163s
- https://www.youtube.com/watch?v=GmAwsAB7nhw
- https://www.youtube.com/watch?v=tL20swtWOqI
|
[Wrap-up Report] [Slides] [Presentation]
- C.-Y. Wang, A. Bochkovskiy, H.-Y. M. Liao, Yolov7: Trainable bag- of-freebies sets new state-of-the-art for real-time object detectors, arXiv preprint arXiv:2207.02696.
- N. Aharon, R. Orfaig, B.-Z. Bobrovsky, Bot-sort: Robust associations multi-pedestrian tracking, arXiv preprint arXiv:2206.14651.
- X. Wang, J. Yu, Learning to cartoonize using white-box cartoon represen- tations, in: Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, 2020, pp. 8090–8099.
A large part of the code are borrowed from YOLOv7 with wider face dataset, BoT-SORT, White-box-Cartoonization. Thanks for their excellent work and sharing.