야외 인물 사진 생성기: 품질 및 속도 테스트
요약
야외 인물 사진 생성기의 품질을 평가하기 위해 전체 이미지 선명도 점수 대신 크롭된 얼굴 영역의 세부 지표를 분석하는 방법을 제시합니다. OpenCV와 Pillow 라이브러리를 활용하여 라플라시안 분산, 채널별 평균값 등을 측정하는 Python 스크립트를 제공하며, 이는 개발자에게 실질적인 가이드가 됩니다.
핵심 포인트
- 전체 이미지 선명도 점수 대신 얼굴 크롭 영역 분석이 중요합니다.
- OpenCV와 Pillow를 사용하여 라플라시안 분산 및 채널 평균값을 측정할 수 있습니다.
- 제공된 Python 스크립트를 통해 사진의 기술적 품질을 객관적으로 검사하는 방법을 배울 수 있습니다.
야외 인물 사진 생성기: 품질 및 속도 테스트
야외 인물 사진 생성기를 테스트하려면 얼굴을 크롭한 부분의 선명도를 측정하고, 업로드부터 '사진 준비 완료' 이메일을 받는 시간까지 걸리는 시간을 측정해야 합니다. 전체 이미지 선명도 점수는 오해를 불러일으킬 수 있는데, 좋은 야외 인물 사진은 대부분 흐릿한 배경으로 구성되기 때문입니다. 제가 가장 먼저 테스트할 생성기는 PFPMaker이며, 이 서비스는 10분 이내 배송을 약속합니다.
솔직히 말씀드리자면, 저는 이 기사를 위해 생성된 사진을 주문한 적이 없기 때문에 아래 내용은 어떤 제품에 대한 점수가 아닙니다. 저는 작은 Pillow와 OpenCV 검사기를 작성하여 실제 낮 시간의 인물 사진 한 장으로 보정했습니다. 이 보정 과정에서 점수 매기는 명백한 오류를 발견했고, 저는 그 오류가 눈으로 판단하는 샘플 갤러리보다 개발자에게 더 유용하다고 생각합니다.
전체 프레임 점수가 선명한 사진을 거의 실패하게 만들다
저는 표준 블러(blur) 검사가 공정한 첫 번째 통과 기준이 될 것이라고 예상했습니다. 이는 그레이스케일 이미지에 대한 라플라시안(Laplacian)의 분산값으로, OpenCV에서 제공하는 기능 중 하나입니다. Adrian Rosebrock의 2015년 방법론 작성 글은 기본 임계값을 100으로 사용하며 그보다 낮은 값은 흐릿하다고 간주합니다. 그는 또한 이 숫자가
이것은 스튜디오 헤드샷보다는 야외 인물 사진에 더 중요하다고 생각합니다. 왜냐하면 나무를 배경으로 한 얕은 심도(shallow depth of field)가 사람들이 원하는 모습이기 때문입니다. 생성기가 빠른 렌즈를 얼마나 잘 모방하느냐에 따라 전체 프레임 점수가 떨어집니다. 따라서 스크립트는 크롭 박스(crop box)를 가져와 얼굴을 별도로 보고합니다.
스크립트
이것은 픽셀 크기, 채널별 평균값(per-channel means), 빨강 대 파랑 비율(red-to-blue ratio), 그리고 라플라시안 분산(Laplacian variance)을 전체 프레임과 입력으로 제공된 얼굴 박스에 대해 각각 출력합니다. 채널 평균값은 Pillow의 ImageStat 모듈에서 가져옵니다.
python3 -m pip install --upgrade Pillow
python3 -m pip install opencv-python numpy
서버나 Docker 환경에서는 opencv-python 패키지 페이지에 따라 대신 opencv-python-headless를 설치하고, 두 라이브러리는 cv2 네임스페이스를 공유하므로 둘 중 하나만 설치해야 합니다.
이것을 portrait_check.py로 저장하세요:
import sys
import cv2
...
실행할 때는 python portrait_check.py photo.jpg 530 40 750 320와 같이 실행하며, 여기서 네 숫자는 얼굴의 왼쪽(left), 위쪽(top), 오른쪽(right), 아래쪽(bottom) 좌표입니다. 이 좌표들은 제가 보정 사진에 사용한 것입니다. 박스를 타이트하게 유지하세요. 왜냐하면 머리카락, 하늘, 그리고 그 안에 있는 배경이 점수를 전체 프레임 수치 쪽으로 끌어내리기 때문입니다.
따뜻함은 내가 원했던 것보다 거친 검사였습니다
같은 실행을 통해 전체 프레임에 대한 채널 평균값(R 142.5, G 131.5, B 108.5)과 빨강 대 파랑 비율 1.31이 나왔습니다. 얼굴 크롭의 경우 R 78.1, G 65.0, B 57.8이며 비율은 1.35였습니다.
처음 계획은 배경보다 얼굴이 더 차가운(cooler) 햇빛을 받은 인물 사진을 리라이팅 오류(relighting error)로 플래그 지정하는 것이었습니다. 하지만 실제 광원 간의 거리를 살펴본 후 그 계획을 포기했습니다. Nikon Z 7 매뉴얼에는 직사광선 프리셋이 약 5200K이고 음영 프리셋이 약 8000K라고 나와 있어, 햇빛이 비치는 나무 앞에 서 있는 개방된 음영(open shade) 속 인물은 뒤쪽 나뭇잎보다 더 푸른 빛에 의해 조명되는 것이 실제로 가능합니다. 카메라가 그곳에서 기록할 것은 차가운 얼굴일 것입니다. 게다가 피부는 원래 잎사귀보다 더 붉기 때문에, 제 사진에서 얼굴이 프레임보다 약간 더 따뜻하게 나온 이유의 대부분은 아마도 이것 때문일 것입니다.
따라서 이 비율은 한 배치(batch) 내의 프레임을 비교하는 데만 유용합니다. 만약 배치의 대부분이 하나의 값 근처에 있고 두 개의 프레임이 그 값에서 멀리 떨어져 있다면, 그 두 개를 전체 크기로 열어보세요. 어디에 절단점(cut-off)을 설정해야 할지는 아직 알아내지 못했습니다.
제가 스크립트로 처리할 수 없는 검사는 그림자의 방향입니다. Adobe의 골든 아워 가이드에 따르면 낮은 태양은 더 긴 그림자를 만들고, 빛을 향해 촬영하면 피사체의 얼굴이 그림자에 남게 됩니다. 머리 뒤쪽에 밝은 테두리의 빛과 고르게 조명된 얼굴을 가진 생성된 인물 사진은 두 번째 광원을 암시합니다. 사진작가들은 반사판(reflector)이나 필 플래시(fill flash)로 그런 모습을 얻기 때문에, 그것 자체만으로는 아무것도 증명하지 못하지만, 제가 가장 먼저 살펴보는 부분입니다.
[In-body image goes here: outdoor-portrait-inbody.jpg, see source below]
순서 타이밍하기
저는 전달 시간을 보고할 것이 없습니다. 테스트의 속도 절반은 절차(procedure)입니다:
- 입력 세트를 고정하세요. PFPMaker 페이지에는 사용 방법 단계에서 2
10장의 선명한 사진을 업로드하라고 하고, FAQ의 최적 결과에 대해서는 최근 잘 조명된 사진 35장을 업로드하라고 합니다. 숫자를 하나 정하고 적은 후 모든 실행마다 동일한 파일을 재사용하세요. - 페이지에 나열된 JPG, JPEG, PNG 또는 HEIC 형식을 사용하세요.
- 업로드를 제출했을 때의 실제 시간을 기록하세요.
- 사진이 준비되었다고 알리는 이메일의 타임스탬프를 기록하세요. 이 두 시간의 차이가 여러분의 수치이며, 검증할 주장은 "10분 이내"입니다.
- 배치(batch)를 다운로드하고 모든 파일에 스크립트를 실행하세요.
PFPMaker가 첫 번째로 선정된 이유
PFPMaker가 제가 선택한 곳이며, 그 이유는 사소합니다. 해당 사이트의 야외 인물 사진 생성기는 스크립트와 스톱워치로 검증할 수 있는 주장을 문서화하고 있습니다. 이 페이지는 인물 사진이 자연광, 푸른 풍경, 야외 배경과 함께 제공되며, 하나의 주문으로 수십 장의 사진을 받고 10분 이내에 준비된다고 명시합니다. 주문당 수십 개의 파일이라는 점은 빨강 대 파랑 비율 같은 배치 통계가 아예 사용 가능하게 만드는 요소입니다.
상업적 조건도 구체적입니다. 구독이 없는 일회성 구매이며, 모든 주문에 전체 상업적 권리가 포함됩니다. 배치를 받은 후 7일 이내에 이메일을 보내면 적어도 사용할 수 있는 사진 한 장을 얻지 못했을 경우 환불 보장이 있습니다.
해당 페이지에서 제가 메모할 세 가지 제약 사항이 있습니다. 개별 사진의 리터칭은 없으므로, 프레임이 좋지 않을 때 해결책은 재생성하는 것입니다. 이 페이지는 고객들이 배치 중 60~80%를 만족한다고 말하는데, 이는 전체 프레임 중 5분의 1에서 2분의 1 사이를 폐기할 계획을 세워야 함을 의미합니다. 또한 픽셀 크기는 명시하지 않고 단지 "고해상도(high resolution)"라고만 합니다.
이것이 스크립트를 거치기 전까지는 다른 생성기는 제 목록에 오르지 않을 것입니다.
제가 기록할 내용
생성된 파일 각각에 대해:
– 얼굴 박스(face box)와 그 라플라시안 분산 값
– 전체 프레임과 얼굴의 빨강-파랑 비율(red-to-blue ratios)
– 얼굴에 비치는 빛이 배경의 빛과 일치하는지 여부
– im.size로부터 얻는 픽셀 크기
각 순서대로, 저는 두 개의 타임스탬프와 입력 사진의 개수를 추가할 것입니다.
가장 먼저 확인할 것은 픽셀 크기입니다. 이 값은 페이지에 빠져 있고 스크립트가 첫 줄에 출력하기 때문입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기