ナニゴケをアップデートしました (Ver. 1.4.0)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別するWEBアプリ
https://www.nanigoke.net/

今回は、判別可能な種に、「アカイチイゴケ」、「コモチフタマタゴケ」、「ジャバウルシゴケ」、「トサカホウオウゴケ」、「ナガサキホウオウゴケ」、「ナメリチョウチンゴケ」が追加されました。また、16400枚だったTrainのデータ数は、19600枚になっています。ネットワークの構造は、微調整程度の変更。TensorFlow.jsのバージョンは、最新の2系にしました(どう変わったのかはぜんぜん知らん(笑))。それから、学習データの水増しにおいての左右フリップを、20%だけ行うようにしました。これ、今まで私は絶対絶対絶対絶対やりたくなかったのですが、あまり自己満足だけを追い求めるのは、使ってくださる方たちに悪い気がして、今回少し妥協しました。でも、今後は少しずつ割合を減らしていって、いつかはまた0%に戻したいと思います(「じゃないとダメ」って苔が言ってるような気がする…)。ちなみに、詳しく調べたわけではありませんが、今回ロスがぐっと減ってて少しムカついています(笑)。

その他、今回はさまざまな細かい修正をいれているのですが、主なものだけ列挙しておくと、まず、iOSからファイルを読み込んだ時に画像が回転することがもともとあって、これは一応すでに対応済みだったのですが、最新のiOS(バージョン13.4から?)ではなにか変わったのでしょうか、また再発していたので、使っていたJavaScript Load Imageっていうライブラリを最新のものにして直しました(ただ、ちゃんと調べていないので、なにか勘違いしているかもしれません)。それから、判別結果に表示される種名はGoogleの検索ページへのリンクにしておきました。それから、PCやスマホの横向き画面では、5位まで表示していた判別結果を7位までとしました。さらにその表示形式の場合のみ、判別に掛かった時間を下に小さく表示するようにもしましたので、ちょっとしたベンチマークとしてお使いください。

1年ほど前ナニゴケを初めてリリースした時に、1年後の目標を「判別できる種の数120・Trainに使用したデータ20,000枚」と書きました。今回のバージョンがその課題の提出期限だと思い、ちょうど苔シーズンでもあるのでそれにも間に合わせたいと結構がんばったつもりです(ばたばたしていて、少し遅れましたが…)。でも、「Trainに使用したデータ20,000枚」はだいたい達成しましたが、「判別できる種の数120」にはぜんぜん届きませんでしたね。ごめんなさい。まあ少しだけ言い訳させてもらうと、やっぱり終盤のコロナが痛かった… 一番最後にバスに乗って苔の写真を撮りに行ったのは、去年の年末だったようで、その後は行動範囲が大幅に制限されてしまいました。今年に入ってから、私はまだ一度もタマゴケを見ていないのですが(!)、そんな春を過ごすことになるとは年始の頃には想像もできなかった… ただ、そのかわり徒歩圏内の身近な苔たちと向き合う良い時間になったのも事実です。半年前の自分が聞いたらびっくりしそうな、いくつもの発見がありました。探せばあるんですよ。ほんとにね…

一応、今回のアップデートで、いろいろ気になっていた細かい部分は作り終えました。気分的には、一段落です。ここから先は、もうただひたすらに学習データを増やしていくだけだと思っているので、やらないといけないことがはっきりしてずいぶんと気が楽になりました。

ナニゴケにはかなりの時間を割いてしまい、もうすでにCOSUMIに掛けた時間を超えちゃったんじゃないかと思っているのですが、なんか、やればやるほどゴールが遠くなるような感覚があって、じゃあなぜそうなるのかというと、自分で勝手にゴールを遠ざけているからなんですよね。一番最初に苔をやってみようと思いついた時(本当に遠い昔のことみたい…)に考えていたゴールは、もうとっくに通り過ぎているような気がします。別に自分が後ろに後退しているわけじゃない。まあ、いつか納得いくものができるんでしょうが、どうせならできるだけ早めのほうがいいなとは思います。

ナニゴケをアップデートしました (Ver. 1.3.0)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

