質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

2回答

3216閲覧

darknet yoloで最後のprediction.pngが作成されずsigsegvエラーが起こる

Spacekoki

総合スコア17

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

GDB

GDBはGNUソフトウェアシステムのための標準的なデバッガーです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2018/05/28 02:19

編集2018/06/07 01:47

lubuntu 16.04 LTSを使っています。
darknetのyoloについての質問です。画像を認識させると下記のbashのように最後にsigsegvエラーを吐きます。下記のはtinydarknetを用いたときのログですが普通のdarknetを用いてdetectした場合も全く同じ現象が起こります。どうすればよいでしょうか?

bash

1./darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg 2layer filters size input output 3 0 conv 16 3 x 3 / 1 224 x 224 x 3 -> 224 x 224 x 16 0.043 BFLOPs 4 1 max 2 x 2 / 2 224 x 224 x 16 -> 112 x 112 x 16 5 2 conv 32 3 x 3 / 1 112 x 112 x 16 -> 112 x 112 x 32 0.116 BFLOPs 6 3 max 2 x 2 / 2 112 x 112 x 32 -> 56 x 56 x 32 7 4 conv 16 1 x 1 / 1 56 x 56 x 32 -> 56 x 56 x 16 0.003 BFLOPs 8 5 conv 128 3 x 3 / 1 56 x 56 x 16 -> 56 x 56 x 128 0.116 BFLOPs 9 6 conv 16 1 x 1 / 1 56 x 56 x 128 -> 56 x 56 x 16 0.013 BFLOPs 10 7 conv 128 3 x 3 / 1 56 x 56 x 16 -> 56 x 56 x 128 0.116 BFLOPs 11 8 max 2 x 2 / 2 56 x 56 x 128 -> 28 x 28 x 128 12 9 conv 32 1 x 1 / 1 28 x 28 x 128 -> 28 x 28 x 32 0.006 BFLOPs 13 10 conv 256 3 x 3 / 1 28 x 28 x 32 -> 28 x 28 x 256 0.116 BFLOPs 14 11 conv 32 1 x 1 / 1 28 x 28 x 256 -> 28 x 28 x 32 0.013 BFLOPs 15 12 conv 256 3 x 3 / 1 28 x 28 x 32 -> 28 x 28 x 256 0.116 BFLOPs 16 13 max 2 x 2 / 2 28 x 28 x 256 -> 14 x 14 x 256 17 14 conv 64 1 x 1 / 1 14 x 14 x 256 -> 14 x 14 x 64 0.006 BFLOPs 18 15 conv 512 3 x 3 / 1 14 x 14 x 64 -> 14 x 14 x 512 0.116 BFLOPs 19 16 conv 64 1 x 1 / 1 14 x 14 x 512 -> 14 x 14 x 64 0.013 BFLOPs 20 17 conv 512 3 x 3 / 1 14 x 14 x 64 -> 14 x 14 x 512 0.116 BFLOPs 21 18 conv 128 1 x 1 / 1 14 x 14 x 512 -> 14 x 14 x 128 0.026 BFLOPs 22 19 conv 1000 1 x 1 / 1 14 x 14 x 128 -> 14 x 14 x1000 0.050 BFLOPs 23 20 avg 14 x 14 x1000 -> 1000 24 21 softmax 1000 25Loading weights from tiny.weights...Done! 26fish: “./darknet classify cfg/tiny.cfg…” terminated by signal SIGSEGV (Address boundary error)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

デバッグビルドを行い、gdb経由で実行して、SEGVが起きている箇所を特定しましょう。
darknetはエラーケースがあまり考慮されておらず、少し入力パラメータが違うだけでもSEGVが起きます。

投稿2018/05/28 02:33

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Spacekoki

2018/05/28 06:40 編集

gdb --args ./darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... ./darknet: 成功です. (gdb) ここまでできるのですが、ここからどうすればよいでしょうか? gdbは初めてでよくわかりません。
kazto

2018/05/28 06:37

そこでrunすればひとまず実行はできます。 が、gdbを用いたデバッグに慣れていないと、ちょっとこの先は大変そうです。 基本的にdarknetは、ソースコードを読んで解析できる方向けのものだと認識しています。
Spacekoki

