質問: raspberry piでyoloを動かしたく ``` 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 ``` でサイトに書いてある通りにやってみた後に重みをDLして ./darknet detector test cfg/coco.data cfg/yolo.cfg yolov2.weights data/person.jpgで実行すると illegal insturuction と出てしまいます。 おそらくサイトではRaspberry Pi 3を用いているのですが自分はRaspberry Pi 1Bを使っていることが原因だと思います。このエラーを直すにはどのようにすればよいでしょうか?教えてくれる人がいなくて困っています( ́°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`) どうかよろしくおねがいします
回答: `Raspberry Pi` はバージョンによって CPU が違い `armv8` `armv7` `armv6` といろいろです。あなたの `Raspberry Pi 1 model B` は `armv6` のようですね。そのため `armv8` `armv7` 固有命令は実行できなくて `illegal instruction` エラーが発生します。 `armv8` 64bit なバイナリは `armv6` 上ではそもそも実行できないはずなので、実行中に `illegal instruction` が出るなら `armv7` 命令を実行しているということ。 Illegal instructionというエラーについて `armv7` 専用命令を使って高速化を図っているツールやライブラリは、参考リンクに挙げた `libx264` 以外にもあるはずなので、あなたの使いたい `darknet` 本体および `darknet` が中から呼び出しているライブラリ一式のすべてが `armv6` で動くようにコンパイルされていると問題解決です。どれが `armv7` 命令を使っているかは要調査っす(オイラの手元には `Raspberry Pi 2 model B` しかないので、オイラでは調査できません) というわけでオイラならどうするか、ですが ・野良ビルド(自分で `make` した)ツールを再ビルドしてみる - その際に `configure` なり `Makefile` なりを読んで --- `armv7` 固有のコンパイルオプションを指定しているか否か --- `armv7` 固有のアセンブラファイルを使っているか否か を調査してみる、あれば回避方法を探す ってところでしょうか。 そういう手間をかけられないのであれば参考サイトと同じ `Raspberry Pi 3` を買っちゃうとかも大いにアリです。やりたいことでないものに悩んでいる時間がもったいないです。金で解決できる時間は、金で買っちゃえ。