영상 속 얼굴 블러 서비스 만들기: 초등학생도 따라하는 A-Z 가이드

1. 준비물

  • AWS Lightsail에서 제일 저렴한 서버(512MB RAM, Amazon Linux 2023)
  • 컴퓨터와 인터넷
  • 동영상 파일 (테스트용)

2. 서버 만들기

  1. AWS Lightsail 홈페이지에 들어가서 회원가입 또는 로그인해요.
  2. 인스턴스 생성 버튼을 눌러요.
  3. OS는 “Amazon Linux 2023″을 선택해요.
  4. 플랜은 제일 저렴한 512MB RAM짜리를 골라요.
  5. 생성 버튼을 눌러 서버가 만들어질 때까지 기다려요.

3. 서버에 접속하기

  1. Lightsail 관리 화면에서 SSH 연결 버튼을 눌러요.
  2. 까만 창(터미널)이 뜨면, 아래 명령어를 한 줄씩 복사해서 붙여넣어요.

4. 프로그램 설치하기

4-1. 시스템 업데이트

Bash
sudo dnf update -y

4-2. 필요한 프로그램 설치

Bash
sudo dnf install -y python3-pip gcc gcc-c++ cmake git
pip3 install numpy flask

4-3. OpenCV 설치(얼굴 찾기용)

  1. 메모리가 부족할 수 있으니 swap 파일을 만들어요:
Bash
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
  1. OpenCV 소스코드 다운로드하고 설치해요: (cd ~ 로 홈 디렉토리로 가서 하자)
Bash
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build
cmake ..
make -j2
sudo make installcd ~/opencv/build
make -j2
sudo make install

-> 계속 서버 뻗음

5. 얼굴 블러 프로그램 만들기

5-1. 얼굴 블러 코드 저장하기

  1. 아래 코드를 복사해서 face_blur.py라는 이름으로 저장해요.
Python
import cv2

def blur_faces(input_path, output_path):
    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    cap = cv2.VideoCapture(input_path)
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    fps = cap.get(cv2.CAP_PROP_FPS)
    w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    out = cv2.VideoWriter(output_path, fourcc, fps, (w, h))
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        faces = face_cascade.detectMultiScale(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), 1.3, 5)
        for (x, y, w, h) in faces:
            frame[y:y+h, x:x+w] = cv2.GaussianBlur(frame[y:y+h, x:x+w], (15, 15), 0)
        out.write(frame)
        del frame
    cap.release()
    out.release()

5-2. 동영상 파일로 테스트하기

  1. 동영상 파일을 서버에 올려요(예: input.mp4).
  2. 아래 명령어로 얼굴 블러 처리해요.
Bash
python3

(파이썬 창이 뜨면 아래처럼 입력)

Python
from face_blur import blur_faces
blur_faces('input.mp4', 'output.mp4')
exit()
  1. output.mp4 파일이 생기면 성공!

6. 웹사이트로 만들기

6-1. 웹 서버 코드 저장하기

  1. 아래 코드를 app.py로 저장해요.
Python
from flask import Flask, request, send_file
from face_blur import blur_faces

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    f = request.files['file']
    f.save('input.mp4')
    blur_faces('input.mp4', 'output.mp4')
    return send_file('output.mp4')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

6-2. 웹 서버 실행하기

Bash
python3 app.py

6-3. 웹사이트에 접속해서 동영상 올리기

  1. 서버의 공인 IP주소를 확인해요.
  2. 인터넷 브라우저에서 http://서버IP:5000/upload로 접속해요.
  3. 동영상 파일을 업로드하면, 얼굴이 블러 처리된 동영상을 받을 수 있어요.

7. OOM(메모리 부족) 방지 꿀팁

  • 한 번에 한 명만 사용하게 해요(동시에 여러 명이 쓰면 안 돼요).
  • 너무 큰 동영상은 올리지 않게 안내해요.
  • swap 파일을 꼭 만들어서 메모리 부족을 막아요.
  • 동영상은 한 프레임씩만 처리해서 메모리를 아껴요.

8. 체크리스트

단계할 일체크
1서버 만들고 접속하기
2프로그램 설치하기
3OpenCV 설치하기
4얼굴 블러 코드 저장하기
5동영상 테스트 해보기
6웹 서버 코드 저장하기
7웹사이트로 동영상 올리기

이대로 따라하면 초등학생도 얼굴 블러 서비스를 만들 수 있어요!
궁금한 점이 있으면 언제든 질문해 주세요.


게시됨

카테고리

작성자

태그: