51808


raspberry piでyoloを動かしたく

[code]

    sudo pip install --upgrade git+https://github.com/Maratyszcza/PeachPy
    sudo pip install --upgrade git+https://github.com/Maratyszcza/confu
    
    git clone https://github.com/ninja-build/ninja.git
    cd ninja
    git checkout release
    ./configure.py --bootstrap
    export NINJA_PATH=$PWD
    
    sudo apt-get install clang
    
    git clone https://github.com/digitalbrain79/NNPACK-darknet.git
    cd NNPACK-darknet
    confu setup
    python ./configure.py --backend auto
    $NINJA_PATH/ninja
    sudo cp -a lib/* /usr/lib/
    sudo cp include/nnpack.h /usr/include/
    sudo cp deps/pthreadpool/include/pthreadpool.h /usr/include/
    
    git clone https://github.com/digitalbrain79/darknet-nnpack.git
    cd darknet-nnpack
    make
    
[/code]

でサイトに書いてある通りにやってみた後に重みをDLして  
./darknet detector test cfg/coco.data cfg/yolo.cfg yolov2.weights
data/person.jpgで実行すると  
illegal insturuction  
と出てしまいます。  
おそらくサイトではRaspberry Pi 3を用いているのですが自分はRaspberry Pi
1Bを使っていることが原因だと思います。このエラーを直すにはどのようにすればよいでしょうか？教えてくれる人がいなくて困っています(´°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥｀)
どうかよろしくおねがいします


CC BY-SA 4.0
2019-01-07T06:44:41.507
51782
2019-01-08T19:35:59.647
2019-01-07T14:19:31.517
31704
31704
question
raspberry-pi
raspberry pi illegal instruction


<https://ja.wikipedia.org/wiki/Raspberry_Pi>  
`Raspberry Pi` はバージョンによって CPU が違い `armv8` `armv7` `armv6` といろいろです。あなたの
`Raspberry Pi 1 model B` は `armv6` のようですね。そのため `armv8` `armv7` 固有命令は実行できなくて
`illegal instruction` エラーが発生します。

`armv8` 64bit なバイナリは `armv6` 上ではそもそも実行できないはずなので、実行中に `illegal instruction`
が出るなら `armv7` 命令を実行しているということ。

[Illegal instructionというエラーについて](https://ja.stackoverflow.com/questions/17639/)  
`armv7` 専用命令を使って高速化を図っているツールやライブラリは、参考リンクに挙げた `libx264` 以外にもあるはずなので、あなたの使いたい
`darknet` 本体および `darknet` が中から呼び出しているライブラリ一式のすべてが `armv6`
で動くようにコンパイルされていると問題解決です。どれが `armv7` 命令を使っているかは要調査っす（オイラの手元には `Raspberry Pi 2
model B` しかないので、オイラでは調査できません）

というわけでオイラならどうするか、ですが

・野良ビルド（自分で `make` した）ツールを再ビルドしてみる  
\- その際に `configure` なり `Makefile` なりを読んで  
\--- `armv7` 固有のコンパイルオプションを指定しているか否か  
\--- `armv7` 固有のアセンブラファイルを使っているか否か  
を調査してみる、あれば回避方法を探す

ってところでしょうか。

そういう手間をかけられないのであれば参考サイトと同じ `Raspberry Pi 3`
を買っちゃうとかも大いにアリです。やりたいことでないものに悩んでいる時間がもったいないです。金で解決できる時間は、金で買っちゃえ。


CC BY-SA 4.0
2019-01-08T00:05:44.700
51808
2019-01-08T00:05:44.700
8589
51782
answer