ID:45989さん

3年後の目標や野望


主体性をもって仕事がしたい

これまでは問題解決やそれに必要な知識や技術の習得をメインに仕事をしてきた。これからはそれらの技能を使って自ら問題を立て解決に導く立場で仕事がしたい。

年収評価シート

2021年/1年以内

人物検出のためのデータセットの自動生成モジュールの開発

## 1. プロジェクト概要 教師あり学習において、学習データセットの作成はコストが大きい。また、著作権や被写体の個人情報など法律に関わる問題も無視できない。本プロジェクトでは学習データセットをコンピューター・グラフィックス(CG)を用いて生成することで人手によるアノテーションコストを排除し、正確で大量の学習データをユーザーの目的に合わせて作成することを可能にした。 ## 2. チーム情報 1. 私 - データセット生成モジュールの開発 - 生成したデータセットを使った物体検出ネットワークのトレーニング - 解析ツールの開発および性能評価 2. プロジェクトリーダー - クライアントとの調整 - 進捗管理・方針決定 - 成果の発表、報告書の作成 3. クライアント - 計画立案・予算執行 - データの提供 - 意見・要望 ## 3. 開発・実装内容 ### 3.1. データセット生成モジュールの開発 #### 概要 CGの人物モデルにモーションを付与し、ヴァーチャルカメラで撮影する。出力として画像(動画)とCOCO形式のアノテーションファイル(人物のバウンディングボックスとセグメンテーション等)を生成する。 ユーザーは登録された人物モデルと基本モーション(歩く・走る・跳ぶ等)、シーン(背景)などを指定するだけで自動的にデータセットを作れる。 #### 開発・実装 - 体型・人種・服装などを調整してCGモデルを作れる[MakeHuman](http://www.makehumancommunity.org/)を使用して数十パターンの人物モデルを作成 - モーションデータは[CMU Motion Capture Database](http://mocap.cs.cmu.edu/)等の公開されているものを利用 - CGの撮影はBlenderを採用。オブジェクトやカメラの配置、レンダリング等の操作をPythonで記述 - 前景(人物)と背景(シーン)を合成するモジュールを実装 - 人物モデルからバウンディングボックスとセグメンテーション情報を計算しアノテーションファイル(COCO形式)をエクスポートするモジュールをPythonで実装 #### 課題・問題点 - Blender for Pythonの習熟 →Blenderの情報はGUIを使った解説が多く、Pythonからの操作は公式ドキュメントを含め資料が少なかったため実際にコードを実行し動作を確認しながら機能を実装していった。 - 実カメラの再現 →実際のカメラはレンズに歪みが生じるため、Blenderでレンズ歪みや色収差を再現した。 - 人物モデルのボーン(born, armature)とモーションの対応付け(retarget) →人物モデルにモーションを自動的に付与するために既存のアドオンをメンテナンスしてモジュールに組み込んだ。Blenderのアドオンのソースコードを読むことでBlender for Pythonの習熟にも役に立った。 ### 3.2. 生成したデータセットを使った物体検出ネットワークのトレーニング #### 概要 既存の物体検出ネットワークを使ってトレーニング(ファインチューニング)を行う。本プロジェクトは効率的なデータセットの生成が目的であるため、ネットワークのデザインやハイパーパラメーター調整には深入りせずにデータセット生に関わる部分の最適化を中心に行う。 #### 開発・実装 - [MMDetection](https://github.com/open-mmlab/mmdetection)を利用した物体検出ネットワークのトレーニング(ファインチューニング) -トレーニングとテストのサイクルを高速化するため大型計算を利用 - 大規模データセット(COCO2017)と実環境を想定したデータセットで性能評価 #### 課題・問題点 - MMDetectionを使ったネットワークのトレーニング →MMDetectionはコンフィグレーションファイルでコスト関数の選択や学習計画の変更を容易にできる。ドキュメントとソースコードを参考にして本プロジェクトに最適な学習パラメーターを選定した。 ### 3.3. 解析ツールの作成および性能評価 #### 概要 データセット生成時のどのパラメーターが最終的な性能にどう影響したかを分析した。生成したデータセットでトレーニング(ファインチューニング)した場合と既存のデータセットでトレーニングした場合を比較して、本モジュールで生成されるデータセットの特性やバイアスを評価した。 #### 開発・実装 - 学習モデルの性能でデータセットを評価 - 物体検出のオーソドックスな指標Average Precision (AP) や Average Recall (AR) 等を比較してパラメーターを最適化 - 上記指標以外にも本プロジェクト応じた指標や可視化ツールを作成 #### 課題・問題点 - 既存の指標では見えにくい性能向上の定量化 →定性的には性能向上が認められるが、AP/AR等の定量的な指標では性能向上が見えにくかった。指標を計算するまでの過程を可視化することでグラフの形などの情報もモデルの性能を測る材料にした。たとえば、APを計算するときに使用するPrecision-Recallカーブをプロットして同じAPでもグラフの形で定性的な性能の違いを表現できることを示した。