今回は、結構大きめのアップデートになっています。まず、判別可能な種に、「エダウロコゴケモドキ」、「クビレケビラゴケ」、「ケゼニゴケ」、「スギバゴケ」、「ヒメジャゴケ」、「リボンゴケ」が追加されました。また、12600枚だったTrainのデータ数は、16400枚になっています。さらに、ネットワークの構造もいくらか改良しました。その中で、特に性能の改善が著しかったのが、通常のSENetとは別に独立して、Average Poolingで1×1ではなく2×2にするSE-blockを用意して、それも併せて両方いっしょにメインの出力と掛け合わせるというやつで、これがかなり汎化性能を上げました。で、そのあたりを頼りに、パラメータ数が増える形でネットワークを大きくもしました。さらにPredictを全体で1回だけではなく、中央を中心とした少し狭い範囲での2回目も行い、2つの結果を平均したものを、判別結果として表示するようにもしました。そして、TensorFlow.jsのバージョンも上げました。

ということで、もろもろかなり良い改善になっていると思います。判別可能な種の数は、なかなか増やしていくことができなくてちょっと辛いのですが、データ数には少し余裕が出てきました。5月6月の苔シーズンまでには、何とかある程度納得いく形にしたいと、自分で言うのもなんですが、今、結構頑張っています。

私の住む所の周りでは、コバノチョウチンゴケがすでにかなり目立つようになりました。春はすぐそこですね。

ナニゴケをアップデートしました (Ver. 1.2.0)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

今回は、判別可能な種に、「キヒシャクゴケ」、「シモフリゴケ」、「フジノマンネングサ」が追加されました。また、11100枚だったTrainのデータ数は、12600枚になっています。

先日、白駒の池にまた行ってきました。もう二度と行かなくてもいいようにと、かなり気合入れて向かったのですが、なにからなにまで、もうどこまでいっても終わりのない感じで、軽く絶望しながら戻ってきました。今更ながら、とんでもないこと始めちゃったかもしれない…(笑) まあ、ぼちぼちがんばります。

ナニゴケをアップデートしました (Ver. 1.1.0)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

今回は、判別可能な種に、「チャボヒラゴケ」と「ヒメシノブゴケ」が追加されました。また、10300枚だったTrainのデータ数は、11100枚になっています。TensorFlow.jsも最新のバージョンにアップデートしておきました。NNの構造などは、基本的に何も変えていません。

つい最近、世の中には「標本同定会」と呼ばれる、とっても素敵な催し物(笑)があることを知りました。ただ、夏休みの8月に開かれることが多いみたいで、うーん、また一年後ですね…

苔とWeb

ナニゴケ作ったので、Web上の苔にまつわるもろもろを調べて、一度ブログ記事にしてみます。こういうのを書き残しておけば、何年か後に見返した時に役に立つだろうという当初の意図だったのですが、結果的には、ここにしか残らなそうな内容は特に含まれていません。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

まず、Googleで「苔」という単語を検索した時の、検索結果件数(って言うのかな?)ですが、検索する条件などにもよるのでしょうが、私の環境では「約 38,500,000 件」となります。この数字の大きさを理解するために、私は反射的に「囲碁」という単語と比較してしまうのですが(笑)、そちらは「約 40,100,000 件」となり、まあだいたい似たような規模のワードようです。そして、検索結果の上位には苔の販売業者のサイトが多く並んでいて、これはちょっと「囲碁」とは様相が違いますね(こういう比べ方もなんですが、碁盤碁石を販売するサイトが上から並ぶことはないですからね)。分かりやすいところでは、楽天が5番目に私の環境では来ます。私は苔を自分で育てるということに興味が無い人ですし、ましてや買うとか発想にも無いですが、世の中的にはそんなものみたいです。こういうの、正直、私は最近まで知りませんでした。それにしても、上の方のサイトもそんなにリンクを集めている感じはないですね。「囲碁」だと日本棋院という強敵もいるのですが(笑)、そんなのも無いし、これは意外とスカスカかな? なんとか一気にぶち抜きたいですね。そして、上位のサイト見ている限り、「苔」はけっこうしっかりと蘚苔類のことみたいです。

次に時系列で見るために、Google Trendsでも調べてみました。最初は「苔」。


まず気が付くのは、季節性があるということですね。ピークは5月6月みたいです(ナニゴケもう少し早くリリースしたかった…(笑))。そして、長いスパンで見ると、右肩上がりの傾向も見て取れます。「最近、若い女性に苔が人気で…」とか聞くと、「また言ってるよ」って正直思っていたのですが、どうやらまんざら嘘でもないようです。で、この最近の苔人気の中心は、苔テラリウムとか苔玉など、観賞用に少量の苔を屋内で育てたいという需要にある気がします。「苔 テラリウム」だとこんな感じ。


他の植物と同じく、苔を観察し愛でる人はいつの時代もどこの国にもいるし、日本だと庭など屋外で苔を積極的に育てるということは昔からあったと思いますが、「屋内」というのが新しいところでしょうか? ちなみに、Google Trendsでの「苔」が蘚苔類のことなのかどうかは、当然のことながらかなり微妙です。

私も普段から、苔についてWebで調べることが多いですが、まあ嘘が多いです。「どんな分野でもそんなもの」って声が聞こえてきそうですが、かなりはっきりと相対的に不正確な情報が多いと感じています。理由はいくつか考えられるようにも思いますが、これといった説明を一言でするのはちょっと難しいですね。Googleの画像検索で〇〇ゴケを検索した時も、コンテンツの不正確さに、ウェブサイトの論理構造のまずさと、Googleのバカさ(笑)が相まって、かなり酷いことになってるんですが(でも、今見てみると以前よりだいぶましな気も…)、これがナニゴケを作ろうとした動機のひとつだったりもします。

そんな感じで、本当に役に立つサイトが少ないなと感じている私が、いつも勉強させていただいている、おすすめサイトをひとつ紹介します。

そよ風のなかで Part2
https://soyokaze2jp.blogspot.com/

おそらく中の人はごりごりの蘚苔類の専門家ではないはずですが、根拠のない断定とかするような方ではなく内容も信頼できますし、このブログが無かったら、ナニゴケももっと酷いものにしかならなかったと本当に思います。で、このブログの中の人、 左木山祝一さんが、つい最近、「コケの国のふしぎ図鑑」という書籍を出されました。たくさんお世話になったお礼に、私もできるだけ早く購入させていただきます。おまいらも買え!

次は苔の図鑑についてのブログ記事を書くかもしれないし、書かないかもしれないし、やっぱり書くかもしれない。

[追記 2020/4/13]
「コケの国のふしぎ図鑑」はあの後すぐに購入しましたが、とても良い本でしたよ。写真がどれもとても美しく、見開き2ページ使って1枚の写真という箇所が結構あるのですが、これはなかなか斬新ですね(写真は基本すべて大き目で、ジャゴケの雄器托は6cmぐらいある(笑))。他の方にも強くおすすめできますが、とはいえ包括的な蘚苔類の図鑑ではないですし、フィールドに持ち出すにもあまり向かないと思うので、そこはご注意ください。お酒でも飲みながら、ペラペラめくっていると楽しいと思います。

「そよ風のなかで」は、2014年7月からのページビューが現時点で467,358となっているのですが、これちょっと少なすぎじゃないでしょうか?(こんな素晴らしいサイトがなんで…) ナニゴケやる以上、平凡社の図鑑は10万しようが私は買わないわけにはいかないのですが、その理屈から言ったら「そよ風のなかで」にも同じかそれ以上のお金をお支払いしてもいいくらいで、本当に感謝の言葉もありません。この時代、学術的な図鑑はデジタルでないとさすがに使い勝手が悪いと、いつも強く感じています。スマホ・タブレット用のネイティブアプリで、だれか勝負する人いないのでしょうか?

ナニゴケをアップデートしました (Ver. 1.0.2)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

9400枚だったTrainのデータ数を10300枚に増やしました。それ以外は何も手を入れていませんあと、TensorFlow.jsのバージョンを上げました。

先日、自宅のすぐそばに、ものすごい「フロウソウ」スポットを見つけてびっくりしました。灯台下暗しとはまさにこのこと…

[追記 2019/8/3]
最終的にはデータを10万枚にするのが目標なので、だとしたらここが一合目ですかね。先は長いですが、必ず登り切りたいと思います。でも、8月は本当に外に出たくないよ。こんなことを言ってて、去年もこの時期の写真ほとんど撮れなかったのですが…

ナニゴケをアップデートしました (Ver. 1.0.1)

ナニゴケのNNを新しくしました。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

8400枚だったTrainのデータ数を9400枚に大急ぎで増やし、その他もろもろ細かい修正を入れて学習し直したので、精度が少し上がったと思います。

2週間後ぐらいまでにもう一度、ある程度しっかりした修正を行い、そこから先はゆっくりしたペースで、改良を続けたいと思います。使ってくれる方が少ない間に、目立つ欠点はさっさと直してしまいたい…

苔の種類を判別するWEBアプリを作ってみました

苔(コケ植物/蘚苔類)の種類を判別するWEBアプリを作ってみました。

