- 投稿日:2020-12-01T21:41:03+09:00
TensorFlowデベロッパー認定資格を受験体験記
この記事は、私が2020年9月にTensorflow Developer Certificateを受験した体験記についての投稿です。
TensorFlowディベロッパー認定資格について
この資格はGoogleよりリリースされたTensorFlowについての認定資格です。
2020年に始まったばかりの試験で、一般的に4択問題の認定資格が多い中で、コーディングが求められる試験です。手を動かしながら楽しみながら受験することができました。概要
試験内容:Pycharmを使ってTensorFlowの機械学習モデル構築(コーディング)。試験の中で、ローカルでモデルを作って学習します。
試験時間:5時間
費用:USD100
レベル:ビギナー向け(ディープラーニング協会のG資格よりは難しくE資格未満の知識+TensorFlowをコーディングできるスキル)
言語:英語(試験の公式ページやガイドブックには日本語版が準備されていますが、申し込み〜試験の実施はすべて英語でした。)TensorFlow デベロッパー認定資格の公式ページ
https://www.tensorflow.org/certificate?hl=ja事前調査①:ユーザーコミュニティイベントに参加
2020年にローンチされたばかりの新しい試験であるため問題の内容や難易度が未知数でした。TensorFlow のユーザーコミュニティのTensorFlow User Group の主催イベントに参加し(ここから閲覧できます)、試験についていくつか知ることができました。
イベントの中でGoogle Khanh氏がプレゼンされた内容によると
"試験レベルに求められるレベルは"ジュニアの機械学習エンジニアのスキルセットを認定する試験(機械学習チームに入って即戦力になれるスキル)"ということのようです。
今後いくつかのレベルのリリースされる予定があることも言われていましたが、現時点でリリースされた試験はBeginner向けのようです。TFUG主催の動画で先人の方々がさまざまな経験を語っていただいているので、受験を検討されている肩には閲覧をオススメします。
事前準備②:公式ガイドブック
公式ページにある受験者向けのガイドブックが準備されています。日本語もあります。必要とされるスキルセットなどが記載されてます。このスキルセットが問題なく理解できると問題なく合格できると思います。
受験者向けガイドブック
https://www.tensorflow.org/extras/cert/TF_Certificate_Candidate_Handbook_ja.pdf?hl=ja勉強法
TFUGのイベントでも紹介された公式に推奨されているCourseraのオンライン講座を中心に勉強しました。動画で解説されている内容やコードを理解して、自分でも同じようにコーディングしながら、学習を進めました。
講座には16週のコースですが、私の場合は4週間ほどでコースの全カリキュラムを完了しました。
あとはTensorFlowのチュートリアルに記載されている内容を一通り確認しました。
ひたすらローレンス氏の解説を聞いて、手を動かすことを集中して行いました。
DeepLearning.AI テンソルフロー開発者 プロフェッショナル認定
https://www.coursera.org/professional-certificates/tensorflow-in-practiceTensorFlow Tutorial
https://www.tensorflow.org/tutorials?hl=ja申し込み
申し込みからは英語になります。申し込みが完了後、支払いが完了すると試験に向けた準備についてメールにて案内が送られてきます。
そこにPluginのインストール方法や使用するバージョンなどが書かれています。
英語で書かれていますが、Pycharmキャプチャ画像が貼られていますので、分かりやすいと思いました。試験申し込みサイト
https://app.trueability.com/google-certificates/tensorflow-developerいざ試験
5時間の制限時間内に、5つの機械学習モデルを構築します。実際の試験では、構築したモデルを提出することで採点がされます。
実際の試験は、Pycharmを立ち上げて、Pluginにしたがって進めていきます。環境の構築や問題のダウンロードもPluginがやってくれます。ローカル環境にてモデルを構築していくので、GPUの環境があると学習の進みが早いので、GPUがあった方がいいのです。何度も試行錯誤してさまざまなモデルを試せます。ただし必須では無いです。
私の場合は、Pycharmでモデルを構築しながら、他のアプローチについては、Google Colabなどでも並行して課題を違ったアプローチで学習させるなど、いくつかのモデルを並行して構築していきました。Google Colabで作ったモデルをダウンロードして提出を試みましたがエラーとなってしましました。
バージョンなどの不一致などによるものだと思ったのですが、試験の本質から外れてしまうので一旦横において他のモデルを試すくらいのアプローチでGoogle Colabを活用し、試験での提出モデルは、ローカル環境で学習させました。終わってみると5時間という時間はあっと言うまで、他の楽しみながら取り組むことができました。
構築したモデルはh5形式のファイルで保存し、Pycharm上のPluginを通して提出します。
しばらくするとその場で点数が表示されます。
提出回数に制限は無いようで、試験時間内であれば何度も提出ができます。モデルを提出する度に点数が表示されるので5つのモデルを提出し終わった時点では、点数が表示されています。
合格ラインが示されていないのでこれで合格できるか不安が残るのでひたすら高得点取得に向けてモデル構築を行いました。Pycharmを使ったことが無い方は、試験前に使い方などに慣れておいた方が、試験では戸惑いが無いかと思います。
Pycharm
https://www.jetbrains.com/ja-jp/pycharm/受けてみて
合否についてメールで来るのですが、いつまで経っても来ない、、、ということがあり、たまたま迷惑メールフォルダを確認したところ、メールがきておりました。
これから受けられる方はメールが迷惑メールフォルダに分類されてしまうことがあるのでお気をつけください。Beginner向けともコメントされていましたように、難易度は高くなく、基本的な理解や知識、またモデルとしてコーディングする際のスキルが問われた試験でした。
TensorFlowを使うような業務では、基本知識、スキルを扱った資格試験でしたので、合格することもそうですが、普段のスキルアップにもつながると思います。おまけ
今回は、Google主催のML Study Jams “Road to TF Certificate 2020”に登録して、試験を受けました。合格者への特典として、Googleが開発したAIで生成されたクッキーをGoogle様よりいただきました。
ほんのりジンジャーの香りがする硬めのクッキーでしたが非常に美味しかったです。
最後に
実際に事前に勉強するところから試験を受けるまでの流れから考えると、楽しかったという点と改めてTensorFlowの基本を学べてスキルアップできたと言うところに尽きます。
この記事を受けて、試験を受けてみたいと思っていただける方がいらっしゃると嬉しい限りです。
リンク
TensorFlow デベロッパー認定資格の公式ページ
https://www.tensorflow.org/certificate?hl=ja
受験者向けガイドブック
https://www.tensorflow.org/extras/cert/TF_Certificate_Candidate_Handbook_ja.pdf?hl=ja
(Coursera)DeepLearning.AI テンソルフロー開発者 プロフェッショナル認定
https://www.coursera.org/professional-certificates/tensorflow-in-practice
TensorFlow Tutorial
https://www.tensorflow.org/tutorials?hl=ja
TensorFlow User Group Meetup #11 - Road to TF Developer Certificate
https://www.youtube.com/watch?v=PjeAQX7fy6g
- 投稿日:2020-12-01T16:05:22+09:00
人物画像の姿勢推定をNode-REDで行う方法
日立製作所OSSソリューションセンタの横井です。前の記事では、RedHat OpenShiftのNode-REDオペレータの使用方法をご紹介しました。この記事では、OpenShiftのNode-RED環境と、TensorFlowコンテナを接続する手順についてご説明します。
使用例
ここでは、自動車を運転する際の警報システムを実現するNode-REDのフローの例を使用します。日本では、ご存知のように自動車は左側の道路を走り、サイクリストもその自動車の同じ左側を走ります。そのため、サイクリストが自動車に近づく際は、ドライバーは衝突を回避する必要があります。この状況を支援するため、このシステムは、サイクリストが右折する兆候を示したことを人間の姿勢推定モデルを使用して判定し、ドライバーへ警告を表示します。
次の手順を行う前に、前の記事で説明したようにNode-REDオペレータを使用して、事前にNode-RED環境を作成する必要があります。すべての操作は、OpenShiftウェブコンソール上で、adminロールではなく、developerアカウントで行う必要があります。
(1) TensorFlowコンテナのデプロイ
ウェブコンソール上で、「+Add」->「Container image」の項目へアクセスします。
次のウィザードでは、Image name from external registryに「quay.io/codait/max-human-pose-estimator」を貼り付けます。このコンテナには、入力画像から人間の姿勢を推定するREST API サーバが含まれています(興味がある場合は、詳細を参照してください)。Generalフィールドの"application name"と"name"の他の項目については、イメージ名を貼り付けた後、自動的に入力されます。
ウィザードのCreateボタンをクリックしてから約2分が経過すると、max-human-pose-estimatorインスタンスのリングが青になり、デプロイが成功したことが分かります。
OpenShiftのロゴが表示されているmax-human-pose-estimatorインスタンスをダブルクリックすることによって、詳細サイドエリアのResourcesタブのRoutesフィールドの中にREST APIのエンドポイントURLが生成されていることを確認できます。
エンドポイントのURLにアクセスすると、Swagger UIからREST APIサーバに用意されているメソッドを呼び出すことができます。最後に、Node-REDのフローを編集する時に用いるため、このエンドポイントのURLを覚えておいてください。
(2) Node-REDのフローを読み込み
GitHubからサンプルフローを読み込むには、まずNode-REDフローエディタのメニューで「プロジェクト」->「新規」を選択します。Node-REDオペレータによって作成されたNode-RED環境では、このプロジェクト機能と呼ばれるGitHubとの統合機能がデフォルトで有効になっています。
以下のウィザードで「リポジトリのクローン」ボタンをクリックして、サンプルのNode-REDフローを含むリポジトリを複製します。
次のウィンドウでは、gitコマンドが使用する名前と電子メールアドレスを入力する必要があります。ただし、ここでの手順では、本情報を必要とするgit commitコマンドが登場しないため、この情報は使用されません。
最後に、GitリポジトリのURLに「https://github.com/kazuhitoyokoi/node-red-pose-estimation-demo.git」を貼り付けます。プロジェクト名は自動的に入力されます。また、その他のフィールドは空である必要があります。
この時点では、いくつかのNode-REDノードのモジュールが存在しないため、読み込み処理の後にエラー通知がポップアップ表示されます。この問題を解決するには、まず「プロジェクトの依存関係を管理」のボタンをクリックしてプロジェクト設定UIを開きます(もし、このボタンがない場合は、情報タブにあるプロジェクト名の横の「・・・」ボタンをクリックします)。
プロジェクト設定UIの依存関係タブには、次のようにいくつかのNode-REDモジュールが不足していることが示されます。これらのモジュールをNode-REDにインストールするには、各インストールボタンをクリックします。
モジュールが存在しない問題を修正すると、Node-REDのフローが、赤い点線を持つ不明なノードがないフローになります。
(3) エンドポイントを編集
エンドポイントのURLを、OpenShift環境にデプロイしたTensorFlowコンテナに変更するには、まずhuman-pose-estimatorノードをダブルクリックします。
エンドポイントの設定UIに移動するには、ノードプロパティUIにある鉛筆ボタンをクリックします。
エンドポイント設定UIのホスト欄については、前もってデプロイしておいたmax-human-pose-estimatorインスタンスからコピーしたエンドポイントのURLを貼り付けます。なお、名前のフィールドをopenshiftに変更することは必須ではありません。エンドポイント設定UIの「更新」ボタン、ノードプロパティUIの「完了」ボタンをクリックし、フローエディタの画面に戻った後、右上のデプロイボタンをクリックします。
(4) フローの動作確認
左上にあるinjectノードの左側にあるボタンをクリックすると、右上のimage previewノードの下に注釈付きの画像が表示されます。同時に、OKの画像が右下のimage previewノードの下に出現します。両者の間にあるanalyzeノードによって、人間が自転車に乗っているときの通常のポジションかどうかが判断されます。
次の手順として、2番目のinjectノードのボタンをクリックすると、結果として警告の画像が表示されます。右側の腕が上がったため、サイクリストがすぐに右に曲がるだろうと、analyzeノードを使用して判断されました。
必要に応じて、http requestノードだけではなく、その他のプロトコルを介して、その自動車に装備されているカメラに接続することもできます。
この記事では、Node-REDとRedHat OpenShiftにデプロイした他のコンポーネントとを統合する例を説明しました。MySQLノードのようなNode-REDノードモジュールで接続できる便利なコンポーネントがOpenShiftにはいくつかあるため、今後もこれらのコンポーネントを調べ、その他の利用例についても考えてゆこうと思います。