2020年/1年以内

三次元動画識別器シミュレーターの開発

## 1. プロジェクト概要 三次元の動画識別ネットワークの頑健性を評価するシミュレーターの開発を行った。3DCGを使って人物が基本動作を行う動画を生成し、それを学習済みモデルに入力することで、識別の苦手な動作や位置・姿勢等を定量的に評価するシステムを提案した。 ## 2. チーム情報 1. 私 - 3DCG動画の自動生成モジュールと動画識別モデルの評価システムの実装 - 学習済みモデルの評価 - 3DCGデータセットを使ったトレーニング 2. プロジェクトリーダー - 進捗管理・方針決定 - 報告書作成 ## 3. 開発・実装内容 ### 3.1. 3DCG動画の自動生成モジュールと動画識別モデルの評価システムの実装 #### 概要 3DCGで動画を作成するたの技術調査を行い、ゲームエンジンを使ってシーンを作成、撮影して動画をつくりながら使用する技術やツールを選定した。最終的にCGの撮影・レンダリングはBlenderを使用し、人物の動作を識別するモデルを評価するシステムを構築した。モデルの評価は苦手な動作や人物の位置・姿勢等を連続的に変化させてスコアを記録しヒートマップにすることでモデルの特徴を可視化することに成功した。 #### 開発・実装 - 技術選定1:Unityを使った3DCG動画の作成 - 技術選定2:Blenderを使った3DCG動画の作成 - 動画識別モデルの特性の可視化を行うモジュールをPythonで実装 #### 課題・問題点 - 動画制作コストの抑制 →当初、3DCG動画の作成はUnityで行っていた。UnityはC#でオブジェクトの操作や撮影を記述することでき自動化がしやすかった。しかし、動画学習用のデータは大量に必要であるため、UnityのGUI処理がボトルネックになることが判明した。そこで、CUIベースで動作しマルチプロセスで処理が可能なBlenderに移行することで、シェルとPythonスクリプトで動作する軽量なシステムを構築した。 ### 3.2. 学習済みモデルの評価 #### 概要 3D-ResNetsで学習したモデルを使って、モデルの特徴を可視化するモジュールを開発した。3DCGで様々な動作を生成、入力、評価して混同行列(confusion matrix)を作り、識別が得意な動作と苦手な動作(どんな動作に間違えやすいのか)を定量的に評価した。また、人物の姿勢やカメラに映る位置によって同じ動作でもスコアに影響があることを示した。 #### 開発・実装 - 3D-ResNetsの導入 - テスト結果を解析するモジュールの実装 #### 課題・問題点 - 定性的評価と定量的評価の関係 →定性的には学習済みモデルの動画識別能力は十分高いといえるが、一部のシーンで思わぬ失敗をすることがわかっていた。しかし、定量的に扱うと平均値の議論になってしまい失敗の原因やモデルの“クセ”のような、本来評価したい情報が見えにくい問題があった。そこでスコアをヒートマップで表すことで、マップのパターンや模様など視覚的な情報を利用してモデルの特徴を表現することができた。 ### 3.3. 3DCGデータセットを使ったトレーニング #### 概要 評価に使用した3DCGモジュールを学習データセットの生成に利用し、モデルをファインチューニングする実験を行った。特に、学習済みモデルを評価したときの苦手なシーンを再学習することで苦手の改善を期待した。 #### 開発・実装 - 3D-ResNets用3DCGデータセットの作成 - 3D-ResNetsのトレーニング・テスト #### 課題・問題点 - ファインチューニングモデルの性能が上がらない →学習済みモデルをベースに3DCGデータセットでファインチューニングを行っても性能が上がらないかむしろ下がってしまった。学習のエポックごとにモデルを評価すると、プレトレインモデルが獲得した特徴量を破壊していることがわかった。学習済みモデルの学習データはリアルデータであることや、動作を行う状況(背景)やノイズなど理由はいくつか考えられた。そこで、3DCGによるトレーニングの有効性に論点を絞り、既存の学習済みモデルを使うかわりに3DCGで大規模データセットを作成しスクラッチ学習したモデルが既存のモデルに匹敵することを示した。 - 大規模3DCGデータセットを使ったトレーニング →動画識別ネットワークのトレーニングは大規模なデータセットが必要で学習に必要な時間は膨大になる。そこで、大型計算機を利用して時間コストを計算資源でカバーした。

2020年/3ヶ月以内

ドローンの安全着陸システムの開発