2018/05/28 06:55 編集

ありがとうございます。 ここまでできました。memcpy.sを作成すれば直るのではないかと思っています。 #0のディレクトリが省略されているのですがどうすればわかるのでしょうか? gdb --args ./darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./darknet...done. (gdb) run Starting program: /home/spacekoki/darknet/darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1". layer filters size input output 0 conv 16 3 x 3 / 1 224 x 224 x 3 -> 224 x 224 x 16 0.043 BFLOPs 1 max 2 x 2 / 2 224 x 224 x 16 -> 112 x 112 x 16 2 conv 32 3 x 3 / 1 112 x 112 x 16 -> 112 x 112 x 32 0.116 BFLOPs 3 max 2 x 2 / 2 112 x 112 x 32 -> 56 x 56 x 32 4 conv 16 1 x 1 / 1 56 x 56 x 32 -> 56 x 56 x 16 0.003 BFLOPs 5 conv 128 3 x 3 / 1 56 x 56 x 16 -> 56 x 56 x 128 0.116 BFLOPs 6 conv 16 1 x 1 / 1 56 x 56 x 128 -> 56 x 56 x 16 0.013 BFLOPs 7 conv 128 3 x 3 / 1 56 x 56 x 16 -> 56 x 56 x 128 0.116 BFLOPs 8 max 2 x 2 / 2 56 x 56 x 128 -> 28 x 28 x 128 9 conv 32 1 x 1 / 1 28 x 28 x 128 -> 28 x 28 x 32 0.006 BFLOPs 10 conv 256 3 x 3 / 1 28 x 28 x 32 -> 28 x 28 x 256 0.116 BFLOPs 11 conv 32 1 x 1 / 1 28 x 28 x 256 -> 28 x 28 x 32 0.013 BFLOPs 12 conv 256 3 x 3 / 1 28 x 28 x 32 -> 28 x 28 x 256 0.116 BFLOPs 13 max 2 x 2 / 2 28 x 28 x 256 -> 14 x 14 x 256 14 conv 64 1 x 1 / 1 14 x 14 x 256 -> 14 x 14 x 64 0.006 BFLOPs 15 conv 512 3 x 3 / 1 14 x 14 x 64 -> 14 x 14 x 512 0.116 BFLOPs 16 conv 64 1 x 1 / 1 14 x 14 x 512 -> 14 x 14 x 64 0.013 BFLOPs 17 conv 512 3 x 3 / 1 14 x 14 x 64 -> 14 x 14 x 512 0.116 BFLOPs 18 conv 128 1 x 1 / 1 14 x 14 x 512 -> 14 x 14 x 128 0.026 BFLOPs 19 conv 1000 1 x 1 / 1 14 x 14 x 128 -> 14 x 14 x1000 0.050 BFLOPs 20 avg 14 x 14 x1000 -> 1000 21 softmax 1000 Loading weights from tiny.weights...Done! Program received signal SIGSEGV, Segmentation fault. __memcpy_ia32 () at ../sysdeps/i386/i686/multiarch/../memcpy.S:90 90 ../sysdeps/i386/i686/multiarch/../memcpy.S: そのようなファイルやディレクトリはありません. (gdb) where #0 __memcpy_ia32 () at ../sysdeps/i386/i686/multiarch/../memcpy.S:90 #1 0xb7df6307 in __GI__IO_getline_info (fp=0x9377050, buf=0x0, n=<optimized out>, delim=10, extract_delim=1, eof=0x0) at iogetline.c:96 #2 0xb7df63ce in __GI__IO_getline (fp=0x9377050, buf=0x0, n=511, delim=10, extract_delim=1) at iogetline.c:34 #3 0xb7df51ed in _IO_fgets (buf=0x0, n=512, fp=0x9377050) at iofgets.c:53 #4 0x0806296b in fgetl () #5 0x0808871e in get_paths () #6 0x0808a9ba in get_labels () #7 0x08058466 in predict_classifier () #8 0x080497ba in main () (gdb)down #0 __memcpy_ia32 () at ../sysdeps/i386/i686/multiarch/../memcpy.S:90 90 ../sysdeps/i386/i686/multiarch/../memcpy.S: そのようなファイルやディレクトリはありません.
kazto

