Skip to content

๐ŸŽญ Baekjongwon Mosaic:: Automate person mosaic except for a particular person

Notifications You must be signed in to change notification settings

wing-beat/UnknownMosaic

Repository files navigation

UnknownMosaicProcessing (๋ฐฑ์ข…์› ๋ชจ์ž์ดํฌ)

Team

  • ๊น€๋ฏผ์ง€(Minji Kim), ๊น€์„œ์›(Seowon Kim)

Project

์บก์ฒ˜

  • ๋ชฉ์  : ํŠน์ • ์ธ๋ฌผ์„ ์ œ์™ธํ•œ ์ธ๋ฌผ ๋ชจ์ž์ดํฌ ์ž๋™ํ™”
  • ๊ฐœ๋ฐœ ๋ฐฐ๊ฒฝ : SNS์—์„œ ํ™”์ œ๊ฐ€ ๋œ ๋ชจ์ž์ดํฌ ๋ฐฉ๋ฒ•์ธ <๋ฐฑ์ข…์› ๋ชจ์ž์ดํฌ>. ์˜์ƒ ์†์—์„œ ๋ฐฑ์ข…์› ์ฆ‰, ์ฃผ์š” ์ธ๋ฌผ์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์–ผ๊ตด์„ ํ•ด๋‹น์ธ๋ฌผ์˜ ์Šคํ‹ฐ์ปค๋กœ ๊ฐ€๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜์ƒ ํŽธ์ง‘์„ ํ•  ๋•Œ ์ด๋Ÿฐ ๋ชจ์ž์ดํฌ๋ฅผ ํ•˜๋ ค๋ฉด ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ์–ผ๊ตด ํ•˜๋‚˜ํ•˜๋‚˜ ์ขŒํ‘œ๋ฅผ ์ฐ์œผ๋ฉฐ ํŽธ์ง‘ํ•ด์•ผํ•ด์„œ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๋”ฐ๋ผ์„œ ํŽธ์ง‘์ž๋“ค์˜ ๋…ธ๋™ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ฌผ๋ก , ๋ˆ„๊ตฌ๋‚˜ ์†์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์„ผ์Šค์žˆ๋Š” ๋ชจ์ž์ดํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ทจ์ง€๋กœ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ๋ชฉํ‘œ
    • ๋‰ด์Šค ๋˜๋Š” ์œ ํŠœ๋ธŒ์—์„œ ์ผ๋ฐ˜์ธ ๋ชจ์ž์ดํฌ ์ฒ˜๋ฆฌ๋ฅผ ์ž๋™ํ™” ํ•˜์—ฌ ์˜์ƒ ํŽธ์ง‘ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚จ๋‹ค
    • ์˜์ƒ์— ์˜๋„์น˜ ์•Š๊ฒŒ ์ถœ์—ฐํ•œ ์ผ๋ฐ˜์ธ๋“ค์„ ์ž๋™ ๋ชจ์ž์ดํฌ ์ฒ˜๋ฆฌ ํ•˜์—ฌ ์ดˆ์ƒ๊ถŒ ์นจํ•ด๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค

Demo

๋ชจ์ž์ดํฌ1

  • ํŠน์ • ์ธ๋ฌผ(minji)์˜ ์–ผ๊ตด์„ ํ•™์Šต์‹œํ‚จ ํ›„ face recognition์„ ํ†ตํ•ด ํ•ด๋‹น ์ธ๋ฌผ์„ ์ œ์™ธํ•œ unknown์„ ๋ชจ์ž์ดํฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ์™ผ์ชฝ์€ ์ผ๋ฐ˜ ๋ชจ์ž์ดํฌ, ์˜ค๋ฅธ์ชฝ์€ ์Šคํ‹ฐ์ปค ๋ชจ์ž์ดํฌ์ด๋‹ค.

๋ชจ์ž์ดํฌ2

  • ์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ํŠน์ • ์ธ๋ฌผ(seowon)์˜ ์–ผ๊ตด์„ ํ•™์Šต์‹œํ‚จ ํ›„ ํ”„๋กœ์„ธ์‹ฑํ•ด ์ถ”์ถœํ•œ ์ด๋ฏธ์ง€์ด๋‹ค.

