Macでpythonを使ってYOLOの画像認識ライブラリを動かす

# 目的
Macでpythonを使ってYOLOの画像認識ライブラリを動かした際の備忘録です

> [You Only Look Once: Unified, Real-Time Object Detection](https://arxiv.org/pdf/1506.02640.pdf)
> [【物体検出手法の歴史 : YOLOの紹介】](https://qiita.com/mdo4nt6n/items/68dcda71e90321574a2b)


# 準備

下記を参考にさせて頂きOpenCV,darknetをインストールします。
>[YOLO (You Only Look Once）を試してみた（on mac）](https://qiita.com/watakandhi/items/a7c9b908797aae5c6b60)
>[YOLOをpythonで動かしてリアルタイム画像認識をしてみた](https://qiita.com/daiarg/items/a922c242af9bb76eb470)


# コード

下記のコードをテスト用に使用させて頂きます。
 >[YOLOをpythonで動かしてリアルタイム画像認識をしてみた](https://qiita.com/daiarg/items/a922c242af9bb76eb470)

test.py  : 静止画の物体認識
test2.py : 静止画の物体認識+結果出力
test3.py : 動画の物体認識+結果出力

# テスト

静止画の物体認識+結果出力
元データ
![sample_personのコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/96c86552-b7eb-4dcb-cf1a-ec8c0ebe761b.jpeg)

結果データ
![sample_person2のコピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/2757a598-be59-b64f-79b6-582bd0380bce.jpeg)


(Mac内蔵カメラの)動画の物体認識+結果出力

結果データ

1.
<img width="320" alt="スクリーンショット 2019-06-30 12.21.52のコピー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/4e92eac5-3538-ce3b-6ecf-aed03d74d09b.png">

2.
<img width="320" alt="スクリーンショット 2019-06-30 12.22.37のコピー.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/86e1e40e-0845-b877-223e-185ebff3fd87.png">

3.
<img width="320" alt="スクリーンショット 2019-06-30 19.27.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/572d9e10-5a77-ecf8-edb1-7f6ed8b662a4.png">

4.
![003_bikkuri2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/e75ce84c-d671-31af-eecb-caa617a9c499.jpeg)


5.
<img width="320" alt="スクリーンショット 2019-06-30 19.31.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/6e77c790-4d6d-994d-89e4-db8e756c8cc6.png">


cell_phone,person,sofa,cup,bottle,dog が認識されました。
なぜが手に持っているチロルチョコがcell_phoneと認識されました。なぜ？

# FAQ

```
$ python setup.py build_ext --inplace
Traceback (most recent call last):
  File "setup.py", line 3, in <module>
    from Cython.Build import cythonize
ImportError: No module named Cython.Build
```

cythonが足りないため下記の通りインストールします。

```
$ pip install --upgrade cython
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Collecting cython
  Downloading https://files.pythonhosted.org/packages/10/4c/fbece7a434ab5f8038d71012642279723640f26a52b38e439af16ccf45a1/Cython-0.29.10-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (2.8MB)
    100% |████████████████████████████████| 2.8MB 3.6MB/s 
Installing collected packages: cython
Successfully installed cython-0.29.10
```

```
$ python test2.py 
  File "test2.py", line 45
SyntaxError: Non-ASCII character '\xe6' in file test2.py on line 45, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
```


SyntaxError: Non-ASCII character ASCIIコード非対応のためエラーのようです。

```
# coding:utf-8
```

とファイルの一番上に追加すれば解決する。


# 参考
[You Only Look Once: Unified, Real-Time Object Detection](https://arxiv.org/pdf/1506.02640.pdf)
[【物体検出手法の歴史 : YOLOの紹介】](https://qiita.com/mdo4nt6n/items/68dcda71e90321574a2b)
[YOLO (You Only Look Once）を試してみた（on mac）](https://qiita.com/watakandhi/items/a7c9b908797aae5c6b60)
[YOLOをpythonで動かしてリアルタイム画像認識をしてみた](https://qiita.com/daiarg/items/a922c242af9bb76eb470)
[カメラから動画を撮影する](http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_gui/py_video_display/py_video_display.html)
[Yolo の学習済みモデルでサクッと物体検出をしてみる](https://www.google.co.jp/amp/cedro3.com/ai/yolov3-prediction/amp/)
[ChainerCVとYoloで『カメラ・動画対応！リアルタイム物体検出ソフト』を作る](https://cpp-learning.com/chainercv_yolo/)
[ImportError: No module named Cython.Build](https://github.com/CellProfiler/centrosome/issues/78)