본문 바로가기
TIL/Machine Learning

Tensorflow.js | 이미지 분석 모델 활용하여 강아지 종 예측하기

by 홍차23 2021. 1. 19.
  • 날짜: 2020.12.30-2021.01.05
  • 공부 키워드: 머신러닝 기초, 텐서플로 기초
  • 공부한 방법: 교재, 생활코딩 머신러닝 야학
  • 요약: 생활코딩 머신러닝 야학 강의를 통해서 기초적인 머신러닝의 체계를 파악했다. 데이터유무, 찾고자 하는 종속변수의 형태 등을 통하여 나에게 필요한 머신러닝을 판단할 수 있다. 텐서플로.js를 통해서 강아지 사진 데이터로 강아지 종을 예측할 수 있는 mobilenet 이미지 분석 모델을 활용하여 아래 사진과 같은 결과를 얻었다.

머신러닝 기초

머신러닝에는 지도학습비지도학습, 강화학습이 있다.

정답이 있는 것은 지도학습, 관찰을 통해 의미를 추출하는 통찰을 요구하는 것은 비지도학습이다.

규칙의 반복을 통해서 더 좋은 답을 찾고 고수가 되는 것은 강화학습이다.

 

지도학습에는 분류와 회귀가 있다.

데이터에 독립변수와 종속변수가 있고,

종속변수가 숫자라면 회귀(regression)를, 문자라면 분류(classification)를 사용한다.

 

군집화는 비슷한 행을 그룹핑하는 것이다.

군집화는 그룹핑이고, 분류는 그룹핑된 칸에 예측데이터를 채워넣는 것이다.

 

연관규칙은 장바구니 예측과 같다.

특성을 그룹핑하며 추천시스템 분석에 쓰인다.

 

변환은 데이터를 새롭게 표현하여 원래 데이터보다 쉽게 해석할 수 있도록 하는 것이다.

주로 차원축소 등에 사용된다.

텍스트 문서에서 주제를 추출하는 등 데이터를 구성하는 단위나 성분을 찾기도 한다.

Tensorflow.js

 

result: Border collie, 0.15

github link: https://github.com/tensorflow/tfjs-models/tree/master/mobilenet

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- Load TensorFlow.js. This is required to use MobileNet. -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.1"> </script>
<!-- Load the MobileNet model. -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@1.0.0"> </script>

<!-- Replace this with your image. Make sure CORS settings allow reading the image! -->
<img id="img" src="dog.jpeg"></img>

<!-- Place your code in the script tag below. You can also use an external .js file -->
<script>
  // Notice there is no 'import' statement. 'mobilenet' and 'tf' is
  // available on the index-page because of the script tag above.

  const img = document.getElementById('img');

  // Load the model.
  mobilenet.load().then(model => {
    // Classify the image.
    model.classify(img).then(predictions => {
      console.log('Predictions: ');
      console.log(predictions);
    });
  });
</script>
</body>
</html>

 

 

말로만 듣던 텐서플로를 생활코딩 야학덕분에 직접 다뤄보게 돼서 좋았다. 야학 강의 중에 서버는 각자 알아서 하라고 해서 당황스러운 분도 있었을 것 같은데, vscode를 쓰고 있다면 extension - live server 를 설치한 후에 파일 디렉토리→오른쪽 마우스 클릭 → open with live server 를 클릭하면 된다.

위 파일은 텐서플로를 받아오는 스크립트, mobilenet을 받아오는 스크립트, 그리고 이미지 태그, 모바일넷 모델을 통해 나온 예측값을 콘솔로그에 찍어볼 수 있도록 하는 스크립트로 이루어져 있다.

보더콜리를 예측하긴 제대로 예측했는데, 왜 15%밖에 안되는 결과값이 나왔는지 의문이다. 강의 예제에서는 더 높은 값이 나왔는데. 사진의 문제일까?

 

어쨌든 여기까지 남이 만들어놓은 머신러닝 모델을 활용하는 방법을 배웠다.

다음은 직접 모델을 만들어보는 수업이라 기대된다!

댓글