๊ฐœ๋ฐœ ๋„๊ตฌ

  • Anaconda
  • Python
  • Google colab
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ : OpenCV, Tensorflow, FFmpeg, FaceRecognition, pickle

๊ตฌ์กฐ

structure

๊ฐ€์ƒํ™˜๊ฒฝ ์„ธํŒ…

  1. ์•„๋‚˜์ฝ˜๋‹ค ํ”„๋กฌํ”„ํŠธ or CMD ์‹คํ–‰
  2. (pip ํŒจํ‚ค์ง€ ์—…๊ทธ๋ ˆ์ด๋“œ)
    conda upgrade pip
    pip install upgrade
  3. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒˆ๋กœ ์„ค์น˜
    conda create -n (env) python=3.7 activate (env)
  4. tensorflow ์„ค์น˜
    pip install tensorflow==2.0
  5. ๋ฒ„์ „ ํ™•์ธ
    python import tensorflow as tf tf.__version__
  6. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
    pip install numpy matplotlib pillow opencv-python

https://github.com/opencv/opencv/tree/master/samples/dnn/face_detector

์‹คํ–‰

  1. PretrainedModel ํด๋” ๋‹ค์šด๋กœ๋“œ

  2. Build_Dataset_CaffeCNN.py๋กœ dataset ์ƒ์„ฑ (webcam)

    python build_dataset_CaffeCNN.py --output dataset/swkim/

    output๊ฒฝ๋กœ์— ํŠน์ • ์ธ๋ฌผ์˜ ์ด๋ฆ„์œผ๋กœ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ๋‘๊ณ  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
    ์„ค์ •ํ•ด๋‘” ํšŸ์ˆ˜์— ๋„๋‹ฌํ•˜๋ฉด ์ž๋™ ์ข…๋ฃŒ๋œ๋‹ค.

  3. encode_faces.py๋กœ pickle ํŒŒ์ผ ์ƒ์„ฑ

    python encode_faces.py --dataset dataset --encodings encodings.pickle

    dataset์˜ ๊ฒฝ๋กœ์™€ encodings์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.
    ์ด๋ฏธ์ง€๋ฅผ BGR์—์„œ RGB๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์–ผ๊ตด์— ํ•ด๋‹นํ•˜๋Š” ์˜์—ญ์˜ ์ขŒํ‘œ๋ฅผ ๊ฐ์ง€ํ•œ๋‹ค.
    face_encodings ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์–ผ๊ตด ์˜์—ญ์„ 128 ํฌ๊ธฐ์˜ vector๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    ๋ชจ๋“  ์–ผ๊ตด์ด ๋ณ€ํ™˜๋˜์–ด encodings ๋ณ€์ˆ˜์— ๋‹ด๊ธฐ๊ฒŒ ๋˜๊ณ , pickle ํŒŒ์ผ์ด ์™„์„ฑ๋œ๋‹ค.

  4. stickers ํด๋”์— ์Šคํ‹ฐ์ปค ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ƒ์„ฑ

  5. 1) Image Processing

    python recognize_faces_image.py --encodings encodings.pickle --image testset/test.jpg --method overlay --sticker stickers/mj.png

    pickle ํŒŒ์ผ ๊ฒฝ๋กœ, test image ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ , method๋กœ mosaic(์ผ๋ฐ˜ ๋ชจ์ž์ดํฌ), overlay(์Šคํ‹ฐ์ปค)๋ฅผ ์ง€์ •ํ•œ๋‹ค.
    method๋ฅผ overlay๋กœ ์„ค์ •ํ•˜๋ฉด sticker ๊ฒฝ๋กœ๋„ ์ง€์ •ํ•ด์ค€๋‹ค.

    2) Video Processing

    python unknown_processing_video.py --encodings encodings.pickle --input videos/video.mp4
    python unknown_processing_video.py --encodings encodings.pickle --input videos/video.mp4 --method overlay --sticker stickers/osw.png

    3) WebCam Processing

    python recognize_faces_video.py --encodings encodings.pickle
    python recognize_faces_video.py --encodings encodings.pickle --output output/jurassic_park_trailer_output.avi --display 0 --method overlay --sticker overlay_stickers/sticker.png

About

๐ŸŽญ Baekjongwon Mosaic:: Automate person mosaic except for a particular person

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages