AI를 활용한 재밌는 것들을 개발합니다

2018년 8월 18일 토요일

TensorFlowSharp - 01. 기본 함수 사용하기(콘솔 앱)

1. 기본 함수 사용하기(콘솔 앱)
2. TensorFlow 모델 사용하기(Winform 앱)
3-1. 내가 만든 TensorFlow slim 모델 사용( InceptionV1 ckpt to pb convertion )
3-2. 내가 만든 TensorFlow slim 모델 사용( InceptionV1 Preprocessing in TensorFlowSharp)

안녕하세요.

 윈도우즈 C# 어플리케이션에서 어떻게 하면 TensorFlow로 만든 모델을 활용 할 수 있을까요? Tensorflow.org 에서도 공식 링크로 제공되고 있는 TensorFlowSharp 에 대해 알아 보도록 하겠습니다.

공식 Github page : https://github.com/migueldeicaza/TensorFlowSharp

 페이지 설명에 따르면 TensorFlow 나 Keras로 학습시킨 모델을 .NET에 로드시켜 학습이나 inference를 시키는 응용 프로그램을 만들 수 있는 API를 제공한다고 되어 있습니다. 그럼 페이지에 있는 실습대로 따라가면서 알아보도록 하겠습니다.

Using TensorFlowSharp

설치

 가장 쉬운 방법은 Visual Studio에서 NuGet 페키지를 설치하는 방법입니다.
(아직 설치가 안되어 있다면 이 글을 참고해서 설치해 주세요. http://euhyeji.blogspot.com/2018/08/visualstudio2017.html  )

 비쥬얼 스튜디오를 실행 시킵니다. 새 프로젝트를 만들겠습니다. 페이지에서 제공하는 예제 프로그램이 콘솔 앱이므로 콘솔 앱을 선택하고 프로젝트 이름은 'HelloTensorFlowSharp'이 좋겠군요.
 특히 주의 해야 할 점은 .NET Framework 4.6.1 이상을 설정 해주어야 TensorFlowSharp이 동작됩니다.

 이제 NuGet에서 페키지를 설치해 보겠습니다. [프로젝트]->[NuGet 패키지 관리]를 선택합니다.


 '찾아보기'를 클릭하고 검색어에 'Tensorflowsharp'을 입력합니다. 검색 된 패키지중 TensorFlowSharp을 클릭해 설치를 눌러 현재 프로젝트에 설치합니다.


 솔루션 탐색기에서 현재 프로젝트의 참조를 열어보면 TensorFlowSharp이 설치 되어 있는 것을 확인 할 수 있습니다.


Using TensorFlowSharp

 GitHub 페이지에서 두 가지 예제를 소개하고 있는데 하나는 이미 TensorFlow에서 만들어져 있는 모델을 가져와 사용하는 예제이고 두번째는 TensorFlow의 문법을 사용해 더하기 곱하기를 해보는 예제 입니다. 모델을 가져와 사용하는 예제는 다음 글에서 하기로 하기 지금은 두번째 예제를 한번 해보도록 하겠습니다.


using (var session = new TFSession())
{
    var graph = session.Graph;

    var a = graph.Const(2);
    var b = graph.Const(3);
    Console.WriteLine("a=2 b=3");

    // Add two constants
    var addingResults = session.GetRunner().Run(graph.Add(a, b));
    var addingResultValue = addingResults.GetValue();
    Console.WriteLine("a+b={0}", addingResultValue);

    // Multiply two constants
    var multiplyResults = session.GetRunner().Run(graph.Mul(a, b));
    var multiplyResultValue = multiplyResults.GetValue();
    Console.WriteLine("a*b={0}", multiplyResultValue);
}


위 코드를 Program.cs 의 static void Main(string[] args) { } 중괄호 안에 복사를 합니다. TFSession에 빨간 줄이 표시가 될텐데 해당 참조를 코드 제일 상단에 추가해주어야 합니다. using TensorFlow; 를 추가합니다. 그리고 F5를 눌러 실행을 해보면 실행후 실행 창이 바로 꺼져 버리기 때문에 Console.WriteLine("a*b={0}", multiplyResultValue); 아래 쪽에 Console.ReadLine();을 추가해 사용자 입력이 있을 때 실행 창이 종료되게 합니다.

F5를 눌러 실행시켜 보겠습니다.

 오호... 에러가 나는군요.. 쉬운게 없군요... 구글링을 해보니 Build 옵션에서 64bit가 사용되도록 설정해야된다고 나오네요. 아래 그림처럼 [프로젝트]->[ HelloTensorFlowSharp 속성]으로 들어가서 '32비트 기본 사용'을 해제하면 됩니다.

다시 F5를 눌러 실행하면 아래와 같이 정상적으로 실행 되는 것을 확인할 수 있습니다.


다음 글에서는 TensorFlow에서 생성 시킨 모델을 활용하는 방법에 대해 알아 보겠습니다.



댓글 3개:

  1. 흰바탕에 흰글씨라 코드가 안보입니다 ㅠㅠ

    답글삭제
    답글
    1. 수정했어요~ 알려주셔서 감사합니다^^

      삭제
  2. 감사합니다. 큰 도움이 되었습니다~ 너무 감사해요.

    답글삭제

가장 많이 본 글