もしもいま、AI画像認識をイチから学び直すとしたら? セーフィー株式会社 リードエンジニア・橋本さんに聞く学習ロードマップ

めまぐるしく変化するテックの世界。技術を身に付けるうえで学ぶべきポイントや学習環境なども年々変わっています。

そこで「もしもいまの環境で、テックのことをイチから学び直すことになったら、自分はどんな風に勉強したいか」というIFストーリーを通じて、技術との向き合い方を考え直してみる企画「テック転生」。

今回お話を伺ったのは、クラウド録画型映像プラットフォームを提供する「セーフィー株式会社」のAI Vision グループでリードエンジニアを務める橋本貴博さん(@hsmtta)。“自分だったらこう進めたい、AI画像認識分野の学習ロードマップ”を伺いました。

画像認識分野は技術発展のめざましさが魅力

――まずは簡単に自己紹介をお願いします。

防犯カメラのクラウド録画サービスを提供する「セーフィー株式会社」に2021年に入社し、AI Visionチームのテックリードとして画像認識アルゴリズムの開発、エッジコンピューティングにおけるデバイス実装部分を担当しています。

言語としては、C++、Python、Mathematicaなどを使っています。画像認識モデルを作るときにPython、フレームワークでいうとPyTorchなどのように、プロトタイピングの形で、画像認識に加えてニューラルネットやディープラーニング以外の追跡アルゴリズムといったところをPythonで行うことが多いです。コンピュータビジョンの場合は一定の計算量が必要なことが多く、Pythonでできるのは既存のモジュールを組み合わせるところまでで、それ以上はC++が必要になってきます。設計段階で、数式変形や定式化、分析などをしたくなるのでMathematicaという数式処理システムを使うこともあります。

――画像認識と一口に言ってもさまざまありますが、橋本さんは具体的にどのような実務に取り組まれているのでしょうか。

撮影された映像に映っている人や車などの動きを認識し、後段の処理で活用できる構造化データに直していくというミッションに取り組んでいます。たとえば、工事現場で何か変な操作をして事故につながってしまう、ということを動作から分析したり、介護や医療の現場で患者さんの動きを分析して事故を防ぐようにしたりですとか。そういった分析や組み込みなどを担当することが多いですね。

構造化した結果がきちんとビジュアルに現れるのはやっていて面白いところですね。お客様とも距離が近いので、リアクションをダイレクトに受け取ることができるのもやりがいがあるところです。

――元々そういった画像認識分野に興味があったのでしょうか。

うーん、AIや画像認識そのものよりは、そこに使われている数学的なアルゴリズムや最適化に興味があったんです。技術に関する論文や情報がオープンソース化されていてすごく先進的なところに惹かれたんですよね。「画像認識で何かを成し遂げたい」という目的があったわけではなく、なんか面白そうだから勉強してみようかなという動機でした。

僕はもともと大学で物理を専攻していたんですが、物理の世界って50年とか100年とか長い期間をかけないと進展しない印象を持っています。しかし画像認識やAIは近年めざましいスピードで技術発展を続けていて、そういったところが面白いな、羨ましいなと思って画像認識分野を選びました。

学習ではまずは全体図をつかむのが大事

――では本題に入るのですが、橋本さんがプログラミングを学び直すとしたらどういう流れで進めますか?

もし転生したとしても僕がこれまで学んできた流れを踏襲するかなと思います。

僕は性格的に丸暗記が得意ではなく対象の原理原則や構造が気になってしまうタイプなので、まず全体の概観をつかんでから細々した要素を学びます。今回の分野でいうと、コンピュータサイエンスの基礎と理論を一通り学んだあと、自分の興味のある分野を伸ばしていく形になるかと思います。言語はアルゴリズムを実行するツールとして考えていて、特に「この言語を学ぼう!」という形で進めることはないですね。

物理学者の大家として知られるファインマンは「本当に理解したものは作れるはずだ、作れないならば理解していない」という言葉を残していて、この言葉にけっこう影響を受けています。勉強するときにも「どうやったら作れるだろう」という視点を持って全体像をつかんで細部を深堀りし、アルゴリズムを導くにはどう学ぶかを意識しています。エンジニアとして勉強して理解したかどうかは、それを作れるかどうかが基準になると思います。

――まずは全体像をつかむのが大事ということですね。

その通りです。総当たりで調べるよりも、「こういうものだよね」くらいの理解度で進めていくほうがいいと思います。

言語についてもプログラミングパラダイムを理解していれば、細かな言語規則を網羅していなくても問題ないのかなと。言語にはさまざま種類がありますが、大きく「命令型」「宣言型」の2種類に分けることができて、それぞれのプログラミング言語が両者のアプローチをつまみ食い的に取り入れているような状況があるんですね。