## 1. プロジェクト概要 ドローンを安全に航行するために、不時着陸時に着陸可能なエリアを自律的に判断するシステムを提案する。本プロジェクトでは機械学習でセグメンテーションタスクを行い、上空からの映像を3つのエリア――1. 水平(着陸可)、2. 垂直(着陸不可)、3. その他(着陸不可)――に分け、安全に着陸可能なエリアへ誘導することを考える。学習モデルはドローンに搭載するために軽量なモデルでトレーニングし、性能が十分であることを確認する。 ## 2. チーム情報 1. 私 - 学習データセットの作成 - ネットワークのトレーニング - 性能評価 2. プロジェクトリーダー - 資材調達 - 進捗管理・方針決定 - 論文作成・学会発表 ## 3. 開発・実装内容 ### 3.1. 学習データセットの作成 #### 概要 学習データは上空からの航空写真とそれに対応するセグメンテーションラベルが必要である。しかし、これらを人手で作成することはアノテーションコストが高いため、本プロジェクトでは[Google Earth](https://www.google.co.jp/intl/en/earth/)を利用する。3D地形データをBlenderにインポートしてヴァーチャルカメラで撮影を行い自動的にデータセットを作成した。 #### 開発・実装 - GitHubに公開されているソフトウェアを使用し、3D地形データを抽出 - Blenderでドローンの航行をシミュレートして撮影 - 3D地形データの法線マップを計算し、垂直成分と水平成分、その他を塗り分けアノテーションファイルにエクスポート - RGB画像と先のセグメンテーション画像をHDF5形式に保存 #### 課題・問題点 - データセットの準備 →既存のデータセットは欧米のデータが多く日本国内のものが存在しなかったため、自前でデータセットを用意する必要があった。しかし、データセット作成はコストの問題で人手によるアノテーションが行えなかったため、Google Earthの3D地形データを利用し、Blenderで撮影することで自動的に処理することにした。 - セグメンテーションの間違い →3D地形の法線マップを計算する際に、法線の座標系がカメラ座標系とワールド座標系が統一されていなかった。Blender for Pythonで座標系を変換するスクリプトを書いて対応した。 ### 3.2. ネットワークのトレーニング #### 概要 ネットワークは[SafeUAV](https://link.springer.com/chapter/10.1007/978-3-030-11012-3_4)を採用した。本プロジェクトでは日本での運用を想定し、日本の山岳部の地形データでトレーニング(ファインチューニング)を行った。また、ドローンに搭載するJetsonで動作させるために軽量モデルでのトレーニングも行った。 #### 開発・実装 - ネットワークとプレトレインモデルは著者のGitLabからクローンして利用 - ハイパーパラメーターの調整 #### 課題・問題点 - GitLabで公開されているプログラムが走らない →公開されているプログラムは著者が開発する機械学習ライブラリと依存関係にあり、最新版をそのまま実行することができなかった。Gitのコミットログを遡り、著者の論文公開時点のバージョンにチェックアウトすることで問題を解消した。 ### 3.3 性能評価 #### 概要 本プロジェクトでは学習データがCGであるため、テストをCGと実データで比較して性能に大きな違いが出ないか検証した。また、地域や地形の異なるデータでも比較を行い汎化性の検証も行った。最後に軽量モデルでも十分な性能が出ることを確認した。 #### 開発・実装 - テスト1:CG vs. 実データ - テスト2:日本 vs. 海外 - テスト3:都市部 vs. 郊外 - Jetsonでの動作検証 #### 課題・問題点 - 水面の問題 →CGで自動生成したデータは法線マップを使って水平・垂直・その他に分類しているため、池や湖面など本来その他(着陸禁止エリア)に分類しなければならない領域が水平(着陸可能エリア)になっていたため、実データでテストした際に性能を大きく下げる原因になった。対処療法的ではあるが、水面が含まれるデータをデータセットから取り除いて学習することでこの問題を回避した。 - Jetsonへのプログラムの移植 →モデルのトレーニングを行うマシン(amd64)とJetson(arm64)ではアーキテクチャの違いにより、テスト環境が動作しなかった。Jetsonのライブラリやモジュールをarm64への対応することで問題を解消した。

2019年/1年以内

HDRカメラデータの学習による高コントラスト画像生成

