こんにちは!イメージングシステムグループの二宮です。2020年2月に入社し、画像処理の基礎知識を日々学びながら、機械学習モデルのアルゴリズムを開発したり、デプロイメント方法を検討したりしてAIシステム開発に携わっています。「AIの仕事は実際何をやるの?」や、「実務未経験者でも大丈夫と言われてもどこまで信じればいいのか・・・」などと思われる方も多いと思いますので、入社した経緯と普段の業務の一部を紹介してまいります。
今までの経歴
- 大学院卒業後、大手メーカーで組み込み系の製品開発(実装)(2年)
- 中小企業でIoT(環境の測定&制御)における組み込み系(設計・実装)+ ウェブページの開発(実装・DB設計)(2年)
これを見られて「なぜ最初からAIの仕事を選ばなかったの?」と突っ込まれることが多いので弁解させてください。
「同じ仕事を10年間続けて、時代が変わり自分の開発している製品も会社もなくなる。そうなると、それまでのスキルが活かせる次の仕事が中々見つからないから、転職しながらジェネラリストを目指すといいかもね。」と、大学院生時代に知り合いからいただいたアドバイスが心に響きました。続けて楽しくやれそうなのはAIだとしたら、まずはエッジ側、ウェブ開発の技術を身に着けてから最終的にAIの仕事に落ち着くキャリアにしようと決めました。そうしたら、その先もしものことが起きても、製品開発ができるための(最低限の)知恵はどこかで活かせると思いました。
案の定、最初に務めた製品開発は楽しく思えましたし、組み込み系の知識は貴重な知識だと思いましたが、ハードウェアの設計開発を含めて製品開発をやっている会社では、仕様・企画・開発・製造・品質管理・広告・営業の間で一つのモデルを通して市場に出すだけでも1年半はかかります。また、企業によっては仕組みも出来上がりすぎていて人も多いため、担当させてもらえる機能が限られてくることもあります。
「これなら10年間なんてあっという間に終わりそう・・・」
と思い、早いうちにAIに携われる仕事に変えてキャリアを磨きたい気持ちが強くなりました。
そこでセーフィーに出会い現在に至ります。
AIの仕事って何をやるの?
イメージングシステムグループの仕事は、学習アルゴリズムをコツコツと調べて、ネットワークをチューニングするだけではありません。学習モデルをシステム化できるまで幾つかのステップが必要なので紹介してまいります。
データ集め
恐らく、AIに取り組もうとしてこの段階で早速行き詰まる会社が多いのではないでしょうか。
我々も、カメラの映像をクラウドに貯めてお客様に閲覧できる環境を提供しているとはいえ、お客様のデータを覗くことは一切許されませんし、当然勝手に機械学習に使うこともできません。
そうすると、解決したい課題をお客様にヒアリングし、データを機械学習に使う許可を得て、初めてデータ選定に進むことができます。
アノテーション作業
画像だけを入力してモデルが勝手に賢くなっていく魔法のような学習の仕組みは中々ありません。
多くの課題を解決するには、手っ取り早いやり方として「正解とは何か」をモデルに学習させるという方法があります。
そうすると、「正解」というのは開発側で決めないといけませんし、自分達で画像一枚一枚に対し認識したいものに目印をつける(アノテーション)作業が必要です。
なので、画像にポチポチと点を付けてファイルに保存している間に一日が終わることもあります。
アルゴリズムの調査
「この課題に認識率と計算時間がピッタリのニューラルネットワーク構成を知っている!」という技術者であればこのステップは一瞬で終わるかもしれませんが、筆者を含める実務未経験者でも機械学習の上級者でも、多くの人は、最先端技術についていくために日々学習方法を調査しています(英語の文章が読めるといいことがあるかも・・・?)。
初心者は、「そもそもCNNとは」というところから勉強し始めるといいです!よく議論で出てくるネットワークの名前とその論文は以下です(筆者も最初は読んでいなくて会議についていくのに大変でした)。
実装/実験/評価
論文は、読むだけでは自分の課題に適したネットワーク構成かどうかが分からないことが多いです。そのときは自分なりに構成を調整してまず実装してみます!
昔なら、この段階ではニューラルネットワークをゼロから自分でコーディングしていました。認識率以前の問題で、そもそも全レイヤーの計算が合っているかどうかをデバッグするだけで無駄に時間が取られて中々研究が進みませんでした。
今では、ちゃんとアルゴリズムの検討だけに没頭できるように、ニューラルネットワークが簡単に作れるフレームワークを提供してくださる会社がたくさんあります!我々のチームで使っているのはTensorFlow 2.0 + Kerasです。
例えば、以下のネットワークの一層目だけを見てみましょう。
CNNに馴染みがない方は分からないかもしれないので、言葉にすると次のような計算になります。
- 入力画像から3x3の窓を切り取って、その入力に対して1個の出力を作ります。
- 入力画像から3x3の窓が切り取れる数だけ、1. を作ります。
- さらに、チャンネルの数だけ(画像では32)、2. を作ります。
言ってしまえば「ただの掛け算と足し算」ですが、このような計算を全レイヤに対して楽しくハードコーディングできる人はいるのでしょうか。
TensorFlow 2.0 + Kerasなら一行です。
layer = tf.keras.layers.Convolution2D(32, (3,3), strides=(1, 1), padding='same', activation='relu')(input)
こうやって一層一層を重ねれば、ニューラルネットワークの作成があっという間に終わります!
因みに、筆者にとっては初めてのPython開発となりますが周りの方のご指導の下なんとかやっております!(どんどん新しいことにチャレンジさせてくれる会社に感謝)
POC
実装したモデルを学習させ評価して、納得できる結果が得られたらプラットホームに載せるステップに進みます。リアルタイムで画像を取得しながら、以下について様子を見ながら開発の方向性を見ていきます。
- モデルをさらに学習させるのか
- データを貯めてから学習させるか
- どこまでモデルに汎用性があるのか
- 処理時間はどれくらいかかるか / 同時アクセスの数に見合った処理時間なのか
これらのステップを繰り返しながら課題解決に挑んでいます!
そもそもなぜセーフィーに入社を決めたのか
AIをやるにはある程度の余裕が必要
これまで書いたように、モデルの学習からPOCができるまでのプロセスは簡単にできることではありません。
転職を考えるとき、自分に高い技術力を求められる分、会社側に開発の環境がちゃんと整っているかを厳しい目で見てもいいと思います。特にAIという分野は、一つひとつの実験には失敗の可能性が十分にあることを会社に理解してもらう必要があります。でないと、自分の成果物に満足できないのに、改善する余裕がないまま提出する非効率的な開発の日々が進んでいきます。「ちゃんと時間をかけていいものが作りたい」というのは転職活動当時の思いでした。
入社を決めるときの私の判断基準
開発は余裕を持ちながらもしっかりと進められそうだったので、セーフィの印象はとても良かったです。面接を終えて一つだけモヤモヤとする点が残っていました。
「技術力はもちろん求めていますが、AIに関しては実務未経験でも大丈夫ですよ」の一言は、筆者も素直に受け入れることはできませんでした。
開発経験が4年間しかなかった自分に、内定をいただいたなんてもちろん嬉しい限りでした。ですが、都合のよすぎる話をすぐ疑ってしまう自分は考え始めました。
「最初は未経験者でも大丈夫だと言われて、後から全部一人で勉強して、全部自己責任で成果をちゃんと出せとは言われないよね?」
「データってそもそも集まっているのかな?材料がないところからいきなりAIをやろうとしているんじゃないよね?」
頭の片隅に残っている疑問が解消できないまま入社するのも良くないと思い、最後に実際のチーム体制と会社のビジョンについて聞いてみました。
以下、後の上司となる二方よりの返信です。
「画像処理のスペシャリストとプラットホーム・開発のスペシャリストがいるのでプロジェクトに参加していただき教育を行う」
「データが集められる仕組みを作るのと、協力してくださる取引先と信頼関係を築くのが第一フェーズでした。そろそろ第二フェーズに進んでもいいと感じているのでAIエンジニア枠を設けています。」
一気に安心できました。
繰り返しになりますが、機械学習のモデルは実装してみないと課題に適したものかどうかが分かりません。評価してみた結果、理想の数値に至らずに作り直しになることだって当然あります。時間=コストがかかるため、AIは「売り上げに困っているビジネスを救うもの」でもなければ、「教育できる先輩がいなくてもなんとなく始められるもの」でもありません。
なので、私がこの手の仕事に挑むなら、知恵が貯まっており、教育していただける環境であることと開発に協力していただけるお客様と組んで効率的な開発ができる環境であることの二条件はどうしても譲れませんでした。
いただいた返信を信じ入社を決めて、結果的にAIの知識をしっかり身に着けながら、エンジニアリングがより楽しく思える環境で働いています。
因みに、いいメンターに出会えると、一ヶ月ぐらいで以下の簡単な物体検出デモが作れるようになります:
最後に
以上、イメージングシステムグループの一部の業務と入社を決めた理由を紹介させていただきました。AIに携わりたいという気持ちになっていただけた方が一人でもいれば幸いです。
さらに多くのアルゴリズムを一緒に試してAIプラットホームを構築できる開発仲間をお待ちしております!