도전 deep3d 실패 이야기

6317 단어 DeepLearningPython

입문


본 보도는 Python Advent Calendar 2016의 3일째 보도입니다.
실패한 이야기여서 결국 잘못으로 끝났다.

무엇이 deep3d입니까


DeepLearning을 사용하여 이미지를 3D 이미지로 변환합니다프로그램 라이브러리.

이것이 바로



이렇게 될 거야!



꿈이 커지고 있어요.


여기서부터 간단한 순서 설명.


GPU용 기기 준비

  • AWS를 만드는 g2.2xlarge 또는 g2.8xlarge의 EC2 인스턴스
  • 이용제한 해제 사전 신청
  • 상당한 스토리지를 사용하기 때문에 30GB
  • 물론 AWS 이외에는 k
  • 가 전혀 없습니다.

    설치 라이브러리

  • CUDA(GPU 통합 개발 환경)
  • cuDNN(GPU에서 neural 네트워크 이동에 사용되는 라이브러리)
  • NVIDIA에 개발자를 등록해야 합니다
  • MXNet(DeepLearning 라이브러리)
  • 참고 자료


  • Setup Amazon AWS GPU instance with MXnet
  • 상기 LD_LIBRARY_PATH
  • 에/usr/local/cuda/lib64/를 추가해야 합니다.
    g2.2xlarge
  • 를 선택한 경우 nvidia-smi에 표시되는 GPU는 1개
  • 입니다.

  • Deep3D 지원 MXNet 0.7.0 설치
  • MXNet에서 deep3d를 처리하려면 상기 내용
  • 을 참조하십시오.

    준비python

  • pyenv 설치
  • Pyenv의 Python3.x 환경 구축(CentOS, Ubuntu)
  • anaconda 및 openCV 설치
  • python에서 OpenCV를 사용하는 가장 간단한 방법
  • images2gif 가입
  • PinguCarsti / packages / images2gif
  • 이미지 준비



    예시와 같은 방식으로 실행하다

  • 이것 괜찮아요?
  • deep3d.ipynb
  • 이미지 미리 바꾸기
  • gitclone의deep3d 디렉터리에서 실행하지 않으면deep3d-symbol.json 읽기 오류 발생
  • 실행하려는 디렉터리로 복사해도 k
  • 이번에는 주피터를 사용하지 않았다
  • 예시와 같은 방식으로 실행하다

    import mxnet as mx
    import numpy as np
    import os
    import urllib
    import cv2
    from PIL import Image
    from images2gif import writeGif
    import logging
    logging.basicConfig(level=logging.DEBUG)
    

    예시와 같은 방식으로 실행하다

    if not os.path.exists('deep3d-0050.params'):
        urllib.urlretrieve('http://homes.cs.washington.edu/~jxie/download/deep3d-0050.params', 'deep3d-0050.params')
    model = mx.model.FeedForward.load('deep3d', 50, mx.gpu(0))
    shape = (384, 160)
    img = cv2.imread('demo.jpg')
    raw_shape = (img.shape[1], img.shape[0])
    img = cv2.resize(img, shape)
    X = img.astype(np.float32).transpose((2,0,1))
    X = X.reshape((1,)+X.shape)
    test_iter = mx.io.NDArrayIter({'left': X, 'left0':X})
    Y = model.predict(test_iter)
    

    FATAL ERROR!!!!

    >>> test_iter = mx.io.NDArrayIter({'left': X, 'left0':X})
    >>> Y = model.predict(test_iter)
    [16:21:56] src/operator/./reshape-inl.h:311: Using target_shape will be deprecated.
    [16:21:57] src/operator/./reshape-inl.h:311: Using target_shape will be deprecated.
    [16:21:57] src/operator/./reshape-inl.h:311: Using target_shape will be deprecated.
    [16:21:57] /home/ubuntu/mxnet/dmlc-core/include/dmlc/logging.h:235: [16:21:57] src/operator/./cudnn_softmax_activation-inl.h:44: Check failed: (in_data[softmax_activation::kData].ndim()) == (2) Input need to have 2 dimensions when mode=instance.
    [16:21:57] /home/ubuntu/mxnet/dmlc-core/include/dmlc/logging.h:235: [16:21:57] src/engine/./threaded_engine.h:306: [16:21:57] src/operator/./cudnn_softmax_activation-inl.h:44: Check failed: (in_data[softmax_activation::kData].ndim()) == (2) Input need to have 2 dimensions when mode=instance.
    An fatal error occurred in asynchronous engine operation. If you do not know what caused this error, you can try set environment variable MXNET_ENGINE_TYPE to NaiveEngine and run with debugger (i.e. gdb). This will force all operations to be synchronous and backtrace will give you the series of calls that lead to this error. Remember to set MXNET_ENGINE_TYPE back to empty after debugging.
    terminate called after throwing an instance of 'dmlc::Error'
      what():  [16:21:57] src/engine/./threaded_engine.h:306: [16:21:57] src/operator/./cudnn_softmax_activation-inl.h:44: Check failed: (in_data[softmax_activation::kData].ndim()) == (2) Input need to have 2 dimensions when mode=instance.
    An fatal error occurred in asynchronous engine operation. If you do not know what caused this error, you can try set environment variable MXNET_ENGINE_TYPE to NaiveEngine and run with debugger (i.e. gdb). This will force all operations to be synchronous and backtrace will give you the series of calls that lead to this error. Remember to set MXNET_ENGINE_TYPE back to empty after debugging.
    Aborted (core dumped)
    

    why?

  • Input need to have 2 dimensions when mode=instance.
  • 맡겼지?
  • test_iter = mx.io.NDArrayIter({'left': X, 'left0':X})
  • c++의 원본 코드를 읽었지만 해결하지 못했습니다...
  • (´·ω·`)


    끝내다

  • deep3d도 영상에 쓸 수 있을 것 같아서 더 열심히 하고 싶어요.
  • 그중에서도 DeepLearning의 논리를 이해하고 싶다
  • AWS 정말 편해요
  • python 정말 편해요.
  • 이번에는 특히 아나콘다가 우쭐해
  • 좋은 웹페이지 즐겨찾기