ナニゴケ – 苔の種類を判別します
https://www.nanigoke.net/

かなり以前からずっと作ってたやつで、できることなら、もう少しまともなものができてからリリースしたかったのですが、それを言っていると、どこまでいっても、もう本当にきりがないので、ここらで一旦、区切りをつけて、一回、表に出したいと思います。

中身はTensorFlow.jsを使ったよくある画像分類で、学習データはすべて私がデジカメで撮った写真です。労力の8割以上(将来的にはおそらく9割以上になると思う)は、この学習データを用意するところに掛かっています。写真は全部で、約13,700枚撮りましたが、結局、実際に学習に回せたのは8,700枚ほど。ある程度正確にいこうとすると、まあこんなもんですね。特に、最初の頃撮っていた分が、かなりの量ゴミになりました。ただ、今はもう、学習データ作成のコツを掴んだというか、やり方が定まってきて、だいぶいい感じにいろんな作業ができるようになりました。

先ほど、一番最初に撮った写真のタイムスタンプを確認しましたが、2017年4月でした。てっきり、さらにもう1年前だったような気がしていたので、うまく言えませんが、なんかちょっとほっとしました。もちろん、それでも時間が掛かりすぎなのは間違いないのですが… 実は去年の今頃、白駒の池に泊りがけで行ってきたんですよ。このナニゴケの為だけに(笑)。あれから一年ですか… 本当になにをしていたんでしょうね? ちなみに、もう一度今年中に白駒の池に行く予定にしてたりします。

スマホでもPCでもちゃんと動いてほしいと思っているこのWEBアプリですが、iOSはちょっと大き目なNNのモデル使うと、特に2回目以降のpredictでよく固まります。これはSafariだけではなく、Chromeでも同じなのでiOSの問題に思えるんですが、意外と情報少ないです(なんでなんだろう?)。ちゃんと動けばかなり速いので、逆に余計いらつくんですよね(笑)。以前、white shadeでも同じような感じだったのですが、あっちは今は大丈夫そうだし、よくわかりません。リリース直前になって、急遽かなりサイズの小さいモデルを作って、それを使うことにしたのですが、iOSの端末に全体の足を引っ張られるのはちょっとなんなので、もうiOSだけフォールバックさせるかもしれません。ちなみに、[ 設定 > Safari > 詳細 > Experimental Features > WebGL 2.0 ]がONになっていると、固まらなくなるような気がしますが、代わりにそこそこ遅くなります。Androidは、よくわかりません。安価で今どきな端末を、ひとつ買ったほうがいいかな? とりあえず、アクセスログ見て適当に判断してみます。

肝心の判別精度は、正直、現時点ではちょっとあれなんですが、とりあえず1か月以内にある程度はなんとかします。そして、1年後までには、十分な実用性が出せるように、ちょっと真剣に頑張ってみたいと思います。今すぐに冬の写真を、というわけにもいかないので、1年ください。そしてそして、このナニゴケ、できれば自分の人生かけたライフワークにしたいと考えていて、せめて10年後には、本当に良いものにしたいと思っています。COSUMIはいつまで続けるのか、私自身もよく分かりませんが、こっちは最期の日まで止めるつもりはありません。今現在、「判別できる種の数78・Trainに使用したデータ8,400枚」なのですが、1年後の目標は、「判別できる種の数120・Trainに使用したデータ20,000枚」、最終的な目標は、「判別できる種の数200・Trainに使用したデータ100,000枚」、これでいきたいと思います。そこまでいったら、日本で撮影した苔の写真を世界で一番たくさん持っていることになりそうですね(笑)。今は何番目ぐらいなのでしょうか?

それにしても、ここ最近このWEBアプリに掛かりっきりで頑張っていたので、さすがにちょっと疲れました。机の上に散乱している大量の苔たちも、一度片付けたいと思います(笑)。何種類あるのかも、もうよくわからんけど、20はあるな… 顕微鏡の覗き過ぎで、目を悪くした気がして、とってもやな感じのこの頃です。

この文章を読んでくださっている方の大半は、おそらく苔なんて興味ないと思うのですが、苔はいいよ! ぜひ、ナニゴケ使えるスマホを持って、家の周りの苔を探してみてください。私も実際に外で使ってみましたが、予想以上に面白かったです。

[追記 2019/7/3]
ナニゴケ作っている時に気づいたのですが、ブラウザによってNNの出力が結構変わってきますね。white shadeのレベル設定があれになるので、もう見なかったことに…(笑)