한 달 넘게 딥러닝 모델 만들기(변환?)에 전념했네요.
페이지 정보
![](https://cdn.damoang.net/data/member_image/go/google_8e460883.gif?1714428554)
본문
안녕하세요.
제주에서 앱 개발하는 리안입니다.
작년 말에 배경제거 카메라 (https://apps.apple.com/kr/app/id6737147536) 를 출시했는데요,
(유료앱이고, 아이폰 전용이라 스크린샷만보시면 됩니다 어떤 앱인지 설명을 위해...)
실시간으로 배경을 제거하다보니 퀄리티가 아쉽다는 피드백이 생각보다 많이 들어왔었습니다.
실시간으로는 속도가 안나와서 일단 촬영하고 나서 배경제거 퀄리티를 올리는 작업을 하고 있는데,
이게 성능이 별로였습니다 ㅠ (마찬가지로 속도 이슈 때문)
암튼...
그래서 딥러닝 모델을 새로 만들기로 했습니다.
찾아보니 방법은 크게 2가지였습니다.
1) 이미지에서 퀄리티를 높여서 처음부터 마스크를 추출하거나,
또는 2) 배경제거한 결과 (마스크 이미지)와 원본 이미지를 입력으로 해서 마스크 이미지를 퀄업 시키는 방향.
일단은 이런저런 이슈 때문에 기존 방법에 2를 적용하기로 했습니다.
2의 방법은 이미 공개된 모델을 iOS 에서 쓸 수 있게 레이어 조정 및 최적화를 해서 생각보다 작은 용량으로 결과를 만들 수 있었습니다.
간단하게 레이어 조정 하고, 최적화 작업을 하는데 약 2주가 넘게 걸렸네요.
지금은 앱에 이걸 어떻게 적용할지 UX 고민을 하고 있습니다. (아마 다음 달 중에 업데이트 예정)
그리고 1)의 경우가 결과 자체가 더 좋은데, 아이폰 15 프로에서도 시간이 너무 오래걸리고, 메모리도 많이 먹어서 쓰기가 힘들더라구요.
그래서 1)을 직접 개선한 모델을 만들고, 학습시키고 있습니다. (해상도를 낮추고, 백본을 더 가벼운걸로 교체해서 만들었습니다.)
딥러닝은 이론밖에 모르는 상태에서 chatgpt 도움 받아서 웹상의 이런저런 모델, 메뉴얼들 살펴봐가면서 공부를 했네요.
공개된 데이터셋을 몇 가지를 합쳐서 학습 데이터셋을 만들고, 제일 간단한 모델에서부터 딥러닝 모델 학습 중입니다.
제 노트북이 M1 Pro 16GB 인데, 512 해상도로 학습 시키는데 1 epoch 에 약 45분이 걸리고, 쓸만한 상태로 만들려면 약 40 epoch ~ 120 epoch 가 필요해서 쉬지 않고 학습 시켜도 며칠이 걸리네요.
1024 해상도는 학습이 불가능한 정도라... 512 해상도로 학습 시켜서 그 결과물을 보고 Colab 결제하거나 다른 온라인 서비스를 이용해 학습해볼 예정이네요.
암튼... 이번에 공개된 딥러닝 모델들을 iOS에서 쓸 수 있게 더 가볍게 모델들을 튜닝하고, 학습데이터 모으고, 학습시키고, 이를 CoreML 로 변환하고, 결과물을 최적화 하는 작업들을 한 달 넘게 진행하면서 많이 배웠네요;; 다음에 어떤 앱을 만들 때 온디바이스 모델이 필요하면 더 빠르게 만들 수 있을거 같네요 ㅎㅎ
마무리로 튜닝 결과물 올려봅니다.
아래 2개가 튜닝 결과물이고, 위가 이전 상태네요. (좌상단은 촬영 직후, 우상단은 기존 결과 개선 상태)
즐거운 설 보내세요.
감사합니다.
리코리안님의 댓글의 댓글
감사합니다.
챠비님의 댓글