Tensor Flow로 알려주는 로봇.

만약 네가 나처럼 된다면, 너는 거의 모든 일을 해서 자신의 R2-D2나 BB-8 로봇 파트너를 가질 것이다.당신들이 함께 있으면 얼마나 귀여운 모험을 할 수 있을지 상상해 보세요!
나는 모두에게 Anki Cozmo이 바로 너희들이 줄곧 찾고 있는 로봇이라고 기쁘게 알려주었다.
코즈모는 개성이 넘치는 작은 생활 공간이다.코드를 작성해서 코즈모를 어떻게 하는지 알 필요는 없지만, 만약 당신이 알고 있다면, 코즈모는 더 많은 물후 우주력을 가지고 있을 것이다.
이 글에서 저는 플로이드 Hub에서 텐서플로우의 이동 학습을 사용하여 당신들에게 자신의 코즈모가 일상적인 물체를 식별하는 방법을 가르쳐 드리겠습니다.

설치


설치Cozmo Python SDK, 새로운virtualenv를 만들고, cozmo-tensorflow 프로젝트를 로컬 컴퓨터에 복제합니다.
virtualenv ~/.env/cozmo -p python3
source ~/.env/cozmo/bin/activate
git clone https://www.github.com/whatrocks/cozmo-tensorflow
cd cozmo-tensorflow
pip install -r requirements.txt
다음 - FloydHub CLI(등록free account here에 로그인합니다.FloydHub CLI를 설치해야 하는 경우 우리 check out this guide 에 설치해야 합니다documentation.
floyd login

1. Cozmo를 사용하여 트레이닝 데이터 생성


딥러닝 프로그램을 위해 충분한 훈련 데이터를 얻는 것은 고통스러운 일일 수도 있다.그러나 다행히도 우리는 로봇이 여기저기 뛰어다니며 그의 카메라로 사진을 찍는 것을 좋아해서 코즈모에게 로봇이 배운 것을 찍어달라고 했다.
가격이 너무 비싼 맛있는 소다수 한 캔부터 시작합시다.코즈모를 직접 사르츠 한 캔 앞에 놓아라.로봇이 사진을 찍을 때 항아리를 둘러싸고 회전할 수 있는 충분한 공간을 확보해라.cozmo-paparazzi 스크립트를 실행할 때 Cozmo가 촬영 중인 객체의 이름을 입력해야 합니다.
python3 cozmo-paparazzi.py seltzer

이 단계를 반복하고, 가능한 한 많은 대상(라벨)을 가져라. 왜냐하면 너는 코즈모가 공부하고 싶기 때문이다!이제 모든 이미지 레이블을 로컬 디렉토리 /data 폴더의 하위 디렉토리로 볼 수 있습니다.

데이터 세트를 FloydHub에 업로드


다음은 FloydHub에 사진을 업로드합니다.이것은 우리가 곧 다가올 FloydHub 모델 교육과 모델 서비스 업무에서 이 이미지를 설치할 수 있게 할 것이다.FloydHub의 데이터 세트는 교육 작업에서 버전을 참조하여 데이터 세트를 제어하는 간단한 방법입니다.
cd data
floyd data init cozmo-images
floyd data upload
우리의 예에서, 나는 이 이미지 데이터 집합을 cozmo-images 이라고 명명했다.나는 이미 하나FloydHub Dataset를 만들었기 때문에 너의 코즈모 프로젝트에서 그것을 사용할 수 있다!

공통 데이터 세트 2. FloydHub에서 우리 모형을 훈련시키기


이제 즐거움이 시작된다.우선, 프로젝트의 루트 디렉터리에 있는 것을 확인한 다음, FloydHub 프로젝트를 초기화하여 FloydHub의 완전하게 설정된 TensorFlow cloud GPU 기계에서 우리의 모델을 훈련시킬 수 있도록 합니다.
방주 - 마지막 말이 듣기 어렵다면 FloydHub가 클라우드 기기의 모든 것을 설정하고 최적화하여 GPU가 지원하는 딥러닝 실험을 준비할 수 있도록 하기만 하면 된다.TensorFlow 1.4, PyTorch 0.3 또는 - FloydHub를 사용하여 원하는 정확한 딥러닝 프레임워크를 지정할 수 있습니다.
자, 본론으로 돌아가서 프로젝트를 초기화하겠습니다.
floyd init cozmo-tensorflow
이제 FloydHub에서 딥러닝 교육을 시작하려고 합니다.
주의해야 할 몇 가지 사항:
  • 우리는 구글이 제공한 more 을 이용하여 간단한 이동 학습을 할 것이다.우리는 처음부터 모형을 훈련할 필요가 없다. 우리는 이 미리 훈련된 모형부터 시작하여 마지막 층을 바꾸면 코즈모의 학습 대상을 식별하도록 가르칠 수 있다.마이그레이션 학습은 매우 유용한 기술로 Inception v3 model에서 더 많은 내용을 읽을 수 있습니다.
  • FloydHub 기기의 --data 디렉터리에 Cozmo용 /data 로고로 만든 이미지 데이터 집합을 설치합니다.
  • 이 작업의 교육 과정을 직관적으로 감시할 수 있도록 --tensorboard 로고를 사용하고 있습니다
  • 디렉터리에 출력하기 위해 retrain.py 스크립트(TensorFlow's website를 편집했습니다.이것은 FloydHub를 사용할 때 매우 중요하다. 왜냐하면 FloydHub 작업은 항상 출력을 /output 디렉터리에 저장하기 때문이다.우리의 예에서 우리는 다시 훈련된 ImageNet 모델과 관련된 훈련 라벨을 작업의 /output 폴더에 저장할 것이다.
  • floyd run \
      --gpu \
      --data whatrocks/datasets/cozmo-images:data \
      --tensorboard \
      'python retrain.py --image_dir /data'
    
    그렇습니다!AWS에 어떤 것도 설정할 필요가 없고, TensorFlow를 설치하거나 GPU 드라이버를 처리할 필요도 없다.(만약 당신이 주의한다면 저는 제 작업 명령에 /output 표지를 포함하지 않았습니다. 이것은 FloydHub의 기본 환경이 TensorFlow 1.1.0과 Keras 2.0.6을 포함하기 때문입니다. 이것이 바로 제 교육에 필요한 모든 내용입니다.😎).
    작업이 완료되면 initially provided by the TensorFlow team 에서 새로 교육된 모델을 볼 수 있습니다.
    작업의 출력을 독립된 FloydHub 데이터 집합으로 바꾸어 미래의 작업에서 우리가 다시 훈련한 모델을 설치하기 쉽도록 하는 것을 권장합니다. (다음 단계에서 진행할 것입니다.)작업 출력 페이지에서 데이터 세트 만들기 버튼을 클릭하여 작업을 완료할 수 있습니다.your job's output directory라는 데이터 집합을 보고 내가 다시 훈련한 모델과 라벨을 보십시오.

    cozmo imagenet 3. 코즈모를 우리의 재훈련 모형에 연결


    FloydHub에서 또 다른 작업을 실행하여 새로 재훈련된 모델을 테스트할 수 있습니다.
  • 설치
  • 모델 서비스에 공통 REST 노드 설정
  • retrained model and labels FloydHub의 실험적인 기능입니다. - 기꺼이 듣겠습니다!이 기능이 작동하려면 프로젝트 코드에 --env 라는 간단한 Flask 응용 프로그램을 포함해야 합니다.
    현재 프로젝트에 대해 저는 간단한 Flask 응용 프로그램을 만들었습니다. POST 요청에서 Cozmo에서 이미지를 수신하고 우리가 지난번에 훈련한 모델로 평가한 다음에 모델의 결과로 응답합니다.그런 다음 결과를 사용하여 Cozmo가 특정 객체를 보고 있는지 확인할 수 있습니다.
    floyd run \
      --data whatrocks/datasets/cozmo-imagenet:model \
      --mode serve
    
    마지막으로 우리는 app.py 스크립트를 실행하여 코즈모가 사무실에서 사방을 돌아다니며 특정한 대상을 찾도록 한다.
    python3 cozmo-detective.py toothpaste
    
    Cozmo가 이동할 때마다 로봇은 FloydHub의 모델 단점에 보이는 모든 흑백 이미지를 전송하고 FloydHub는 이 이미지에 따라 모델을 운행하여 다음과 같은 유효한 부하인'Cozmo의 추측'과 추측을 계산하는 데 필요한 시간을 되돌려준다.
    {
      'answer': 
        {
          'plant': 0.022327899932861328, 
          'seltzer': 0.9057837128639221, 
          'toothpaste': 0.07188836485147476
        }, 
      'seconds': 0.947
    }
    
    만약 코즈모가 적어도 80%의 자신감을 가지고 문제의 물체를 보고 있다면, 로봇은 승리적으로 그것을 향해 달려갈 것이다.
    Model-serving
    일단 Cozmo가 잃어버린 모든 물건을 찾으면 FloydHub에서 서비스를 종료하는 것을 잊지 마세요.

    새로운 희망


    신기한 세상이야, 코즈모, 늙은이...탐색하러 가자!
    나는 너와 너의 코즈모가 함께 무엇을 찾을 수 있는지, 그리고 네가 플로이드 허브에 있는 친구들의 약간의 도움을 보고 싶다.위에서 우리와 당신의 발견을 공유합니다!

    공구서류


    이 항목은
    's Cozmo visual recognition project.나도 내 Google Code Labs TensorFlow for Poets project 에 이 프로젝트를 쓴 적이 있다. 단락과 세르다의 전설을 더 많이 언급하는 것 외에는.

    좋은 웹페이지 즐겨찾기