[iOS][rPPG]스마트폰 카메라로 심박수 측정하기
·
iOS 🍎 Swift
웨어러블 없이도 심박을 측정할 수 있는 방법 중 하나로 rPPG(remote photoplethysmography)가 있다.카메라로 피부의 미세한 색 변화를 읽고, 그 변화에서 심박 주기를 추정하는 방식이다. 이번에는 iPhone 카메라만으로 손가락과 얼굴에서 심박 신호를 추출하는 기능을 구현해봤다.이 글은 구현 과정에서 정리한 원리와 시행착오에 대한 기록이다 ! 두 가지 측정 방식구현은 두 가지 모드로 나누어 진행했다. 모드방식특징손가락후면 카메라 + 플래시신호가 비교적 크고 안정적얼굴전면 카메라비접촉 측정이 가능하지만 노이즈가 많음두 방식은 같은 rPPG 원리를 사용하지만, 실제 구현 난이도는 꽤 달랐다. 손가락 모드는 카메라 렌즈에 손가락을 가까이 대고 플래시를 사용하기 때문에 광원과 ROI가 ..
[iOS] 온디바이스 RAG 기반 PDF 챗봇 구현하기 (Embedding + SLM)
·
iOS 🍎 Swift
최근 다양한 서비스에서 문서 기반 질문 응답 시스템이 활용되고 있다. 예를 들면 다음과 같은 기능이다.💬 회사 내부 문서를 기반으로 질문 응답🤖 매뉴얼 문서를 기반으로 고객 지원 챗봇🔍 연구 문서를 기반으로 정보 검색이러한 시스템은 일반적으로 서버 기반 LLM을 사용해 구현된다. 하지만 최근에는 온디바이스에서 실행 가능한 Small Language Model(SLM)을 활용하여 문서 기반 QA 시스템을 구현하는 것도 가능해졌다. 특히 다음과 같은 상황에서는 온디바이스 방식이 유리하다.내부 문서를 외부 서버로 전송할 수 없는 경우네트워크 연결 없이 동작해야 하는 경우서버 비용을 최소화해야 하는 경우 이번 글에서는 PDF 문서를 기반으로 질문에 답변하는 Grounded QA 시스템을 온디바이스 환경에서..
UIBackgroundModes Capability 추가하기
·
iOS 🍎 Swift
발단이너그림 프로젝트 진행 중 Firebase push notification을 테스트할 일이 생겼다. 푸시 알림을 위해서는 Xcode에서 설정이 몇 가지 필요한데 아래와 같다. (Sign in with Apple은 애플 로그인 기능 때문에 추가한 것입니당 푸시 알림과 무관하여요)1. Background Modes - Remote notifications 2. Push Notifications Xcode의 [Target] - [Signing&Capabilities] 탭에서 직접 설정해도 되지만 이너그림에서는 Tuist를 통해 프로젝트 파일을 생성하므로 entitlements 파일을 통해 설정해야 한다. 전개그럼 여기서 entitlements 파일이란? entitlements 파일은 앱의 특별한 권한(ca..
UITextField의 텍스트 변경 감지
·
iOS 🍎 Swift
💬 문제 상황아래 코드에서는 사용자 입력에 의해 텍스트 필드의 값이 변경될 때만 감지할 수 있다. 즉, 외부에서 textField.text = “지연”처럼 텍스트 필드의 값을 직접 변경할 경우 이를 감지하지 못한다.textField.addTarget( self, action: #selector(handleTextFieldEditingChanged), for: .editingChanged) 💛✨ 해결 방법Combine을 활용해서 아래와 같이 (1)외부에서의 텍스트 변경과 (2)텍스트필드 입력으로 인한 변경 모두를 감지할 수 있는 Publisher 정의했다.extension UITextField { public var textDidChangePublisher: AnyPublisher..
Xcode 메모리 누수 체크하기
·
iOS 🍎 Swift
모든 프로그램에서 그러하듯 앱을 개발할 때에도 메모리 누수가 발생하고 있는지 확인하는 것은 참 중요한 과정이다. Swift는 ARC가 자동으로 메모리를 회수해주지만, 객체끼리의 강한 참조의 경우는 개발자가 직접 관리를 해주어야 하기 때문에 앱을 배포하기 전에 꼭꼭 확인하고 있다. 만약 내가 만든 앱에서 메모리 누수가 난다면 ? 제한된 리소스: 모바일 기기는 데스크톱 컴퓨터에 비해 상대적으로 제한된 메모리와 처리 능력을 가지고 있기 때문에 메모리 누수는 이러한 한정된 리소스를 빠르게 고갈시켜 앱의 전반적인 성능에 심각한 영향을 미칠 수 있다.사용자 경험: 메모리 누수로 인한 성능 저하는 앱의 반응 속도를 늦추거나 예기치 않은 종료를 유발할 수 있다. 이는 직접적으로 사용자 경험의 질을 떨어뜨리며, 결과적으..
noeyiz
무조건 잘 될 거란 마음