실용화 최적화 • 연구 범위 (본인 또는 연구실의 관심 분야) • 정량적 성능 (선정한 Ground Truth를 기준으로 한 성능) • 다양한 제약/제한 사항 (데이터셋의 규모, 적은 참여자, 실행 환경 등) • 기술의 유용성 (탑재할 가치가 있는가?) • 굉장히 넓어지는 사용층 (실용적인 데이터셋, 설득력 있는 UI/UX) • 가용성을 고려한 서비스 (예: 수만 명이 문제없이 사용할 수 있는가?)
데이터 데이터 수집 앱 • GUI 어플리케이션 • 모바일 or PC 영상감정인식 서버 • 웹 API 서버 • 안면기반 감정인식 결과 전달 영상/음성 데이터 • JSON 감정인식 결과 음성감정인식 서버 • 웹 API 서버 • 음성기반 감정인식 결과 전달 • REST API 음성 데이터 • JSON 음성인식 결과 데이터 수집 장치 • 임베디드 혹은 PC 환경 • 음성, 영상 정보 취득
데이터 영상/음성 데이터 • JSON 감정인식 결과 • REST API 음성 데이터 • JSON 음성인식 결과 OpenCV NAudio, OpenAL PC: WPF Mobile: Android Pytorch + Flask, FastAPI ONNX + ASP.NET Core
var httpClient = new HttpClient(); var form = new MultipartFormDataContent(); byte[] fileData; using (Stream s = new FileStream (currentRecordFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { fileData = new byte[s.Length]; s.Read(fileData, 0, (int)s.Length); } var byteContent = new ByteArrayContent(fileData); byteContent.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data"); form.Add(byteContent, "file", Path.GetFileName(filePath)); string timestamp = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss-fff", CultureInfo.InvariantCulture); var responseStr = httpClient.PostAsync($"{config.ser_endpoint}/{timestamp}", form). ConfigureAwait(false).GetAwaiter().GetResult().Content.ReadAsStringAsync().Result; return JsonSerializer.Deserialize<SERResult>(responseStr); }