多くの人にとって、人生で最も高価な買い物はおそらくマイホームの購入だろう。莫大な金額がかかる住宅の建築だが、その費用は使用される床材やドア部材の量に左右される。戸建て住宅1軒であってもその使用量は膨大であり、使用量の正確な算出には多くの時間を要するだけでなく、知識や経験も求められる。こうした状況下でもミスなく、正しい価格をスムーズに顧客に伝えるために、間取り図画像から住宅ごとの「床材やドア部材の量」を算出するアルゴリズム開発コンペティションが開催される運びとなった。 そして、見事このコンペで1位に輝いたのがチームDaShers。出身大学や専攻、そして勤務先もバラバラである4人はどのような経緯でチームを結成し、コンペに参加することになったのか。居住地も全く異なる中でどのように協働し、1位という成績を納めることができたのか。取材当日、都合がつかなかったpomerannyさんを除く3名にコンペへの参加経緯や、取り組みにおける工夫について話していただいた。
縁が繋いだメンバーで、前回参加したコンペの経験を活かすべく参加を決意。
shun601:この4人は昔から知り合いだったわけではありません。DataScienceHubというオンラインコミュニティでの出会いをきっかけに、ある時期から一緒にコンペに参加するようになりました。 ねこたんく:新しいコンペが始まると、誰ともなくコミュニティの中でこういうコンペが始まってますね、という声が上がるんです。そこで興味のある人が集まると、じゃあチームとして出てみようかという話になったりします。今回のコンペも、たまたま興味を持って集まったのがこの4人だったという、本当に運というか縁ですね。 yshr10ic:たしか、最初に声がけしたのは私だったと思います。ちょうど自分が家を探しているところで、これは今の私にぴったりなコンペではないかと。以前にも漁業×AIチャレンジの物体検出コンペに参加したことがあり、その知見が応用できそうだったというのも参加を決めた理由の一つです。それに、賞金も魅力的でした。 ねこたんく:実は、yshr10icさん以外の3人は、以前にセグメンテーションのコンペにチームとして参加したことがあったんです。今回は物体検出とセグメンテーションの組み合わせだったので、yshr10icさんと私たち3人で役割分担し、それぞれが前回の経験を活かすことができれば好成績を収められるかもしれないと思いました。
スコアを伸ばすより、試したいライブラリやモデルを試す感覚。
shun601:前回の経験がうまく活かせるかもという期待もありましたが、不安もありました。具体的には、用意されたデータの教師ラベルにバラつきがあり、対応が難しそうだと感じたのです。このドアはカウントした方がいいのか、しない方がいいのか。そうした判断にバラつきがあるため、うまく物体検知やセグメンテーションできるかが不安でした。 ねこたんく:私はとにかくドメイン知識が全くなかったので、そこが心配でした。間取り図の見方すら分からない中で、きちんと学習させて、予測できるようになるのかなと。 yshr10ic:データを見て、私も正直難しそうだと感じました。データ自体がかなり小さいものも混じっていましたし、検出対象のドアも形状がバラバラで、中には極端に細長いものも混じっていたので。そうは言っても、まずは手を動かさないと始まらないので、前回参加したコンペで作成したコードを修正しながら流用したら、案外スムーズにサブミットまでこぎつけられました。 shun601:明確に決めたわけではありませんが、物体検出はyshr10icさんにお任せし、残りの3人はセグメンテーションに注力しようという話になっていたので、yshr10icさんの方で物体検出の土台をスムーズに作ってもらえたのはとても助かりました。 yshr10ic:そんなこと言ってもらっておきながら申し訳ないですが、実は土台を作ってからは、スコア向上のためというよりも自分が試したいライブラリやモデルを好き勝手に試していました。前回試せなかったものを試すチャンスだと思って、自由にやらせてもらっていました。
最終的な決め手はアンサンブル。
shun601:yshr10icさんが粛々と物体検出を進めてくれている間に、私たちはセグメンテーションに着手しました。ベースラインのモデルに関しては、今日は欠席しているpomerannyさんが作ってくれたので、私の方では推論結果の確認をメインで行いました。400枚ほどある推論結果全てに目を通しながら、間違っている部分はどこか、間違え方に傾向はないか、その対策はどんなものが考えられるか。丁寧にチェックしながら改善していきました。 yshr10ic:元々、テストデータは図面方向もバラバラだったので、データ拡張を丁寧に行ったり、shun601さんの作業は大変だったと思います。 shun601:確かに、大変でした。図面の線の濃さも違えば、リビングと寝室の境目がぼやけていたり、人間の目で見ても判断が難しい場所も多かったですから。そこは、うまく閾値を変えて対応しました。 ねこたんく:私が担当したのは、コードチェックの部分ですね。他の方が書いてくれたコードを実行してみて問題なく稼働するかどうかをチェックしたり、アンサンブルの最適な割合を探したり。 yshr10ic:最終的に効いたのはアンサンブルの部分かなと思います。複数モデルを用いて、それぞれ異なる推論結果を組み合わせて平均値を取りました。ここは、ねこたんくさんの貢献が大きいです。私の担当の物体検出に関しては、本当に特殊なことはしていません。強いて言えば、今回採用したモデルが課題にフィットしたという印象です。
1位を獲るだけでなく、獲れた理由まで明確に説明できるようになりたい。
shun601:今振り返ってみてもなぜ1位が取れたのか、実はよく分かっていません。もちろん、データ拡張に力を入れたり、適切なモデルやライブラリを選定したり、アンサンブルも丁寧に行なったりと頑張った点はいくつかあります。ただ、明確にこれができたから1位が取れたという確証がないのです。ここをきちんと説明できるようになれば再現性も高まると思うので、次回以降の宿題にしたいですね。 yshr10ic:1位は取れたものの、私も反省点はあります。特に心残りだったのが、間取り図の画像処理の部分。間取り図の周りに余白が多くあったので、ここを取り除けば精度が上がるという仮説を立てたものの、それをどうすれば実現できるのか分かりませんでした。改善の方向性が見えていただけに、自分のスキルさえあればもっとスコアが上がったという事実を突きつけられた感覚がして悔しかったです。今後もコンペに参加しながら、アイデアを形にできるスキルを身につけていきたいです。 ねこたんく:私は、比較的経験が浅いこともあって、どちらかというと自らアイデアを出すというよりも、他のメンバーのアイデアを試したり確認するという立ち位置でした。もちろん、それはそれで大事な役目だとは思いますが、今後は自分からもアイデアを提案できるように、もっともっと引き出しを増やしていこうと思います。
コンペ参加を検討している方へのメッセージ
shun601:コンペ毎のテーマを見て、自分が得たい知識や経験に合わせて参加するコンペを選ぶといいのではないでしょうか。私は今まで画像系のコンペを中心に参加してきたので、幅を広げるためにテーブルデータや自然言語系のコンペにも参加していこうと思っています。 yshr10ic:自ら試行錯誤する中でスキルが身につくだけでなく、他の参加者の解法からも多くのことを学ぶことができるのが、コンペのメリットだと思います。また、複数のコンペに参加することで、インプットした知識を応用する機会も得られるので、定期的に参加するのをお勧めします。 ねこたんく:一人で参加するのは気が引けるという方は、私達のようにチームで参加するのも一つの手だと思います。私達は居住地もバラバラですが、各種資料はGoogleドライブで共有、打ち合わせはZoomで行い、コード管理もスプレッドシートを活用することで問題なく協働できました。今は便利なツールがたくさんあり、チームでの参加ハードルも下がっているのでぜひ検討してみてはどうでしょうか。 <パナソニック株式会社主催「間取り図解析アルゴリズム作成」の詳細はこちら>