「机上のAI」では終わらせない！  真のAIエンジニアに求められる現場経験と実践力とは

こんにちは。 [AI Dynamics Japan](https://aidynamics.jp/) でマーケティングを担当している [Tech Lady](@tech_lady731) です。 

本記事は、AI人材不足と言われて久しい昨今、なぜAI人材は育ちにくいと言われるのか、本当の課題は何なのか 、最近某囲碁アニメにハマり『神の一手』を極めるために、まずは池袋付近で初心者向けの囲碁サロン探しに勤しんでいるというAI Dynamics Japan主任エンジニアの[みきを](@michelle0915)さんと、特に「AIエンジニア」に焦点を据えて対談形式で紹介しています。 

AIエンジニアとして活動するのに必要なスキル・ノウハウなどにも触れていますので、ご覧いただければ幸いです。 

![qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2583928/9b8c33cb-e6e8-0e28-1801-4ba13f1e1b45.png)




## AIを学ぶのは簡単？ 
**Tech Lady （以下 TL）：** 今日は「AI人材」をテーマにいろいろ話をしてみたいと思います。ところで、みきをさんが AIエンジニア として活動を始めたきっかけは何だったのでしょうか？ 

**みきを：** 3年ほど前、前職の時に部署異動があって、その異動先が新規事業の推進を目的とする部署だったのですが、そこでAIツールを扱うことになり、AIについて勉強し始めたのがきっかけでしたね。 

**TL：** そうなんですね。AIについて勉強を始めたばかりの頃ってどうでしたか？勉強する中で、気づきなどは何かありましたか？ 

**みきを：** 特に印象的だったのは、AIを実際にプログラミングしてみたら、**AI自体は思いのほかシンプルな仕組みでできている**んだと認識できたことですね。 

**TL：** AIの仕組みがシンプル！？直接開発経験のない私からすると、AI開発ってすごく高度なイメージなので、まだ「シンプル」というワードと紐付かないので、もう少し詳しく教えていただけますか？ 

**みきを：** AI（ディープラーニング）と呼ばれるものは、極論を言うと、計算機の中で行う単純な足し算と掛け算の組み合わせによって実現させているんです。 
最近では例えばウェブ情報だったり、オンライントレーニングだったりと、AIについて学べる環境が整ってきているので、それらを通して、短期間でAIを理解することは出来るようになるのではないかなと思います。 なので、AIを理解する、AIを動かすだけであれば、そこまで難しいことではないです。 

**TL：** なるほど。学ぶ人の環境や知識、これまでの実績などによって変動はあると思いますが、AIを学ぶ・動かすということだけを考えると、そこまで難しいものではないということですね。 

## AIエンジニアリングの本当の課題とは 
**TL：** それでは、なぜ、AI人材はなかなか育たないとされるのか、本当の問題はどこにあると思いますか？ 

**みきを：** 私なりの意見になりますが、 AI開発に携わってきた経験から言えることとして、**AIを作る・動かせるだけでは、実際に現場で使えるAI「システム」までは構築できない**という結論に至ったんですよね。
![qiita4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2583928/6fe24ab6-fb0b-e048-181a-48dc2dc846ab.png)
AIシステムを作ろうとした時に、まず前提として、 AIが学習するためのデータセットが必要になるんですけど、そもそもそのデータセットを手に入れるところが大変だという認識がデスク上で学んでいるだけではわからないと思うんですよ。またAIが完成したとしても、そのAIを使って安定した推論結果が生み出せるか、結果がシステム利用者にとって意味のある形にアウトプットできるかという課題もあります。 

例えば、人を検出するAIを作ろうとすると、インプットとして人を捉えるカメラが必要になってくるわけですよね。さらに精度向上のために、現場でどのような位置にそのカメラを置くかという環境の調整も必要です。また、AIのインプット/アウトプットを連携するためのネットワーク環境をどうするべきかっていう課題なども出てくるわけです。 
参考までに、カメラと画像処理AIを使ってシステムを作る場合の疑似ソースコードを掲載します。コードをご覧いただくとわかりやすいのですが、システムの中でAI処理が占めるのはほんの一部分で、むしろその他周辺部分（前処理・後処理）がシステムの大部分を占めています。


``` python:AIシステムのサンプルコード
import cv2

# AIモデルのロード
model = load_ai_model('./object_detection.tflite')

# 動画またはカメラの設定
image_loader = cv2.VideoCapture('input.mp4')

# メイン処理のループ
while True:

    # 画像取得
    ret, image = image_loader.read()
    if not ret:
        break

    # AI推論用の前処理
    image_preprocessed = preprocess(image)

    # AI推論実行
    ai_result = model.predict(image)

    # 推論結果を画像に描画・表示
    image_postprocessed = postprocess(image, ai_result)
    cv2.imshow('result', image_postprocessed)
    cv2.waitKey(1)

    # 結果をクラウドにアップロード
    upload_data('https://aid.co.jp/storage/', ai_result)
```


AIを「システム」に組み込むためには、そうしたAIを動かすための周辺知識もたくさん持っておかないといけないということです。AI Dynamics Japan 立ち上げ当初は、AIモデルを自動で作るアプリケーションの開発をメインに進めていたのですが、そのアプリケーションだけではなかなか現場導入に至らなかったことが、今回の学びにつながっています。 

**TL：** AIエンジニアも現場経験が必要ということですね。エンジニアと聞くと、PCの前で作り上げるイメージが先行しますが、イメージが180度変わりますね。確かに、みきをさんも学習データを集めるために、外出して撮影作業なども良く対応されていますよね。 
ちなみに、AIを進める上での周辺知識はどんなことを知っておくと良さそうですか？ 

**みきを：** AIって、それ単体だけでは成り立たない事が多いので、AIで使える情報を集めるカメラやセンサーなどの外部機器、連携するためのネットワークの知識、撮ったデータを溜めておけるクラウドの知識だったりですかね。 

あとは、周辺知識とは少しズレますが、AIシステムを実現する上での心構えというんですかね、問題解決力という要素が一番大きいと思います。 

現場にシステムを設置する際、カメラ撮影が困難な環境の現場だったり、マシンを置けないような狭い現場だったりと、いろんな条件がある中で最適解を見つけるためには、実際に現場に立ち寄って現場調査するという泥臭い作業が発生するのですが、そういった場面での対応力が必要です。 

**TL：** なるほど。そうすると、AIを作るためのプログラミングスキル、AIを動かすための周辺知識に加えて、**システムの全体像を俯瞰的に見通せるスキルとそれらをもとに論理的に組み立てたてていくスキル**をセットで持てると、「AI人材」として活躍していけるということになりますかね。



## プロトタイプ作りで実践してみよう
**TL：** そうなるまでには、どんな手順で物事を進めていけば良いと思われますか？ 

**みきを：** まず、AIを理解したい人は、本を読んだり、プログラムの参考書などを見ることから始めると良いと思います。次に実際に手を動かしてAIモデルに触れてみて実感する。 

既にAIにある程度触れたことがある人ならば、実際にそれを実世界で使えるようにするための一番簡単にできる実践的なトレーニングとして、[Raspberry Pi](https://www.raspberrypi.com/) というものを使ってAIが動くデバイスを作ってみることをおすすめしますね。 
 
**TL：** 何かプロトタイプ的なものをたくさん作るということですか？

**みきを：** そうですね。自分のPC上で動くAI以外に、 Raspberry Pi などのミニコンピュータにUSBカメラを挿して撮影しながら、その画像にAI処理をかけるモノを一つ作ってみるだけでも、ノウハウはかなり増えると思います。 

高精度なAI処理に必要な画像が綺麗に写っているか、カメラの設定にも気を配れるようになれますし、作るうちにシステム上の制約（処理速度、メモリなど）も認識するので、そこをうまく調整するなど課題がどんどん降ってくるので、必然的に学べるようになります。 

AI処理ができたら、それを別のディスプレイに画面表示させたい、クラウド上に蓄積してデータ分析したいなど、いろいろ発想が出てくるはずです。それを通じて実際に自分がこのシステムを使ったら便利だなと思えるところまで工作を進めるのは、一つの有効なトレーニングになるんじゃないかなと思いますね。 

 
**TL：** まず知識をインプットして、そこから自分で作ってみてAIの全体像を理解して、実働に落とし込んでいくステップということですね。 
今回のテーマ、新たな気づきがあったり興味深い要素も多く、私自身とても学びになりました。ありがとうございました！ 
![qiita3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2583928/0e792de8-08b9-7109-8144-fcfbd7145633.png)

## まとめ
みきをさんのお話を伺って、AI人材と呼ばれる方々をもっと多く輩出していくためには、**AIに対するイメージの是正と、AIを扱う実践的な場をもっと提供していくことが重要なのではないか**と感じました。
基本となるAIの知識を取得できれば、次は事業やサービスにどのように活かすべきか、システムはどう構築すべきかという考えにいきつくので、状況に応じた経験を積み上げることで解決策の引き出しも増え、活躍できるAI人材・AIエンジニアとして成長していくのではないかと・・・
そして、これはAI人材に特化したことではなく、どの領域の事業をやっていても当てはまることでもありますよね。開発現場では、アジャイル開発が求められていると私もよく耳にしますが、まさしくその動きを積極的に行える方こそが、活躍できる人材になられているのだと思います。

長文、最後までお読みいただきありがとうございました。