'프로그램 사용/google coral'에 해당되는 글 8건

  1. 2022.02.07 google coral with tpu, cpp 4
  2. 2022.02.07 google coral with tpu, python
  3. 2022.02.07 edgetpu_c.h 파일 내용 분석
  4. 2022.02.07 tensorflow brace-enclosed initializer list 4
  5. 2022.01.27 google coral, tpu yolo
  6. 2022.01.25 coral tpu delegate example
  7. 2020.10.20 google coral, ubuntu 18.04
  8. 2020.10.06 google coral

해당 cpp 예제는 label_image를 수정한 것 같고, 이미지는 bmp 24bit만 받아들일 수 있을 것으로 생각된다.

그리고 이미지는 알아서 resize 해주지 않아 244*244로 리사이즈 한 이미지를 넣어주어야 한다.

 

netron 웹 사이트에서  모델을 불러들여서 확인해보니 input tensor 사이즈가 [1,244,244,3] 이다.

 

아.. 놔.. threshold는 0~1 사이 실수로 입력해야 한다. (도움말 좀만 더 친절히 해줘 ㅠㅠ)

(대충 봐서 thread로 보고 4를 넣었으니 결과가 나올리가..)

./classify <model_file> <label_file> <image_file> <threshold>

 

그리고 edgetpu용으로 돌리나 일반용으로 돌리나 시간 차이가 좀 나긴 한데 무슨 차이인진 모르겠다.

$ time ./classify models/mobilenet_v2_1.0_224_inat_bird_quant.tflite models/inat_bird_labels.txt images/parrot_re.bmp 0.2
0.79297923 Ara macao (Scarlet Macaw)

real    0m3.914s
user    0m0.612s
sys     0m0.132s

 

쥐꼬리 만큼 줄긴했는데... user쪽이 많이 줄어들긴 했다.

$ time ./classify models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite models/inat_bird_labels.txt images/parrot_re.bmp 0.1
0.79297923 Ara macao (Scarlet Macaw)

real    0m3.542s
user    0m0.108s
sys     0m0.171s

 

 

'프로그램 사용 > google coral' 카테고리의 다른 글

google coral with tpu, python  (0) 2022.02.07
edgetpu_c.h 파일 내용 분석  (0) 2022.02.07
tensorflow brace-enclosed initializer list  (4) 2022.02.07
google coral, tpu yolo  (0) 2022.01.27
coral tpu delegate example  (0) 2022.01.25
Posted by 구차니

이전에 했었는데 먼가 내용을 다시보니 부족해서 추가

 

edgetpu 용으로 변환된 모델

$ python3 classify_image.py   --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite   --labels models/inat_bird_labels.txt   --input images/parrot.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
137.5ms
13.0ms
13.1ms
13.1ms
13.1ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.77734

 

변환되지 않은 모델. 속도 차이가 상당히 나는데 반복 실행시 속도가 줄어들지 않는걸 보면..

tpu 가속을 받지 못하고 cpu로 돌리기 때문이려나?

그리고 정확도는 소수점 5자리 까지 동일하게 나온다.

quantization 으로 인한 정확도 차이는 잘만들면 무시할 만한 수준 이라고 보면 될 듯.

$ python3 classify_image.py \
>   --model models/mobilenet_v2_1.0_224_inat_bird_quant.tflite \
>   --labels models/inat_bird_labels.txt \
>   --input images/parrot.jpg


----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU m                                                                                                           emory.
552.0ms
542.7ms
541.3ms
549.1ms
541.4ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.77734

 

2020.10.20 - [프로그램 사용/google coral] - google coral, ubuntu 18.04

 

 

'프로그램 사용 > google coral' 카테고리의 다른 글

google coral with tpu, cpp  (4) 2022.02.07
edgetpu_c.h 파일 내용 분석  (0) 2022.02.07
tensorflow brace-enclosed initializer list  (4) 2022.02.07
google coral, tpu yolo  (0) 2022.01.27
coral tpu delegate example  (0) 2022.01.25
Posted by 구차니

 

2020년 1월 30일 커밋 되었는데

헤더에 사용법을 넣어두었고 그게 바로.. 문제의 그 내용 -_-

