はじめに
Axrossを運営している松田です。
**Axross**は、エンジニアの"教育"と"実務"のギャップに着目し、「学んだが活用できない人を減らしたい」という想いで、ソフトバンク社内起業制度にて立ち上げたサービスです。
現役エンジニアによる実践ノウハウが"レシピ"として教材化されており、Pythonプログラミングを活用して実業務に近いテーマで、動くものを作りながら学ぶことができます。
Axross:https://axross-recipe.com
公式Twitter:https://twitter.com/Axross_SBiv
今回は、深層学習に適したPythonライブラリKerasの特徴を紹介し、Axrossのサービスで学べるKerasを活用した実践的なレシピを一部ご紹介します。
Kerasとは
**Keras(ケラス)**とは、Pythonで書かれた深層学習のオープンソースライブラリの1つです。
Kerasは、Googleのエンジニアによって作り出されました。読みやすく簡潔なアーキテクチャで迅速に実装できることと、ユーザーフレンドリーで拡張性があることを重視して設計・開発されました。
Kerasを使うことで、ディープラーニングのベースとなっている数学的理論の部分や、深層学習のアルゴリズムを、比較的短く簡単なPythonコードで多くのモデルを素早く実装することができます。
Kerasは、構造がシンプルで使いやすく、ディープラーニングの初心者が実装を学び始めたり、ディープラーニングの迅速な実験をするのに最適なライブラリです。一方で、TensorFlowやPyTorchと比べると処理速度が遅く、学習に時間がかかります。そのため、小規模なデータセットにしか適さない点がデメリットです。
Googleのオープンソース深層学習フレームワークであるTensorFlowの開発チームが、ディープラーニング分野で画像やテキストデータをより容易に扱うために、TensorFlowのコアライブラリにKerasをサポートすることを2017年に発表しました。最近ではKerasは、TensorFlowの機能と統合されていることから、Keras単体で独立して動作させるよりも、KerasのバックエンドとしてTensorFlowを用いることが主流となっています。
そして、TensorFlowとともに学術研究と企業の事業の両方で多く採用され、利用されています。
TensorFlowについてはこちらのQiita記事内容もご確認ください。
Kerasを活用したレシピの紹介
AxrossのKerasを使って学べる実践レシピを12個ご紹介します。
画像認識
画像認識による乗り物を分類するレシピ(モデル作成編)
投稿者:@uehara7 さん
外部APIを用いてWEBサービスから画像データを収集し、データの前処理、VGG16モデルの構築・評価まで、機械学習(AI)を活用して画像に映る物体を認識して画像分類する、一連のAI開発手法を学ぶことができます。
また、続編の**乗り物画像分類モデルの精度向上レシピ(転移学習編)**では、転移学習によって、画像分類モデルの精度を向上させる手法を学ぶことができます。
YOLOv2とVGG16による料理認識レシピ
投稿者:@belltree さん
深層学習モデル YOLOv2とVGG16による物体検出の学習方法を応用し、料理の画像データを用いて、料理メニューの推定を行います。
labelImgによるアノテーション作成、darkflowでYOLOv2の重みを利用、darkflowからの検出物体データの取り出し方、VGG16のFine TuningとOpenCV/PILの利用法、OpenCVで日本語テキストを表示する方法、交差検証といった、物体検出を行う機械学習モデルを構築するための一連の手法を学ぶことができます。
TensorFlow(Keras)を使った洋服の種類分類を体験するレシピ
投稿者:@st4trafalgar さん
Fashion MNISTの洋服の画像データセットを利用し、TensorFlow(Keras)を使った深層学習による画像分類を行います。
Kerasによるモデルの定義、学習、精度評価といった一連のディープラーニングの開発の流れを学ぶことができます。ECサイト等でのファッションコーディネート画像を自動分類するタスクで応用ができます。
生産ラインを想定した画像異常検知の実践レシピ
投稿者:@apple さん
オートエンコーダ、畳み込みオートエンコーダ、サーポートベクトルマシン(SVM)を構築し、一様なパターンを持つ画像の異常を検知し、異常部分をマーキングする手法について、画像データの前処理からモデル構築、評価まで機械学習の画像処理タスクの一連の流れを体験できます。
実務では、工場の生産ラインなどで画像をもとに正常の範囲を逸脱するもの(不良品や不純物等)の検出を自動化するときに活用されています。
画像編集
Kerasで作る画像ノイズ除去モデル AR-CNNレシピ
投稿者:@kz_onkさん
高解像度の画像ノイズ除去分野において有名な**AR-CNN(Artifacts Reduction Convolutional Neural Network)**モデルについて、モデル構造の解説から、Kerasによるモデルの実装、ノイズ除去の画質比較テストの流れでハンズオン形式で学ぶことができます。
画像からノイズを除去する手法は、ぼやけた画像を拡大しつつ、欠落している情報を補完して鮮明な画質にする等、動画や画像の編集処理に応用することができます。
顔交換(FaceSwap)技術を活用し、人物画像の顔を入れ替えるレシピ
投稿者:@katkazzzzzさん
FaceSwapを活用し、動画や画像から人物の顔の入れ替えを行い、機械学習で自然な合成を実現する手法を学びながら、画像処理におけるオートエンコーダーの仕組みとその効果を体験することができます。
AIを利用して人の顔を差し替えるディープフェイクと呼ばれる、フェイク動画の悪用やいたずらが近年問題視されていますが、その技術そのものは非常に優れた技術であり、使い方によっては私たちの社会に貢献できるものと思います。倫理規定に賛同した上でお試しください。
物体検出
MediaPipeを利用して簡単なジェスチャーを推定するレシピ
投稿者:@KzhtTkhsさん
MediaPipeを用いて手のランドマークを検出し、ランドマークを元に簡単なジェスチャー認識を行う方法をPythonを使って学べるレシピです。
非接触操作システムでの活用例を参考にして、人差指の指先の軌跡から「静止」「時計回り」「反時計回り」の3種類のジェスチャーを認識するプログラムを作ります。ジェスチャー学習用データの取得から、ジェスチャー分類モデルの定義、作成、動作確認までの一連の開発を行います。
MoveNetのキーポイントからボディランゲージを読み取るレシピ
投稿者:@高橋かずひとさん
TensorFlow Hub上で高速な姿勢推定モデルMoveNet を動かし、17個のキーポイントを取得し、TensorFlow Similarityモデルを用いてキーポイントからのボディランゲージの認識手法について学ぶことができます。
高速な姿勢推定の技術は、防犯カメラ画像の不審行動の検出などに応用できます。
セキュリティ
【AIセキュリティ入門】Adversarial Examplesを理解しAIモデルを頑健にするレシピ
投稿者:@ChillStackさん
ディープラーニングをはじめとする様々な機械学習を活用したAI発展に伴い、顔認証システムや防犯システム、自動運転技術など、様々な分野でAIの社会実装が進んでいます。一方で、AIに対する攻撃手法も数多く生まれており、「AIを防御する技術」の確立が急務となっています。
このレシピは、映像や音声などAIへの入力データに対して細工をすることによって、意図的にAIを誤認識させる攻撃手法とAIをより頑健にするセキュリティの仕組みを実践しながら学ぶことができます。
時系列分析
POSデータから商品の売り上げを予測するレシピ
投稿者:@su2umaruさん
時系列データ(POSデータ)を使用して、Recurrent Neural Network (RNN) をベースとした機械学習モデルによる商品の売上予測を行います。
人工的に整っていないリアルなデータを用いることで、現場で求めらえれる機械学習モデルの精度を上げるたために重要な、データの収集や前処理の手法を試しながら学ぶことができます。
TensorFlow Kerasで時系列データの異常検知を行うレシピ
投稿者:@高橋かずひとさん
TensorFlow Kerasを用いて再構成畳み込みオートエンコーダモデルを構築し、心電図の時系列データに対する波形の異常検知を行う手法と、Optunaを用いたモデル構造探索について学べます。
実運用では、センサーから取得した時系列データを取得・分析し、その特徴を観察することで、モーターの故障を未然に防ぐための異常振動検知など、製造業を中心とした機械のメンテナス業務に応用可能です。
最後に
AIを使いこなす人材になるためのコツは、
● 常に最新AI技術(モデルやライブラリ)やトレンド、ユースケースをキャッチアップすること
● 座学で学んだ後は、AIを使って何かアウトプットを出す疑似体験を繰り返すこと
● 様々なデータセットやAI技術を動かしてみてその手触り感を把握すること
だと思います。
ぜひAxrossのレシピを通して、プログラムの意味を考えながら写経(コードを実際に書き写す行為)し、実際に動くものをつくりながら学ぶことで、AIを活用できる人材が少しでも多く増やすことができたらと思います。