TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 29 READS

필름 스캔 파이프라인을 AI로 자동화한 11일의 기록, 무엇이 통했나

필름 스캔 파이프라인을 AI로 자동화한 11일의 기록, 무엇이 통했나
SOURCE IMAGE · HACKER NEWS

아날로그 사진 작업에는 묘한 매력과 번거로움이 공존한다. 캐논 AE-1P 같은 필름 카메라로 36컷을 담고 나면, 현상소에 필름을 맡기고 기다렸다가 찾아오고, 네거티브를 잘라 홀더에 끼우고, 전용 스캐너로 한 컷씩 캡처한 뒤, 이미지 편집 도구에서 일일이 반전과 보정을 거쳐 저장·공유까지 해야 한다. 한 필름을 처리하는 데 평균 4시간. 먼지와 스크래치를 피하려면 섬세한 수작업이 필수다. 어느 순간 사진을 찍는 시간보다 처리하는 시간이 더 길어지자, 한 사진가는 자신의 '디지털 암실'을 자동화하기로 마음먹었다. 결과물은 11일, 커밋 64개 만에 완성된 파이프라인과 22롤·314장이 담긴 웹 갤러리였다.

전 과정을 맡기려다 장비를 부술 뻔한 교훈

첫 가설은 과감했다. 오픈소스 스캐너 드라이버 스택인 SANE를 통해 AI(Claude)가 스캐너를 직접 구동하고, 스캔부터 색 변환, 편집까지 사람 손을 완전히 빼는 것이었다. 하지만 첫 스캔에서 X/Y 스캔베드 방향이 뒤집힌 채 동작하면서 스캐너 내부 기어 메커니즘이 거의 망가질 뻔했다. 새 장비에 200달러를 쓰지 않으려고 급히 분해 수리를 해야 했다.

문제의 정체는 로그를 되짚으며 드러났다. 스캔 결과가 하얗게만 나온 것은 설정 탓이 아니라, 856개 행이 모두 동일한 램프 조명의 세로 밴드였기 때문이다. 즉 센서가 스캔 내내 아무것도 가리지 않은 같은 빛의 선만 본 것이다. 매 스캔이 끝날 때마다 genesys 백엔드는 캐리지가 전진했다고 가정하고 '맹목적 역방향 이동'(900dpi에서 7010스텝)으로 캐리지를 되돌리려 했는데, 이미 뒤로 주차된 캐리지를 끝단에 밀어붙이면서 '딸깍' 소리를 냈다. 일곱 번 스캔했으니 일곱 번 반복된 셈이다. 물리 장치를 자동화의 루프 안에 넣을 때, 소프트웨어의 전제와 하드웨어의 실제 상태가 어긋나면 돌이키기 어려운 손상이 난다는 점을 보여주는 사례다.

사람은 스캔, 기계는 그 이후

실패에서 나온 결론은 명확했다. 이미 잘 작동하는 것을 그대로 쓰자는 것. 스캐너 호환성이 가장 좋았던 상용 소프트웨어 VueScan으로 스캔은 직접 하고, 그 직후 단계부터 자동화가 넘겨받는 구조로 설계를 바꿨다. 로봇 팔로 필름 장착까지 자동화할 게 아니라면, 수작업과 자동화의 경계를 현실적으로 긋는 편이 나았다.

네거티브를 포지티브로 바꾸는 반전은 대부분 평범한 코드로 해결됐다. 필름 밀도 기준으로 동작하는 짧은 numpy 루틴이 롤 전체의 색을 측정한 뒤, 각 프레임을 네거티브의 한계 안에서 조정한다. 덕분에 36컷이 한 롤로서 일관성을 유지하고, 노을 사진이 과도하게 색보정되지 않는다. 특히 필름 선두의 빈 슬롯을 색보정 가중치의 기준으로 삼은 점이 수작업으로는 어렵던 부분을 해결했다. 실제 테스트에서 29컷 중 28컷이 통과했고, 편집 도구 없이도 쓸 만한 결과가 나왔다.

모델이 필요한 지점과 '검토 보류' 장치

코드로 안 되는 영역에서 비로소 모델이 투입됐다. 먼지 제거가 그렇다. 처음엔 해변 프레임에서 수면의 햇빛 반사 약 2,000개를 먼지로 오인했는데, 주변이 매끄러운 곳에서만 작동하도록 맥락을 부여해 해결했다. 찾아낸 반점은 인페인팅 모델 LaMa로 메우되 인근 필름의 디테일을 가져와 자연스럽게 복원한다. 포토샵 복구 도구와 비슷한 원리다. 모든 영역을 채우지는 않고, 거친 입자는 사용자 지정 임계값으로 검토 보류에 두어 개별 또는 일괄 승인·거부할 수 있게 했다. 자동화가 무리하게 전부를 처리하기보다 애매한 판단을 사람에게 되돌리는 설계는 실무적으로 참고할 만하다.

여기에 입자감을 감안한 노출·대비·색온도 조절 기능을 손닿는 곳에 두고, 스캔이 들어오면 로컬 Ollama에서 Qwen3-VL이 약 5초 만에 각 프레임을 보고 태그를 초안으로 단다. 카메라·렌즈·날짜·필름 종류 정보와 합쳐지면서 검색 가능한 라이브러리가 완성됐다. 저장은 늘 쓰던 4TB HDD에 두되, 공유를 위해 Cloudflare R2 버킷에 업로드하고 무료 플랜을 활용했다.

흥미로운 지점은 갤러리의 형태다. 썸네일 그리드는 저렴해 보인다는 이유로, 현상소 기술자가 필름을 풀어 C41 현상기에 거는 장면에서 착안해 3js로 펠트 테이블 위 필름 캐니스터를 구현했다. 각 캐니스터에는 실제 라벨 아트와 무작위 흠집이 들어가고, 집어 들어 필름을 당기면 프레임이 드러났다가 다시 테이블로 떨어진다. 사실적이진 않아도 재미를 좇은 연출이다.

이 프로젝트가 남기는 함의는 분명하다. 창작 워크플로를 자동화할 때 핵심은 '전부 맡기기'가 아니라, 번거롭지만 가치 없는 후처리는 기계에 넘기고 사람이 즐기는 영역은 남겨두는 경계 설정이다. 작성자 스스로도 촬영과 탐험이라는 수작업의 즐거움은 위임하고 싶지 않다고 말한다. 자동화의 목적이 결국 더 많은 셔터를 누르기 위한 시간 확보였다는 점은, 효율화를 고민하는 모든 실무자에게 되새길 만한 전제다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://shannadige.com/blog/darkroom/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...