# 런타임

런타임은 추론만 가능하며, 이는 도구가 이미지를 처리할 수는 있지만 도구를 수정하거나 다시 트레이닝할 수는 없다는 뜻입니다. 도구의 처리는 배포된 프로덕션 환경에서 ViDi 도구를 실행하기 위해 필요한 최소한의 기능입니다.

장점 | 단점
--- | ---
통합이 용이함 | 도구를 다시 트레이닝하려면 실행 중인 ViDi Suite 라이센스가 필요함
매개변수가 동결되며, 응용 프로그램 운영자는 도구를 수정할 수 없음 | 복잡한 아키텍처

런타임 배포가 적합한 영역은 다음과 같습니다.

- 응용 프로그램 운영자가 도구를 다시 트레이닝할 필요가 없는 경우.
- 응용 프로그램의 레서피에 대한 강력한 통제가 보장된 영역(예: 의료 및 약 관련 응용 프로그램).
- 도구 처리가 낮은 계산력 또는 내장 플랫폼에서 처리되고 트레이닝은 다른 플랫폼에서 실행된 응용 프로그램.
- 다수 라인이 동일 응용 프로그램 레서피를 이용할 경우.
- 시연, 시장에 빨리 나가야 하는 솔루션, 개념 증명 응용 프로그램의 실행.

프로그래밍 언어 | 메서드
--- | ---
.NET | namespace Runtime
C | vidi_runtime_*

###### 예제

프로그래밍 언어 | 예제
--- | ---
.NET | Example.Runtime.GUI
Example.Runtime.Console.MultiGPU
C | Example.Cpp.Runtime
Example.Cpp.Runtime.MultiGPU

ViDi DLL은 응용 프로그램에 내장되며, 서드파티 응용 프로그램을 이용할 수도 있습니다.

사용자의 Vision 응용 프로그램은 다음을 책임집니다.

- 원격 작업 영역을 ViDi DLL로 로드
- 이미지 획득
- 이미지를 응용 프로그램으로 전송
- 결과를 해석하고 거기에 따라 작동
- 사용자에게 피드백 제공

ViDi DLL은 다음을 책임집니다.

- GPU 관리
- 이미지를 추출(메모리 또는 하드 디스크를 이용)하고 XML 문자열 반환

A .NET Wrapper는 결과를 표시하는 데 이용할 UI 요소를 제공합니다.

ViDi DLL은 트레이닝 능력이 통합되어 있지 않으므로, 새로운레서피를 트레이닝하려면, ViDi GUI를 이용해야 합니다. 이는 다음의 분리된 3단계로 실행됩니다.

1. 이미지를 획득합니다.
2. DLL의 add to database 메서드를 이용하거나, 수작업으로 ViDi GUI로 끌어다 놓음으로써, 이미지를 ViDi GUI로 전송합니다.
3. 런타임 작업 영역을 내보내고 DLL 안으로 로드합니다. 이는 수동으로, 또는 DLL의 get workspace from server 메서드를 이용해 실행할 수 있습니다.

사용자의 Vision 응용 프로그램은 다음을 책임집니다.

- 이미지를 획득합니다.
- DLL의 add to database 메서드를 이용하거나, 수작업으로 ViDi GUI로 끌어다 놓음으로써, 이미지를 GUI로 전송합니다.
- 트레이닝이 완료되면 새로운 런타임 작업 영역을 로드합니다.

시스템을 트레이닝하려면, 사용자는 다음을 해야 합니다.

- 이미지를 하드 디스크에서 추출해 ViDi GUI에 놓습니다.
- 해당 도구를 트레이닝합니다.
- 런타임 작업 영역을 내보냅니다.