なのでパラダイムという大きな流れをつかんでおくと、なぜこんな書き方をしているかがわかるようになりますし、習得も早くなると思います。

アルゴリズムとかデータについても、抽象的なものを具体的にプログラミング言語で実装して最終的にはハードウェアに落としますが、そこにはstd、glibcといった標準ライブラリやOSが介在してるんですよね。それらのソフトウェアとハードウェアをつなぐレイヤー構造についても学んでおくといいでしょう。

基本的には能動的に学べる調べ学習がオススメ

――なるほど。具体的にはどのように勉強されていましたか?

基本的にはまず自分が分からないことを特定して、それをひたすら調べるという形ですね。孔子の言葉にも「これを知るをこれを知るとなし、これを知らざるを知らずとなせ。これ知るなり」というものがあります。"何を知らないか”の特定が肝心です。

僕は物理専攻だったので情報系はほとんど独学だったんですが、知りたい分野の学科のシラバスを読み込んで分からない単語や概念を見つけて学習していました。

分からないことが全体の2〜3割だったらそれはおそらく穴埋めで考えれば解けるはずです。

しかし初学者は2〜3割しか分かっていなくて、残りの大部分を考えなければならないという状況がほとんどです。「自分が何を分からないかが分からない」という場合は、体系的に整理された教科書などを読んで、理解が浅い箇所をまず潰していくといいのではないかと。

――自分が知らないところを特定できれば、どんどん肉付けができますね。

そうですね。Web検索やLLMを活用すると、分からないことに対してピンポイントの答えが得やすいので、能動的に勉強できて効率が良いと思います。知識が増える資料よりも、知らないことを把握できる資料が重要かもしれません。

アルゴリズムに関しては「全体を網羅的に把握したい」という気持ちがあって、学習のために『アルゴリズムクイックリファレンス 第2版』を読みました。今だったら『問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本』などがいいかもしれません。

――アウトプットはどのようにされていたのでしょう。

一時期は競技プログラミングをやっていましたね。コンペに出たりはせず、あくまで個人の嗜み程度ですが。本で学んだ知識がこの問題で活かせそうだぞ、という形で問題を解いていました。やはり実際に使ってみないと身につかないので、競技プログラミング以外にも自分で開発したり業務の中で取り組んだりと、アウトプットを増やすといいのかなと思います。

――基礎を学習し終わったらどのような手順で次に進めばいいでしょうか。

知識量が増えてノウハウが身に付いてくると、大抵のことに対しては「だいたいこんなイメージで実現できそう」ということが分かってくるはずなので、出口を考えるのが良いと思います。僕の場合は、アルゴリズムや、画像認識システムが出口でした。

得た知識と技術で自分の興味ある分野で何ができそうかを考えるといいかと思いますが、世の中にないものや、独自の機能を作ろうとすると、自分でアルゴリズムを設計実装していくことになるのでそこはしっかり考えていかなくてはなりません。

そこではデータの可視化が大事だと思います。入出力の範囲や分布、といったデータ特性を可視化して眺めることで、アルゴリズムの課題や改善案が思い浮かぶはずです。

未来では画像認識技術が当たり前になる

――いま、橋本さんが興味のある分野があれば教えてください。

車の自動運転には興味がありますね。まず課題が明確になっているのが好きなところです。自動運転の実現には、まず車の周りがどうなっているのかを認識する必要がありますし、他のセンサーの情報も使うのでマルチモーダルな認識が求められます。認識技術だけとってもいろいろありそうですし、認識したあとにどう制御するかなど、システム全体の最適化を考えるとかなり歯応えがあって面白そうです。

自動運転の技術はオープンソース化も進んでいますし、最近はそのあたりのライブラリも眺めて自社プロダクトに応用できないかと考えています。

――最後に、橋本さんは画像認識技術が今後どのように発展していくと考えられているか教えてください。

社会実装の面だと、どんなものでも画像認識AI搭載が標準的になっていく流れがあるのかなと感じています。

たとえばスマホでも、昔はただカメラで写真を撮るのみでした。しかし今ではスマホでも人物を認識したり、Google Pixelのように「消しゴムマジック」で消したいものを消して別の画像に置き換えたりということができるようになっています。カメラがただ写真や動画を撮るだけでなく、カメラが常に画像を理解している状態が普通になっていくのではないでしょうか。そうした未来にどう画像認識技術が寄与できるのかは、僕自身非常に楽しみです。

執筆:神田匠