// 4. Modify interpreter with the delegate.
//
// auto* delegate =
//     edgetpu_create_delegate(device.type, device.path, nullptr, 0);
// interpreter->ModifyGraphWithDelegate({delegate, edgetpu_free_delegate});


// Frees delegate returned by `edgetpu_create_delegate`.
EDGETPU_EXPORT void edgetpu_free_delegate(TfLiteDelegate* delegate);

[링크 : https://github.com/google-coral/edgetpu/blob/master/libedgetpu/edgetpu_c.h]

 

delegate를 free 하지 않고(메모리 누수를 감수하면..)

위의 함수 원형으로 delegate만 던져주거나

unique_ptr <Delegate, Deleter > 로 랩핑하면 가능을 할 것 같은데

그게 아니라면..  { } 로 감싼 부분이 자동으로 변형되는건 아니겠지? (컴파일러 옵션에 의해)

TfLiteStatus ModifyGraphWithDelegate(
  TfLiteDelegate *delegate
)

TfLiteStatus ModifyGraphWithDelegate(
  std::unique_ptr< Delegate, Deleter > delegate
)

[링크 : https://www.tensorflow.org/lite/api_docs/cc/class/tflite/interpreter#modifygraphwithdelegate_1]

'프로그램 사용 > google coral' 카테고리의 다른 글

google coral with tpu, cpp  (4) 2022.02.07
google coral with tpu, python  (0) 2022.02.07
tensorflow brace-enclosed initializer list  (4) 2022.02.07
google coral, tpu yolo  (0) 2022.01.27
coral tpu delegate example  (0) 2022.01.25
Posted by 구차니

그냥 손에 익숙한(!) v2.4.1을 써서 그런가(구버전 api라서?)

해당 함수가 존재하지 않는다고 에러가 발생하고 빌드에 실패한다.

classify.cc:177:73: error: no matching function for call to ‘tflite::Interpreter::ModifyGraphWithDelegate(<brace-enclosed initializer list>)’
   interpreter->ModifyGraphWithDelegate({delegate, edgetpu_free_delegate});
                                                                         ^
In file included from classify.cc:12:
/home/pi/work/coral/tensorflow/tensorflow/lite/interpreter.h:421:16: note: candidate: ‘TfLiteStatus tflite::Interpreter::ModifyGraphWithDelegate(TfLiteDelegate*)’
   TfLiteStatus ModifyGraphWithDelegate(TfLiteDelegate* delegate);
                ^~~~~~~~~~~~~~~~~~~~~~~
/home/pi/work/coral/tensorflow/tensorflow/lite/interpreter.h:421:16: note:   no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘TfLiteDelegate*’
/home/pi/work/coral/tensorflow/tensorflow/lite/interpreter.h:431:23: note: candidate: ‘template<class Delegate, class Deleter> TfLiteStatus tflite::Interpreter::ModifyGraphWithDelegate(std::unique_ptr<_Tp, _Dp>)’
   inline TfLiteStatus ModifyGraphWithDelegate(
                       ^~~~~~~~~~~~~~~~~~~~~~~
/home/pi/work/coral/tensorflow/tensorflow/lite/interpreter.h:431:23: note:   template argument deduction/substitution failed:
classify.cc:177:73: note:   couldn't deduce template parameter ‘Delegate’
   interpreter->ModifyGraphWithDelegate({delegate, edgetpu_free_delegate});

 

검색해보니 c++x00

 

class Example {
  private:
  public:
    Example(std::initializer_list<int> list) {
    }
};

Example exam = {10,10,10,10,10};

[링크 : https://forum.arduino.cc/t/how-to-make-brace-enclosed-initializer-list-constructor/628295]

 

Phenotype(std::initializer_list<uint8> c) {
  assert(c.size() <= std::size(m_array));
  std::copy(c.begin(), c.end(), m_array);
}

// used like
Phenotype p1{1, 2, 3};
Phenotype p2({1, 3, 2}); // works too
Phenotype p3(1, 2, 3); // doesn't work

[링크 : https://stackoverflow.com/questions/4118025/brace-enclosed-initializer-list-constructor]

 

그나저나 api 문서가 업데이트 늦을수도 있지만

아래의 원형밖에 없는데 std::unique_ptr이 std::initializer_list일 리는 없을테고. 도대체 어떤 함수를 써야 하는걸까?

TfLiteStatus ModifyGraphWithDelegate(
  TfLiteDelegate *delegate
)

TfLiteStatus ModifyGraphWithDelegate(
  std::unique_ptr< Delegate, Deleter > delegate
)

TfLiteStatus ModifyGraphWithDelegate(
  std::unique_ptr< TfLiteDelegate > delegate
)=delete

[링크 : https://www.tensorflow.org/lite/api_docs/cc/class/tflite/interpreter#modifygraphwithdelegate_1]

'프로그램 사용 > google coral' 카테고리의 다른 글

google coral with tpu, python  (0) 2022.02.07
edgetpu_c.h 파일 내용 분석  (0) 2022.02.07
google coral, tpu yolo  (0) 2022.01.27
coral tpu delegate example  (0) 2022.01.25
google coral, ubuntu 18.04  (0) 2020.10.20
Posted by 구차니

'프로그램 사용 > google coral' 카테고리의 다른 글

edgetpu_c.h 파일 내용 분석  (0) 2022.02.07
tensorflow brace-enclosed initializer list  (4) 2022.02.07
coral tpu delegate example  (0) 2022.01.25
google coral, ubuntu 18.04  (0) 2020.10.20
google coral  (0) 2020.10.06
Posted by 구차니

cpp

[링크 : https://github.com/google-coral/tflite]

[링크 : https://coral.ai/docs/edgetpu/tflite-cpp/]

 

 

python

[링크 : https://coding-yoon.tistory.com/91]

 

+

auto* delegate = edgetpu_create_delegate(device.type, device.path, nullptr, 0);
  interpreter->ModifyGraphWithDelegate({delegate, edgetpu_free_delegate});

[링크 : https://github.com/google-coral/tflite/blob/master/cpp/examples/classification/classify.cc]

 

auto delegates = delegate_providers.CreateAllDelegates();
  for (auto& delegate : delegates) {
    const auto delegate_name = delegate.provider->GetName();
    if (interpreter->ModifyGraphWithDelegate(std::move(delegate.delegate)) !=
        kTfLiteOk) {
      LOG(ERROR) << "Failed to apply " << delegate_name << " delegate.";
      exit(-1);
    } else {
      LOG(INFO) << "Applied " << delegate_name << " delegate.";
    }
  }

[링크 : https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/examples/label_image/label_image.cc]

 

'프로그램 사용 > google coral' 카테고리의 다른 글

edgetpu_c.h 파일 내용 분석  (0) 2022.02.07
tensorflow brace-enclosed initializer list  (4) 2022.02.07
google coral, tpu yolo  (0) 2022.01.27
google coral, ubuntu 18.04  (0) 2020.10.20
google coral  (0) 2020.10.06
Posted by 구차니

구글 코랄 TPU USB를 한번 사용해 봄

일단은 설치된 python의 버전을 확인해야 하는데 버전에 맞지 않는 런타임을 설치할 경우

아래와 같이 not a supported wheel on this platform 이라는 에러가 발생한다.

$ pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp38-cp38-linux_x86_64.whl
tflite_runtime-2.1.0.post1-cp38-cp38-linux_x86_64.whl is not a supported wheel on this platform.
$ python3 --version
Python 3.6.9

[링크 : https://coral.ai/docs/accelerator/get-started/]

 

dmesg로 확인해보니.. 다음과 같이 나온다.

[  957.819504] usb 2-1.2: new high-speed USB device number 4 using ehci-pci
[  957.928960] usb 2-1.2: New USB device found, idVendor=1a6e, idProduct=089a, bcdDevice= 1.00
[  957.928968] usb 2-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0

 

lsusb로는 아래와 같이

Bus 002 Device 004: ID 04f2:b242 Chicony Electronics Co., Ltd 
Bus 002 Device 009: ID 1a6e:089a Global Unichip Corp
Bus 002 Device 008: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP)
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

lshw로 확인해보면 아래와 같이 UNCLAIMED 라고 뜬다.

Global Unichip corp를 검색해보니 asic 설계 서비스 회사, Fabless 회사라고 나오네.

              *-usb
                   description: USB hub
                   product: Integrated Rate Matching Hub
                   vendor: Intel Corp.
                   physical id: 1
                   bus info: usb@2:1
                   version: 0.00
                   capabilities: usb-2.00
                   configuration: driver=hub slots=8 speed=480Mbit/s
                 *-usb:0 UNCLAIMED
                      description: Generic USB device
                      vendor: Global Unichip Corp.
                      physical id: 2
                      bus info: usb@2:1.2
                      version: 1.00
                      capabilities: usb-2.10
                      configuration: maxpower=498mA speed=480Mbit/s

 

아래는 할 것 다하고 USB 가속기를 설치하지 않았을 경우 발생하는 에러

장치를 발견하지 못했다고 뜨지 않고 Failed to load delegate from libedgetpu.so.1 이라고 뜬다.

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/parrot.jpg
Traceback (most recent call last):
  File "/home/minimonk/.local/lib/python3.6/site-packages/tflite_runtime/interpreter.py", line 161, in load_delegate
    delegate = Delegate(library, options)
  File "/home/minimonk/.local/lib/python3.6/site-packages/tflite_runtime/interpreter.py", line 120, in __init__
    raise ValueError(capture.message)
ValueError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "classify_image.py", line 122, in <module>
    main()
  File "classify_image.py", line 99, in main
    interpreter = make_interpreter(args.model)
  File "classify_image.py", line 73, in make_interpreter
    {'device': device[0]} if device else {})
  File "/home/minimonk/.local/lib/python3.6/site-packages/tflite_runtime/interpreter.py", line 164, in load_delegate
    library, str(e)))
ValueError: Failed to load delegate from libedgetpu.so.1

 

아무튼 USB 꼽고 하니 먼가 결과는 나오는데

맞나? 싶을 정도로 단순하게 문자열로 나온다.

그리고 USB2.0으로 해서 그런가 초기 속도가 상당히 느리게 나온다.

(홈페이지에서는 10ms 미만이었던 것 같은데)

$ python3 classify_image.py --model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite --labels models/inat_bird_labels.txt --input images/parrot.jpg
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
103.2ms
10.7ms
10.6ms
10.4ms
10.3ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.77734

 

혹시나 해서 찾아본 라이브러리 경로.

$ sudo find / -name libedgetpu.so*
/usr/lib/x86_64-linux-gnu/libedgetpu.so.1
/usr/lib/x86_64-linux-gnu/libedgetpu.so.1.0

 

 

+

회사에서 알게된 장비인데 중고로 구매할까 구매대행으로 할까하고 찾아보니

12만원 넘어서 그냥 한번 써보는걸로 만족하려는 중

 

 

+ 2020.10.21

웹캠으로 받아서 TPU로 90가지 객체가 인식 가능한지 한번 해봐? ㅋㅋㅋ

[링크 : https://ultrakid.tistory.com/6]

    [링크 : https://github.com/google-coral/edgetpu/blob/master/examples/object_detection.py]

'프로그램 사용 > google coral' 카테고리의 다른 글

edgetpu_c.h 파일 내용 분석  (0) 2022.02.07
tensorflow brace-enclosed initializer list  (4) 2022.02.07
google coral, tpu yolo  (0) 2022.01.27
coral tpu delegate example  (0) 2022.01.25
google coral  (0) 2020.10.06
Posted by 구차니

구글의 텐서플로우 가속기 라고 해야하려나?

아무튼 TPU accelerator인데 회사에 USB 버전이 있어서 한번 만져 볼까 싶네

 

[링크 : https://coral.ai/]

[링크 : https://coral.ai/products/accelerator/...E]

[링크 : https://coral.ai/docs/accelerator/get-started/#requirements]

'프로그램 사용 > google coral' 카테고리의 다른 글

edgetpu_c.h 파일 내용 분석  (0) 2022.02.07
tensorflow brace-enclosed initializer list  (4) 2022.02.07
google coral, tpu yolo  (0) 2022.01.27
coral tpu delegate example  (0) 2022.01.25
google coral, ubuntu 18.04  (0) 2020.10.20
Posted by 구차니