## 1. プロジェクト概要 High Dynamic Range (HDR) カメラは通常のカメラよりもピクセルあたりの色調が広く、ハイコントラストな画像を撮影することできる。本プロジェクトではHDRカメラで撮影したHDR画像を学習して、通常のカメラで撮影したLow Dynamic Range (LDR) 画像からHDR画像を生成する手法を提案した。 ## 2. チーム情報 1. 私 - HDR撮影、データセット作成 - ネットワークのトレーニング - 性能評価 2. プロジェクトリーダー - 資材調達 - 進捗管理・方針決定 - 論文作成・学会発表 ## 3. 開発・実装内容 ### 3.1. 撮影、データセット作成 #### 概要 HDR撮影は付属のソフトウェアとソースコードを参考にして、RAWデータを取得・保存するプログラムを作成した。RAWデータからHDR画像への変換するはPythonで実装した。これらのプログラムを使って屋内と屋外で撮影を行い学習用データセットを作成した。 #### 開発・実装 - HDRカメラから16ビットのベイヤーパターンを取得・保存する機能をC++で実装 - 16ビットのベイヤーパターンから16x3ビットのRGB画像に変換するプログラムをPythonで実装 - 同一シーンのHDR画像とLDR画像のペア画像を数十万枚用意 #### 課題・問題点 - RAWデータの取得 →HDRカメラの付属ソフトウェアにはRAWデータを取得・保存する機能がなかったため、ソースコードにRAWデータのエクスポート機能を実装してビルドした。 - 撮影時のフレーム落ち問題 →連続撮影する場合にフレームレートが著しく下がりデータが抜けることがあった。映像の表示と保存処理でスレッドを分けることで問題を解決した。 ### 3.2. ネットワークのトレーニング #### 概要 ネットワークは一般的なCNNとU-net、Pix2Pix、オリジナルの4種類をトレーニングした。Pix2Pixのトレーニングはノイズを過学習してしまう傾向があり、損失関数の係数を調整したりHDR画像をつくるアルゴリズムをいくつか試した。最終的にノイズ部分をマスクしながら効率的に学習するネットワークを提案した。 #### 開発・実装 - ネットワークはそれぞれ論文の著者が公開しているオリジナルのコードをGitHubからクローンして使用 - 損失関数はオリジナルのものとSSIMをベースにした指標、ヒストグラムをベースにした指標をそれぞれ実装 #### 課題・問題点 - 学習の不安定性 →Pix2Pixは勾配消失による学習の停滞があり性能が出ない場合があった。損失関数の係数調整やメトリックの変更により問題を解消した。 - ヒストグラムベースの損失関数の実装 →ヒストグラムベースの損失関数は、PyTorchの関数は計算コストが高く学習に時間がかかりすぎる問題があった。ヒストグラムを計算する部分をCUDAで実装することで問題を解決した。 ### 3.3. 性能評価 #### 概要 データセットとネットワーク、損失関数の違いで出力される画像の定性的・定量的評価を行った。 #### 開発・実装 - 定性評価は人が見た印象で比較 - 定量評価はPSNRとSSIMで比較 #### 課題・問題点 - Pix2Pixは定量評価は高いがノイズに特徴的なパターンが見えて見栄えが悪い →ノイズには複合的な原因があった。ひとつはフィルターサイズとコンボリューションのストライドの組み合わせによる格子模様のノイズで、これはフィルターサイズとストライドを調整することで抑制できた。もうひとつは教師画像に含まれるカラーノイズやランダムノイズを過学習してしまうことによるもので、こちらは黒つぶれした領域で見られた。黒つぶれした領域はセンサーの特性上ノイズが多く、それをネットワークが底上げすることで見栄えが悪くなっていた。そこで黒つぶれの含まれる教師データに予めマスクをかけたものをネットワークに入力することでノイズの過学習を抑制した。

マネージメント能力

アピール項目


アウトプット

GitHub アカウント
あり
Qiita アカウント
未入力です
Zenn アカウント
未入力です
Speaker Deck アカウント
未入力です
SlideShare アカウント
未入力です
特にアピールしたいアウトプット
未入力です

今後、身につけなければいけないと思っている技術は何ですか?

未入力です

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

未入力です

キャラクター

直近で一番やりたいこと
技術を極めたい
好きなスタイル
好きな規模
水とプログラミングどっちが大事?
自信を持って人より秀でていると言える点
学習能力 / 分析力 / 問題解決力
スキルのタイプ
得意なフェーズ
会社を選ぶ一番の基準
理念や社会的意義
やりたくない分野
未入力です
その他の特徴
使用言語にはこだわらない
その他のやりたいこと・やりたくないこと
未入力です

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で30代後半
好きな Text Editor
Emacs
希望勤務地
埼玉県 / 千葉県 / 東京都 / 神奈川県 / 愛知県 / 京都府 / 大阪府 / 兵庫県 / 福岡県 / その他地域 / リモート勤務
家庭の事情や体調など、都合に合わせてリモート出来れば問題ない
希望年収
未入力
転職ドラフトに参加して
企業から指名を受け取ろう!
会員登録をして転職ドラフトに参加すると、参加企業から年収付きの指名を受け取ることができるようになります。
会員登録する
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
SIGN UPSIGN IN


転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?