tag:blogger.com,1999:blog-824494511441839917.post5607696258012341277..comments2023-10-19T01:23:08.158+09:00Comments on memo: Fully Convolutional Networks 〜 Chainerによる実装 〜 seiya.kumadahttp://www.blogger.com/profile/17517678672151970431noreply@blogger.comBlogger23125tag:blogger.com,1999:blog-824494511441839917.post-66963239456823263492019-03-26T11:09:57.873+09:002019-03-26T11:09:57.873+09:00なぜsoftmaxcrossentropyの値が1を超えているのですか。なぜsoftmaxcrossentropyの値が1を超えているのですか。Anonymoushttps://www.blogger.com/profile/08473152988506426641noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-21515021014148198052017-07-03T20:31:48.891+09:002017-07-03T20:31:48.891+09:00非常に勉強になります。
ただ、当方まだchainer初心者ですので基本的なところから質問させて下さい...非常に勉強になります。<br />ただ、当方まだchainer初心者ですので基本的なところから質問させて下さい。<br /><br />train.pyを実行すると、下記のようなエラーが発生したですが、この原因は何でしょうかな。私自身このような分野で初心者なもので申し訳ありませんが、ご返信を<br />いただけると幸いです。<br /><br />Traceback (most recent call last):<br /> File "train.py", line 5, in <br /> from mini_batch_loader.mini_batch_loader import *<br />ImportError: No module named mini_batch_loader<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-38393214775493483882016-11-05T16:42:34.726+09:002016-11-05T16:42:34.726+09:00ワガママなお願いだとは思うのですが、実験に用いたテキストファイルをアップしていただけないでしょうか?...ワガママなお願いだとは思うのですが、実験に用いたテキストファイルをアップしていただけないでしょうか?<br />下記のようなエラーが発生したのですが、プログラム上のミスなのかテキストが間違っているのか分からず困っております。<br /><br />Invalid operation is performed in: SoftmaxCrossEntropy (Forward)<br />Expect: in_types[1].ndim == in_types[0].ndim - 1<br />Actual: 4 != 3Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-87394416342448748632016-09-27T16:30:24.042+09:002016-09-27T16:30:24.042+09:00匿名さんが参考にされた論文の方が、ネットワークの構造が詳細ですね。時間を見つけて読んでみます。私が読...匿名さんが参考にされた論文の方が、ネットワークの構造が詳細ですね。時間を見つけて読んでみます。私が読んだfcnの文献は少々読み取り難い箇所があります。Nanの件も情報ありがとうございます。<br />fcnについての私の最後の投稿はこれです。<br />http://seiya-kumada.blogspot.jp/2016/07/fully-convolutional-networks-chainer-2.html<br />fcn32s -> fcn16s と精度はあがりましたが、fcn8sはだめだめでした。なので投稿していません。seiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-8872266360820544432016-09-26T17:46:42.613+09:002016-09-26T17:46:42.613+09:00こちらの記事を参考に
http://lmb.informatik.uni-freiburg.de/P...こちらの記事を参考に<br />http://lmb.informatik.uni-freiburg.de/Publications/2016/OB16a/oliveira16icra.pdf<br />を実装しました.<br /><br />こちらの各層の出力を見てみますと以下の図のように,hightとlow交互の出力が逆畳み込みをかけるにしたがって強く表れてきます.<br />https://www.dropbox.com/s/c7nuh98r6bfae0j/result1.png?dl=0<br /><br />こちらの,記事の各層の出力はどのようなものになっているのでしょうか?<br />私以外にもFCNにて同じような現象が起きている人はいないかと思い質問させて頂きました.<br /><br /><br />また,上の演算結果がNanになる問題はこちらの方法で解決できるかもしれません.<br />https://groups.google.com/forum/#!topic/chainer-jp/CEiBNsDD4Y4Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-77907378076271850502016-09-08T19:41:20.336+09:002016-09-08T19:41:20.336+09:00大変ありがとうございます。
胸のつかえが取れました。大変ありがとうございます。<br />胸のつかえが取れました。seiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-8703692512591661862016-09-08T17:00:25.904+09:002016-09-08T17:00:25.904+09:00https://github.com/pfnet/chainer/blob/master/chain...https://github.com/pfnet/chainer/blob/master/chainer/functions/math/basic_math.py<br />ここで既に定義されているので、variable同士の基本的な演算(四則演算や絶対値など)はそのまま可能だと思います。もちろん定義されても問題はないと思いますが、今後の参考まで。Anonymoushttps://www.blogger.com/profile/12167489755340292722noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-9957510476783478952016-08-04T13:53:00.699+09:002016-08-04T13:53:00.699+09:00やはりゼロ除算ですか。勉強になります。
Amazon EC2 をお使いとのことですが、
私は手持ちの...やはりゼロ除算ですか。勉強になります。<br />Amazon EC2 をお使いとのことですが、<br />私は手持ちのGPU環境で実行していますので<br />何らかの違いはあるのでしょう。<br />私の環境では1エポック目の数十個以内のtraining dataで<br />エラーが生じるのでかなりの確率だと思います。<br />ここまで来たらきちんと実行させてみたかったですが残念です。<br />どうもありがとうございました。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-28235878340075833422016-08-03T22:03:11.464+09:002016-08-03T22:03:11.464+09:00CNNに限らずDeepなネットワークは、設定するハイパーパラメータの値、あるいは入力値によっては、n...CNNに限らずDeepなネットワークは、設定するハイパーパラメータの値、あるいは入力値によっては、nanを返すことがあります(backpropagationのとき計算する勾配計算で0割りが発生しているのかもしれませんが、確かな原因は追跡していません)。今回のプログラムを組み始めた当初も、頻繁にnan が出ていましたが、ここにアップしたプログラムではそのような症状は治まっています。と思ったのですが、まだ出るのですね。何をしたらnanが出なくなったのかメモしておけば良かったのですが残念ながら記録を残していません。。。seiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-62387404419758794942016-08-03T17:40:02.918+09:002016-08-03T17:40:02.918+09:00ありがとうございます。
こちらのページに辿り着いた縁で
色々勉強させて頂いています。
ご指摘のページ...ありがとうございます。<br />こちらのページに辿り着いた縁で<br />色々勉強させて頂いています。<br />ご指摘のページの修正版のプログラムを試しに実行してみましたが、<br />train_32s_with_any_size.pyの98行目で<br />cudaErrorIllegalAddress: an illegal memory access was encountered<br />とのエラーで落ちてしまいます。<br />その手前の95行目のloss.backward()でloss.dataがおかしな値になり、<br />これを参照するだけでエラーが発生しているように見えます。<br />一体何が起こっているのか、お心あたりはありますでしょうか。<br />math.isnan()のチェックを入れたのは何故でしょうか。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-33640462529657572932016-08-02T09:13:49.084+09:002016-08-02T09:13:49.084+09:00最初の質問に対してはYESです。
あと、一手間かけた理由は以下の通りです。
これを実装したころは、V...最初の質問に対してはYESです。<br />あと、一手間かけた理由は以下の通りです。<br />これを実装したころは、VOC2012データセットのラベル画像(png)がインデックスモードで<br />保存されていることを理解しておらず、わざわざpngからカラーテーブルを取り出し<br />RGBからインデックスへ変換する関数を書いておりました。この関数の結果をpklで<br />保存していたわけです。<br />こちらでは、このあたりを修正したバージョンを解説しました。参考になるかもしれません。<br />http://seiya-kumada.blogspot.jp/2016/07/fully-convolutional-networks-chainer-1.htmlseiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-71757392500332532512016-08-01T18:48:28.208+09:002016-08-01T18:48:28.208+09:00非常に勉強になります。
ただ、当方まだchainer初心者ですので基本的なところから質問させて下さい...非常に勉強になります。<br />ただ、当方まだchainer初心者ですので基本的なところから質問させて下さい。<br /><br />IMAGE_DIR_PATH は '.../JPEGImage_224' などと定義されていますが、<br />png形式の画像ファイルがあることを想定しているという理解で<br />正しいのでしょうか。<br /><br />また SEGMENTATION_CLASS_DIR_PATHにはpkl形式のファイルがあることを<br />想定しているようですが、<br />VOC2012のsegmentationの教師データはpng形式ですよね。<br />それをpkl形式にあらかじめ変換しておくということになるのでしょうか。<br />plt.imread したデータを即 pickle.dump という感じでしょうか。<br />なぜこのような一手間をかけるのでしょうか。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-30426688678765957532016-07-29T20:14:53.914+09:002016-07-29T20:14:53.914+09:00softmax_cross_entropyにミニバッチを渡しときは、ミニバッチ内での平均値が返ります...softmax_cross_entropyにミニバッチを渡しときは、ミニバッチ内での平均値が返ります。なので、上記プログラムでは<br />loss.data * TRAIN_BATCH_SIZE<br />のようにバッチサイズをかけて合計値に戻しています。seiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-48200661840154101592016-07-29T19:16:08.825+09:002016-07-29T19:16:08.825+09:00ありがとうございます、大変勉強になります
> channelの軸に沿って
というのは、ピクセ...ありがとうございます、大変勉強になります<br /><br />> channelの軸に沿って<br />というのは、ピクセルごとにsoftmaxの結果がもっとも大きかったchannelのindexとtargetのピクセルのindexのクロスエントロピーを計算できる、ということでしょうか? ミニバッチにした場合は、バッチの合計が得られるのでしょうか?cvstudentnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-21690680853754335462016-07-29T16:40:35.110+09:002016-07-29T16:40:35.110+09:00はい。channelの軸に沿ってargmaxが実行されます。
あと、上記のプログラムではcalcul...はい。channelの軸に沿ってargmaxが実行されます。<br />あと、上記のプログラムではcalculate_accuracyをわざわざ実装していますが、F.accuracy(ignore_label=-1,...)とすれば良いことが後で分かりました。<br />詳細はこちらをご覧ください。<br />http://seiya-kumada.blogspot.jp/2016/07/fully-convolutional-networks-chainer-1.htmlseiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-42181416366588828982016-07-29T13:29:56.960+09:002016-07-29T13:29:56.960+09:00わかりやすい記事ありがとうございます、ところでloss関数のところがわからないのですが、デコーダーの...わかりやすい記事ありがとうございます、ところでloss関数のところがわからないのですが、デコーダーの出力のシェイプはクラス数だけチャンネル数をもったw x h x channel で ターゲットのシェイプは w x h だと思うのですがどのようにlossを計算しているのでしょうか、softmax_cross_entropy で適切に処理されているのでしょうか?cvstudentnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-53981389110043210432016-07-08T20:33:51.192+09:002016-07-08T20:33:51.192+09:00ここ
http://docs.chainer.org/en/stable/tutorial/func...ここ<br />http://docs.chainer.org/en/stable/tutorial/function.html<br />を見て書きました。<br />backpropagationの定義が必要だと思います。<br />違うのかな。seiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-8035666036675642952016-07-08T12:45:03.558+09:002016-07-08T12:45:03.558+09:00add.pyについてですが、chainer.Variable同士は普通に加算できるのではないでしょう...add.pyについてですが、chainer.Variable同士は普通に加算できるのではないでしょうか。<br />つまりmyfcn.py の 94 行目、<br />h = add(p3, u4, u5)<br />は<br />h = p3 + u4 + u5<br />手元で試していないので、間違っていたらすみません。Anonymoushttps://www.blogger.com/profile/12167489755340292722noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-62477479530682750952016-07-04T10:17:34.990+09:002016-07-04T10:17:34.990+09:00とてもご丁寧にご返信いただきありがとうございます。
早速試してみようと思います。とてもご丁寧にご返信いただきありがとうございます。<br />早速試してみようと思います。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-88934288629529962042016-06-29T20:57:17.776+09:002016-06-29T20:57:17.776+09:00学習結果を保存したファイルです。PythonのcPickleというモジュールを使って、オブジェクトの...学習結果を保存したファイルです。PythonのcPickleというモジュールを使って、オブジェクトのserializationを行っています。読み込む時は同じモジュールにあるload関数を使います。詳細はserializationという単語でググってみて下さい。seiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-1619501288599715852016-06-28T21:00:35.991+09:002016-06-28T21:00:35.991+09:00FCNの実装方法についてわかりやすくまとめられており、参考にさせていただいております。
実装にあたっ...FCNの実装方法についてわかりやすくまとめられており、参考にさせていただいております。<br />実装にあたってとても初歩的な質問で恐縮ですが、プログラム中で参照されている<br />「voc2012_myfcn_{i}.pkl」というファイルはどのような構造で何が書かれて<br />いるのでしょうか<br />私自身このような分野で初心者なもので申し訳ありませんが、ご返信を<br />いただけると幸いです。Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-14575648106905261042016-04-16T15:40:03.616+09:002016-04-16T15:40:03.616+09:00お役に立てて何よりです。
間違い等あればご指摘ください。
お役に立てて何よりです。<br />間違い等あればご指摘ください。<br />seiya.kumadahttps://www.blogger.com/profile/17517678672151970431noreply@blogger.comtag:blogger.com,1999:blog-824494511441839917.post-6196627927341859832016-04-15T10:33:54.966+09:002016-04-15T10:33:54.966+09:00論文からの実装がなかなかできず苦しんでいたのですが、本当に参考になりました。コードを見ることで論文の...論文からの実装がなかなかできず苦しんでいたのですが、本当に参考になりました。コードを見ることで論文の読み方や実装の仕方などが見えてくるので、よろしければこれからも実装の手順なども紹介してくださると嬉しいです。<br /><br />有意義な記事、ありがとうございます。 Anonymousnoreply@blogger.com