機械学習や統計、数学のプロになる
統計検定の受験や機械学習のプロジェクト参加を通じ、専門性の高いプロになりたい。
画像処理に係るプロジェクトに参加していました。具体的な仕事内容として顔認識システムやそれを応用したプロダクトの開発、それに関係するフィルターのプログラムの開発、画像処理に関する基礎研究を行っていました。
このプロジェクトを行った会社では画像処理・画像認識の依頼は初めてだったようなのでナレッジを貯めるところからプロジェクトがスタートしました。
具体的には、まず顔を認識するためにディープラーニングや機械学習を用いて顔を認識するシステムを作成しました。ここでは時間や効率を考えKerasなどの簡単にネットワークを組めるライブラリやOpenCVやDlibなどのライブラリを用いてシステムを組みました。OpenCVやDlib、ディープラーニングをもちいたパーツ検出を行いましたが、顔のパーツの位置推定などはディープラーニング(CNN)を用いた時のほうが精度が良かったため、ディープラーニングを採用しました、顔自体の推定は様々な方法を行い、例えばディープラーニングではFaster R-CNNやSSD、Yoloを、古典的な機械学習ではHOG特徴量+SVM、HOG特徴量+Gradient boosting desicion tree(XGBoost)、などを行いました。
また私はこれだけでなく、このプロジェクトのために画像処理を勉強し、カメラのディストーション
解決のための多様体を使用したレンズの歪みの推定、カメラの内部行列の推定技術の研究、消失点からのカメラ行列の修正技術、瞳からの視線追従システム、画像のタグ付けのためのwebアプリケーションの作成などを行いました。
他にも認識した顔から3Dモデルによる顔の姿勢推定の技術を作りました。またカメラのオートキャリブレーションなど独自のシステムも作成し、作業の効率化を行いました。
このプロジェクトでは初めて画像処理を仕事として行いましたが、機械学習やディープラーニングなどの最新技術の基本的な知識があったこと、独自技術の開発による作業の効率化を行ったことにより、割とさくさくと勧められたと感じています。
その会社では開発できる人材が私しかいなかったので、サーバー、バックエンド、フロントエンド、分析から使うライブラリの整備まですべて自分で行いました。またこのプロジェクトに付随するプロジェクトとして自然言語処理を用いた、感情分析プログラムの作成も行い、機械学習に関する知見をためることができました。
具体的には、某サイトにおける特定商品の感情分析や文章解析を行うシステムを作成するという業務でした。そのため、まずスクレイピング用のライブラリの整備からプロジェクトをスタートしました。何故かOSSを使用してはならないと言われたためScrapyを使用することができず、スクレイピングに苦労しました。なんとかrequestsとBeautiful soupだけは使用を許可されたため、これらをベースにライブラリを作成していきました。このサイトはjsonでデータを管理していましたが、jsonの構造の変化の頻度が高く、決め打ちで特定の情報を持ってきても数週間でプログラムを書き換えねばならず苦労していました。しかし、jsonの構造が単純であること、最下層のキーの名前は基本的に固定であることから、まず木構造を解析するライブラリを作成、これを元に木構造から計算量を少なく、最下層にある特定のキーの情報を取得するライブラリを作成しました。これにより、今まで2〜3週間に1回プログラムを書き換えねばならなかったところが2〜3ヶ月に1回プログラムを書き換えるか書き換えないかになりました。
また、10万件と行った大規模データを取得するのが遅いということで、並列処理(マルチスレッド)による通信を行い今まで10時間かかっていた処理を1〜2時間に短縮しました。また、相手側のサーバーの負荷を考え、定期的にスリープを挟むような処理を加えました。
次に行ったのが取得したデータを元に感情分析や主となる単語の抽出を行うプログラムの作成です。感情分析は単語のポジネガ辞書を元に単語のポジネガ具合の総和を求めることで算出しました。主となる単語の抽出はTF-IDFを使用し、その文章の中でTF-IDFが高い単語を抽出し、その単語を主となる単語としました。
また、担当者からこれらシステムをwebアプリにして欲しいと言われたため、Djangoを使用し簡単なwebアプリケーションを作成しました。このwebアプリでは特定単語による検索、取得したデータからの感情分析、単語抽出、CSV形式での出力、ネットワーク分析などが行えるように成っており、フロントエンド、大規模データのためのサーバー、大規模データ処理のためのバックエンドなどを自分一人で作成しました。
数理的問題解決能力
コミュニケーション能力
自由な職場