2018/05/28 07:00

見方としては、 #5 0x0808871e in get_paths () #6 0x0808a9ba in get_labels () あたりの引数に与えているパラメータから原因を類推する感じになります。 今回の場合はおそらくラベル取得関数に失敗しているので、ラベルファイルが適切なパスに置いてあるかどうか、などが考えられます。
Spacekoki

2018/06/06 04:30

ありがとうございます。 darknetも入れなおしてみたのですが、どうもうまく行きません。 他にもコンパイラをアップデートしてみたりした。 どうすればよいでしょうか? ちなみにdarknet/は/home/usernameにあります。
kazto

2018/06/06 04:45

状況は、変わらずSEGVですか?落ちる場所は変わりありませんか? ラベルファイルについて何か試したことはありますか?
Spacekoki

2018/06/06 05:20

darknet/data/labels/の中にラベルファイルがったのでインストールし直しました。 エラーも変わりません。
kazto

2018/06/06 05:20

ちなみに2点伺いたいのですが、 detectコマンドではなくclassifyコマンドを使っていることに意図はありますか? yolov3.cfg/yolov3.weights ではなくtiny.cfg/tiny.weights を使っていることに意図はありますか?
Spacekoki

2018/06/06 05:25

今使用しているPCが低スペックなのでtinydarknetを使っています。公式ホームページのtinydarknetの使い方ではdetectではなくclassifyを使うようにと書いてあったのでそうしています。 https://pjreddie.com/darknet/tiny-darknet/
kazto

2018/06/06 05:30

https://pjreddie.com/darknet/yolo/ おそらくこのページの方が新しく、こちらでは例として ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg と例が挙げられています。速度もさほど気にならない程度(GPUなしで十数秒)ですので、ひとまず結果を出したい、というだけであれば、こちらを試してみてはいかがでしょう。
kazto

2018/06/06 05:32

・・・おや? 手元で「./darknet classify cfg/tiny.cfg tiny.weights data/dog.jpg」実行したら成功しちゃったぞ・・・?
Spacekoki

2018/06/06 05:37

今使用しているPCがPentium 1.2GHzでRAMが725MBのを使っているのでノーマルでは2時間以上経っても解析が終わりませんでした。Tiny-yolov3も使ってみましたが、それだと10分くらいでかいせきしおわりましたが、SEGVエラーが起きました。
kazto

2018/06/06 05:44

そうですか!だいぶスペック限定されていますね。そこまでだとメモリ確保に失敗している可能性も出てきますね。 実行中マウスの動きがカクカクしたりしますでしょうか。 別ターミナルでtopコマンドでメモリの状況見ながらtinyで実行した場合、メモリ状況がどうなるか、も確認をお願いします。
kazto

2018/06/06 05:44

ひょっとしてXも入れてないですかね?
Spacekoki

2018/06/06 06:04

解析中にカクつくことはないですね。 Xは入っています。LXDEを使っています。 メモリ・CPU共に実行時は100%になることはないですね。 せいぜいCPUが80%近くになるくらいです。
kazto

2018/06/06 06:26

CPUは落ちることに対して影響は考えられません。メモリが重要です。 当方の手元で最後まで動き、Spacekokiさんの環境で落ちた最大の違いはやはり使えるメモリの量ではないかと推測しています。 とは言え、メモリ原因で落ちると分かったところで、YOLOを動かすという目的は達せられないわけで、悩ましいところですね。。。 Spacekokiさんの上長さんにもうちょっとマシなスペックのマシンよこせ、と交渉する余地は無いでしょうか。
Spacekoki

2018/06/07 01:56 編集

メモリには全然負担がかかってないのですがスペックが原因の可能性が高そうですね。kaztoさんありがとうございました。
guest

0

自己解決

PCの単純なRAM不足が原因の可能性が高そうです。ちなみに自分の使ったPCのRAMは725MBでした。Darknet yoloを使うにはある程度のスペックが無いと使えないようです。残念(T_T)
*後日Raspberry Pi 3 Model B+でやってもダメでした。

投稿2018/06/07 01:55

Spacekoki

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問