ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IBM Watson의 Visual Recognition을 활용한 iOS에서의 머신러닝
    프로젝트/IBM C:Louders 2020. 8. 3. 21:38

    Cloud 기술을 활용한 첫 포스팅이네요☁️

     

    IBM Watson Visual Recognition을 사용하여, data를 학습시키고 CoreML 모델을 생성하여, iOS 어플리케이션에 배치해보겠습니다!

    CoreML

     

    CoreML은 Apple의 Machine Learing(이하 ML) framework로, 개발자가 손쉽게 ML model을 어플리케이션에 통합할 수 있게 해줍니다.

    Apple에서도 다양한 크기와 아키텍쳐의 ML model을 제공해주고 있죠.

    출처:  https://developer.apple.com/machine-learning/models/

     

    우리는 IBM의 Watson 서비스를 활용하여, 이미지를 학습하고 훈련된 ML model을 생성하여 어플리케이션에서 사용할 수 있습니다!

    훈련된 모델을 직접 다운받아와서 실행시킬 수도 있고,  API를 통해 호출하여 손쉽게 사용할 수도 있어요. 두 가지 방법 모두 확인해보겠습니다

     


     

    0. 준비

    • Carthage

     우리가 사용하려는 Watson Services framework가 포함된 Watson Swift SDK를 빌드하기 위해서는 Carthage dependency manager가 필요합니다!

    직접 .pkg 파일을 다운받거나, Homebrew를 사용하여 terminal에서 설치할 수 있습니다

    https://github.com/watson-developer-cloud/swift-sdk/

    $ brew update
    $ brew install carthage

     

    • IBM에서 제공하는 sample project 받아오기

    https://github.com/watson-developer-cloud/visual-recognition-coreml

     

    watson-developer-cloud/visual-recognition-coreml

    Classify images offline using Watson Visual Recognition and Core ML - watson-developer-cloud/visual-recognition-coreml

    github.com

     


    오늘은 CIFAR-10 dataset을 가지고, 간단하게 물체들을 분류해주는 모델을 생성해 볼 겁니다. 

    💡CIFAR-10 dataset
    10가지 class로 구성된 60,000개의 32*32 color 이미지가 포함되어 있는 데이터셋

     

    1. Visual Recognition project를 생성하고, Watson studio를 실행합니다!

    ※ Lite계정은, 하나의 서비스 당 하나의 instance만을 사용할 수 있습니다. 혹시 이전에 생성해둔 visual recognition instance가 있다면, 지우고 새로 생성하거나 plan을 업그레이드 시켜야합니다

    image들을 분류할 model을 생성해 주겠습니다.

     

    오른쪽의 <Upload directly>메뉴에서 BROWSE버튼을 클릭하거나 drag해서 훈련시킬 data를 가져오고, load된 데이터를 모델에 추가합니다.

    데이터셋이 모두 로드되었으니, 모델을 훈련시켜보도록 하겠습니다.

    우측 상단의 Train Model 버튼을 클릭하면, 위와 같은 메세지가 뜨면서 훈련이 시작됩니다!

    저는 지금 10개의 class에 대하여 약 50개씩, 총 약 500개의 이미지를 훈련시키고 있습니다.

    지난 번에 100장 정도의 이미지를 훈련시키는데에 5-10분 정도의 시간이 소요 되었었는데, 이번엔 조금 더 많이 기다려야겠네요ㅠㅠ

    짠! 모델 훈련이 완료되었습니다! 약 30분 정도 소요된 것 같네요👏🏻👏🏻👏🏻

    저 메세지의 here링크를 누르면, 우리는 이제 학습된 모델에 대한 세부 정보를 확인할 수 있습니다. model ID가 생성되었죠?

    이제 iOS 어플리케이션에서 이 모델을 불러오겠습니다.두 가지 방법이 있는데요.

    -> 먼저 생성된 모델을 바로 다운 받아와, project에 추가하는 방법이 있습니다.

    Implementation > Core ML > 'Download model file'을 클릭하면, 모델을 다운받을 수 있습니다.

    다운받아온 우리의 모델을, 아까 준비 단계에서 받아온 sample project의 Core ML Vision Simple scheme에 추가하고,

    ImageClassificationViewController.swift 파일에서, 기존의 모델 대신 우리의 모델을 불러오면 됩니다

     

    실행해볼까요?

    iOS simulator

    잘 분류해주는 듯 합니다!!!


    -> 이제, API를 통해 생성된 모델을 호출하여 사용하는 방법도 사용해보겠습니다.

    아까 준비 단계에서 받아온 project에서 Custom ML Vision Custom 폴더로 들어가 Cartfile을 생성하고, IBM Watson Swift SDK를 설치하는 code를 작성한 뒤, 명령어를 수행하여 dependency들과 framework들을 설치합니다

    $ cd Core ML Vision Custom
    $ touch Cartfile
    $ vi Cartfile
    //Cartfile
    github "watson-developer-cloud/swift-sdk" ~> 3.5.1
    $ carthage bootstrap --platform iOS

    설치가 완료되면, $ pod install도 수행하여 Podfile안의 library를 설치해줍니다

    framework들이 잘 설치된 것을 볼 수 있죠?

    다시 root 디렉토리로 돌아가서, QuickstartWorkspace.xcworkspace를 열어줍니다!

    $ cd ../
    $ open QuickstartWorkspace.xcworkspace

     

    Core ML Vision Custom scheme에 우리가 사용할 VisualRecognitionV3.framework를 추가해주고,

    Core ML Vision Custom scheme의 ImageClassificationViewController.swift에 model ID, API_key, 모델 생성 날짜를 입력해준 뒤, 어플리케이션을 실행하면 완료입니다!

    (Visual Recognition의 API key는 아까 모델의 세부 정보가 생성된 페이지에서 Visual Recognition instance의 링크를 누르면 찾을 수 있습니다)

     


     

    아무래도 class당 이미지를 50개 정도밖에 훈련시키지 않아서, 정확도가 조금 떨어지긴 합니다ㅜㅜ (개와 고양이를 잘 구분을 못하더군요..)

    원래 CIFAR-10 dataset은 class당 6,000개의 data가 존재하지만, 60,000개의 이미지를 모두 훈련시키면 최소 5-6시간은 걸릴 듯하여 50개만 선별했습니다ㅜㅜ  그래도 cloud를 통하여 모델을 훈련시키는 방법을 습득했으니, 데이터셋을 늘리면 더 완성도 높은 모델을 얻을 수 있겠죠!ㅎㅎ🕵🏻‍♂️

     

    댓글

Designed by Tistory.