機械学習エンジニアとして技術を追求しつつ、クラウドエンジニアとしての技術と実績もつけたい。
直近の職種としては機械学習エンジニアとして活動してきたが、エンジニアとして一番大切なことは現場を知ることであり、その為にも機械学習エンジニアとして現場のことを詳細に知れる技術力を働く限りは身に着けたい。
また、機械学習とは別にクラウドの軸の技術力と実績を積み上げ、クラウドエンジニアとしても活動ができる程に成長したいと考えている。その理由として、今までの機械学習の案件では、ほぼ全てでクラウドのプラットフォーム(主にAWSが機会として多い)に触れる機会があり、クラウドエンジニアとしても単体で働けるぐらいの技術にも精通すれば更にその案件で活躍できただろうと痛感することもあったことが背景にある。
一方で、リーダー的なポジションやマネジメントも複数のエンジニアと活動する場合は必要だと考えているので、技術力を身に着けつつ可能ならマネジメント業務も担当していきたい。
このプロジェクト詳細は公開されていません
【概要】
・各社のコールセンターでの音声会話に対するASR処理及び、ASR処理で出力されたテキストへのNLP(自然言語処理)によるPoC開発
・自動音声認識システムのASR処理の出力テキストに対する正規化、及び認識精度の向上
【担当業務】
・日本語テキストに対する形態素解析、及びコーパスの作成:日本語テキストに対して処理するMeCab用の形態素解析モデルの作成、及びコールセンターでの音声会話のテキストを元にしたMeCab用の学習コーパスの作成
・NLP部分の処理の精度の改善:ASR処理で出力されたテキストに対するspaCyによるNLP処理の住所、名前、電話番号等のエンティティ認識のモデル作成、及び精度検証
・住所補完ツールの作成:テキスト中の郵便番号、住所の一部などの情報から、テキスト内で扱っている住所情報の特定につなげるツール及び、使用するファイル(.csv)を作成
・テキストに対する正規化:音声から認識したテキストの表記揺れの修正、及び認識精度の向上
・精度結果出力の支援:音声テキストの精度出力に対するツールの作成
【使用技術】
・Python:機械学習のモデルの学習や言語処理用のコードの実装で使用
・spaCy:テキストから個人情報(名前、住所…etc)を特定するためのモデルの学習や検証で使用
・mecab:テキストに形態素解析を実施する際に使用
・GitLab:開発物のリポジトリの管理で使用
・pandas:数千行単位のテキストデータを加工、処理する際に使用
【課題】
・ASR処理で得られた会話の日本語テキストに対して、コールセンターの支援(ブラウザ上での相手の個人情報の表示)に必要な固有表現(例:住所、電話番号)の抽出がうまく行われなかった。
・本来、英語などの品詞が区切られている言語向けにシステムが作られており、ローカライズ対応のために日本語対応をする必要があった。
・開発リソース(技術担当)が少なかったこともあり、社内でよく行う処理(例:ASRやNLPの精度算出)に対するツールの整備等が整えられていなかった。
・顧客の要望でテキスト内の断片的な住所から住所の絞り込み機能があり、テキスト内の住所や郵便番号から住所を補完する機能が必要があった。
【工夫したこと】
・テキストの精度向上のため、固有表現抽出にはpythonのライブラリであるspaCyを用いて対応した他、メールアドレスに該当する表現は発音表現として出力されたカタカナを英字(例:「エー アットマーク ビー ドット シー」→「a@b.c」)に変換することで精度を向上させた。
・日本語対応のため、日本語のコーパスを用いてMeCabによる形態素解析モデルを作成して、品詞が抽出される様に対応した。
・社内で頻繁に使う使うツール(例:Python上からcsv等のデータファイルをExcelで精度算出)の整備を進めた。
・日本郵政のページに記載された一覧情報から、市区町村群や字(大字)などの地名の一部や郵便番号からテキスト内で使用されている地名を絞り込めるツールのベースとなるCSVファイルを作成した。
【成果】
・固定表現抽出は、参画前は全体の完全一致率が66%だった箇所が、参画後に90%にまで上昇した。
・社内で頻繁に使うツールを用意することで、社内の作業の自動化が進んだ。
・郵便番号と地名の対応表となるCSVファイルを作ることにより、地名絞り込みのツールの実装につながった。
【概要】
・大手電機メーカによる身分証明書(免許証、マイナンバーカード、在留カード、パスポート)のeKYC機能システムのOCR処理をクラウド、及びスマートフォン用SDKとして開発
【担当業務】
・クラウド上でのOCR処理の開発:AWSで稼働するDockerイメージとして、eKYC機能のOCR処理部分を開発
・スマートフォン向けのOCR処理の開発:スマートフォン(iOS/Android)上で稼働するアプリのeKYC機能のOCR処理部分をSDKとして開発
・スマートフォン向けの機械学習モデルの更改:画像を増強させた上で、学習モデル(TensorFlow-Liteで構築)を再学習
【使用技術】
・Python:機械学習のモデルの学習やクラウド版のアプリケーションのコードの実装で使用
・Xcode:iOS向けのSDKの開発、動作検証で使用
・VSCode:クラウド版のアプリケーションの開発で使用
・Objective-C:iOS向けのSDKのコードの実装で使用
・C++:iOS向けのSDKのコードで、TensorFlow及びOpenCVをの実装する際に使用
・Swift:iOS向けの動作検証アプリのコードの実装で使用
・Android Studio:Android向けのSDKの開発、動作検証で使用
・Java:Android向けのSDK、及び動作検証アプリのコードの実装で使用
・Kotlin:Android向けのSDKのコードの実装で際に使用
・iOS:iPhoneでSDKの動作の際に使用(複数バージョンを使用)
・Android:AndroidでSDKの動作の際に使用(複数バージョンを使用)
・Docker:クラウド版のアプリケーションを動作させるコンテナとして使用
・Mac:開発時に使用した端末、及びOS
・AWS:クラウド版のアプリケーションの動作、検証の際に使用(EC2、S3、ECS、EKS)
・GitHub:開発物のリポジトリの管理で使用
・GitHub Actions:クラウド版のアプリケーションでDockerイメージを作成する際に使用
・Keras:機械学習モデルの学習、及びクラウド版の動作で使用
・TensorFlow:iOS、及びAndroid向けの機械学習モデルの動作で使用
・OpenCV:クラウド版、及びスマートフォン用の画像処理で使用
【課題】
・クラウド版では、一部の身分証明書の実装がされていなかった。
・スマートフォン用SDKでは、iOSとAndroidのそれぞれのライブラリで前任の開発者が異なっていたことから、テストコードやソースコードに論理的な差異が発生していた。
・スマートフォン用SDKでは、一部の帳票の読み取りの精度が悪かった。
・iOS版スマートフォン用SDKで、当時の最新のXcodeでの開発で実機テストがファイルのI/Oの部分で止まる症状が発生していた。
・精度に影響がないなどの文字(例:日付など)が出力されないことで、F値や完全一致率などの精度が下がってしまう状況が発生していた。
・(PoC開発の課題)免許証の運転区分の読み取りに対応しておらず、発行年度(2017年3月12日が基準)によって一覧内の区分の位置や種類が異なっていた。
・その他、大手電気メーカからの依頼が時期を跨いで複数発生していた。
【工夫したこと】
・スマートフォン用の設定ファイルをを元に、クラウド版に身分証明書の追加の実装を行った。
・スマートフォン用のiOSとAndroidのソースコードを比較し、論理を可能な限り同等になる様に実装し、更にテストコードでも比較を行った上で、テストコードもほぼ同等の内容に仕上げた。
・スマートフォン用で、OCR用の機械学習モデルの学習の際、精度が悪かったフォント画像を用いたり、読み込み画像の縦横の縮尺や上下の白紙の切り捨て及び追加、等の機能を用いて精度を向上させた。
・iOS版スマートフォン用SDKは、最新のXcodeで動作する様に一部の記述(ファイルのI/O部分)を変更し、実機テストでも動作することを確認した。
・検出後の文字列から、精度に影響がない文字を補完する機能を追加した。
・(PoC開発)免許証の運転区分の読み取りに際して、各区分の画像を用いたテンプレートマッチングを用いることで、区分の位置が異なっても判定する機能を実現した。
・その他、大手電気メーカからの依頼は社外会議やメール連絡等でこまめに確認しつつ進めた。
【成果】
・プロジェクトに関わって以来の二年以上の間、読み取り精度の向上や機能の追加を果す形で大手電気メーカとの関係が継続出来た。
【概要】
・不定形の帳票画像(活字:数値、日本語、英語)に対するOCR処理システムの社内開発プロジェクト
【担当業務】
・OCR処理システムのDocker移植:Windowsでの稼働を目的とした導入手法からDockerを使用する稼働手法への改修を実施
【使用技術】
・Python:機械学習のモデルの学習やアプリケーションのコードの実装で使用
・Docker:機械学習のアプリケーションを動作させるコンテナとして使用
・GitHub:開発物のリポジトリの管理で使用
・OpenCV:OCRの対象となる画像の前処理で使用
・Keras:機械学習モデルの構築、動作で使用
・TensorFlow:機械学習モデルの構築、動作で使用
【課題】
・今までOCR処理システムの実行環境がWindowsを前提としていたため、環境依存してしまう問題があった。
・Dockerコンテナを構築する際に、構築の秘密鍵の情報がDockerイメージに残ってしまう脆弱性が存在した。
【工夫したこと】
・実行環境に依存しない様に、Dockerコンテナを用いることに決めた。
・ローカルライブラリを含めたライブラリを事前にダウンロードを行うことで、Dockerイメージの構築を可能とした。
・Dockerコンテナの構築の際に、秘密鍵が不要になった段階でにコンテナから該当するイメージを削除することで脆弱性を回避した。
【成果】
・Dockerイメージを用いることで、OSに依存しない実行環境でシステムを動作させることが可能となった。
・DockerコンテナをベースとしたWebシステムの開発プロジェクトの開始につながった。
【概要】
・テストの解答用紙(手書き:日本語、英語、数値)によるOCR処理のPoC開発、及び顧客が開発した画像認識システム(白紙検知)に対して、機械学習を用いた新手法を追加開発
【担当業務】
・解答用紙に対するOCR処理の精度検証:国語の解答用紙(手書き:日本語)に対する文字画像切り出し、及びOCR処理の精度検証
・画像認識システムの追加開発の実装:顧客が開発した画像認識システム(白紙検知)に対し、機械学習を用いた新手法を実装
【使用技術】
・Linux:機械学習アプリケーションを動かす際に使用したOS(CentOS)
・Python:機械学習のモデルの学習やアプリケーションのコードの実装で使用
・Java:顧客が元々使用していたシステムで使用された言語
・OpenCV:OCRの対象となる画像の前処理で使用
・GitHub:開発物のリポジトリの管理で使用
・Flask:機械学習モデルを動作させるアプリケーションをREST APIとして実装する際に使用
・scikit-learn:機械学習モデルの構築で使用
・Keras:機械学習モデルの構築、動作で使用
・TensorFlow:機械学習モデルの構築、動作で使用
【課題】
・国語の一文字単位でのOCRの処理の際に、縦書きでマス目ごとに文字が記録されていた箇所から解答欄ので文字の切り出しの対応や一文字単位でのOCRの機械学習モデルの選択の必要に迫られた。
・白紙検知の画像認識の際、処理速度や顧客先のシステム(Javaで記述)との互換性を担保する仕様を満たす必要があった。
・PoCで開発した白紙検知の画像認識の速度が、顧客先の従来のシステムの速度よりも遅くなる状況を確認したため、精度と速度を保つ形の解決が必要となった。
【工夫したこと】
・CNNによる機械学習モデルによる一文字単位のOCRでの文字認識を実施した他、文字を横につなげて文字単位で処理可能なCNNとRNNを組合せた機械学習モデルを用いて複数の選択肢による精度を出して、顧客への選択肢を複数用意した。
・Javaで構築された顧客のシステムとの互換性を保つため、REST APIと通信するJavaモジュールを別途用意し、Python側でREST APIの情報(白紙検知用の画像ファイルがある配置先)を受けとって白紙検知の確度の数値を返すシステムを構築した。
・白紙検知の画像認識の速度を保つためにOpenCVによる画像の前処理を見直したり、白紙検知を用いた機械学習モデルをCNNベースからscikit-learnベースに変更することで速度と精度を確保した。
【成果】
・PoCでのOCRの開発の結果、白紙検知の部分での本開発につながった。
・白紙検知のシステムは速度と精度の結果から、顧客の従来のシステムを置き換える形で納入されることになった。
【概要】
・画像内の文字(活字:数値)を文字データに変換し、精度を向上して出力
【担当業務】
・新規学習モデルの開発:案件向けのOCR処理を行う学習モデル(Kerasで構築)の新規作成
・OCR処理の精度検証:資料画像に対するOCR処理結果の精度検証
【使用技術】
・Linux:機械学習アプリケーションを動かす際に使用したOS(Ubuntu)
・Python:機械学習のモデルの学習やコードの実装で使用
・OpenCV:OCRの対象となる画像の前処理で使用
・GitLab:開発物のリポジトリの管理で使用
・TensorFlow:機械学習モデルの構築で使用
・Keras:機械学習モデルの構築で使用
【課題】
・帳票画像の文字に対して今まで目視と手動で数値を取得していたが、膨大な量の帳票に対しては時間的コストが大きくなる問題があった。
【工夫したこと】
・帳票画像から画像を取り込んだ際、数値以外の情報を出力させない様に機械学習モデルの出力を設定した。
・文字列長が長くなることがあるため、文字認識で使用されるCNN(畳み込みニューラルネットワーク)のみならず、RNN(回帰型ニューラルネットワーク)を組合せてCNN単体では一文字単位でしか対応できなかった可変長文字列を出力として得られる機械学習モデルを学習させた。
【成果】
・帳票画像の文字部分のOCRについて学習させたモデルを用いた結果、完全一致率で95%以上の精度が出た。
【概要】
・設計書とコード(COBOL)の同時出力が実行可能な自動化ツールが使用するDBへの情報操作ツールの運用、捕手、及び動作検証
【担当業務】
・環境(DB)への検証操作へのマニュアル化:部署内で今まで実施してきた属人化したマニュアルの文章化
・環境情報操作ツールの動作後の検証:部署内や他部署、及び外部企業が使用する環境情報操作ツールに対して、環境(DB)内への操作後の内容の検証、及び事後対応
・環境情報操作ツールの解析:環境情報操作ツール内で記述されたソース(VBA)を元に、機能内容を一覧にまとめ、サブルーチン毎にフロー図を作成
【使用技術】
・Windows:作業で使用したPCやDBサーバ(Windows Server)のOS
・C#:自動化ツールで生成されたコード(COBOL)の結合ツールの開発で使用
・Excel VBA:自動化ツールの開発、運用で使用
・PostgreSQL:自動化ツールで使用される設計書の記述やコードを格納(新機能が追加された際には更新)
・VMwareESXi:DBサーバを動かしているOSが動作している仮想サーバの動作で使用
【課題】
・使用しているDBサーバについて業務上の影響範囲(日本全国の拠点に影響する程)が大きいものであった一方、前任者が契約してサーバ構築した関係で当時在籍していたメンバーはどういう仕様か不明であった。(機材の保証期間の更新期限が迫っており、上記のサーバに対する契約状況の確認の必要が迫られた。)
【工夫したこと】
・実際に実機を確認して、ディスプレイを直接つなげるなどサーバに対する調査を行い、どういう原理でDBサーバが動作しているかを確認した。
【成果】
・スーパーバイザ型で仮想環境が動く仕様であったことが確認できた。
・契約情報についても、サーバ実機のシリアルナンバーから具体的な内容を確認することが出来た。
【概要】
・AIを応用した各実装案の企画
【担当業務】
・発表資料作成:AIを用いたアイデア資料の作成
・プログラムによる課題解決:AI系のライブラリを用いたPythonによる画像認識、言語処理の課題の解決
【使用技術】
・Windows:作業で使用したPCのOS
・Python:AI系のライブラリやアプリケーションを動かす際に使用
・Docker:AI系のアプリケーションを動かす際に使用
【課題】
・出向先の企業で使用しているIDE統合開発環境に対して、AIを用いた機能の追加が考えられていた。
【工夫したこと】
・自分が持っている知識(情報セキュリティ、過去のAI研究)を用いて、案を出した。
【成果】
・目ぼしい成果が出せなかった。
【概要】
・Active DirectoryサーバとOpen Directoryサーバを用いて従業員のアカウントとデバイスの権限制御、モバイルアカウントの適応を実現
【担当業務】
・Open Directoryサーバの試験環境の構築:プロファイルマネージャの設定
・プロファイルマネージャの検証:クライアントとサーバとの連携の検証
・検証環境の調査:macOS の仕様を中心とした調査
・スクリプトによるクライアント制御:SHELLによる制御スクリプトの記述、検証
【使用技術】
・ShellScript:macOSを自動で設定する際に使用
・Mac:各拠点で稼働している別バージョンのOS(macOS)の設定や、アカウントを運用するOpen Directoryサーバ(macOS Server)を設定する際に使用
・Active Directory:作業先のサーバでアカウントを管理しているサーバとして使用
・OpenLDAP:導入先の環境でネットワーク経由でユーザアカウントを運用する際に使用
【課題】
・担当した企業の日本全国にある拠点で、アカウント情報が統一されておらず地方でローカルで使われていたアカウントが点在していた問題があった。(使用していたソフトウェアのライセンス等の情報の関係で統一したほうが望ましかった。)
【工夫したこと】
・事前にアカウント情報をサーバー上に統一した上で、Open Directoryを用いて連携を行った。
・各拠点で別々のmacOSのバージョンを使用していたため、各環境でも動くように動作環境を行い、手順をまとめた。
・スクリプトを用いることで違った環境でも可能な限り自動的に対応できるように調整を行った。
【成果】
・上記の課題を解決することにより、大手出版企業の要件を満たす形でアカウントとデバイスの権限制御、モバイルアカウントの適応を実現した。
【概要】
・macOSのシステム、及びアプリケーションの設定と構築
【担当業務】
・端末設定スクリプトの構築:SHELLスクリプトベースのスクリプトでクライアント 設定を操作
・アプリケーションの導入・設定:macOS向けのアプリケーションの導入と設定ファイルの調査と編集
【使用技術】
・Mac:macOSを動かす端末(Intel Mac)として使用
・ShellScript:macOSを自動で設定する際に使用
・Bash:ShellScriptによる複雑な処理を記述する際に使用
・OpenLDAP:導入先の環境でネットワーク経由でユーザアカウントを運用する際に使用
・VMwareESXi:OpenLDAPやmacOSのOSイメージを管理するサーバを仮想環境として構築する際に使用
・Linux:ファイルサーバ(NFS)やOpenLDAPを動かすサーバのOSとして使用
【課題】
・Mac端末の容量の関係で、macOSにインストールできるアプリの容量の調整が必要になった。
・macOSのシステムを作成した際、最新のOSのバージョンでは既存の構築手法が使えないことがあった。
・数百台単位のMacに対して、同じmacOSのシステムをデプロイする際に時間がかかった。
【工夫したこと】
・NFS等のネットワークストレージを用いることで、ユーザ用の容量や一部のアプリを移すことにより端末の容量の節約をおこなった。
・既存の方法が使えない際は、設定や起動スクリプトを見直したり、あるいは別の方法がないかWeb(英字サイト含む)を探して対応した。
・多量の端末へのデプロイは、端末のグループを作成して時間を区切ったり、深夜の時間帯に実行するなどで対応した。
【成果】
・上記の課題を解決することで、導入先の要件を満たす形で環境構築することが出来た。
【概要】
・動的WEBページのプログラミング(単発作業の割合が多い)
【担当業務】
・イベント参加者用のWebページの作成:顧客(外資系自動車機器メーカー社)とタイアップした学生参加型のコンテストイベントのエントリーフォーム及び、管理ページの動的Webページの作成
・社内ツールの改造対応:社内で使用しているツールの改造
・プログラム雑用:単発で頼まれるプログラミング、主にソースの改造など
・バウンスメール(送信エラー通知)の処理:バウンスメールの確認を行い、適切な処理を考慮した上で、社内の人材データへの記載・設定を行う
【使用技術】
・PHP:動的Webページのプログラミングで使用
・Apache:Webページを動かすサーバのプラットフォームの構築で使用
・MySQL:動的Webページの入出力する情報を格納
・Linux:サーバのOS(CentOS)、WebサーバとDBサーバに必要なリポジトリの導入
・Perl:バウンスメールの判定の文字列処理で使用
・Subversion:開発物のバージョン管理用(社内でレポジトリを構築)
・JavaScript:動的Webページのフロント処理で使用
・SQL:PHPとMySQLの連動でSQL文を使用
【課題】
・イベント用のWebサイトの作成で、ユーザの要件(複数の入力)を満たす必要があった。
【工夫したこと】
・学生参加者型のページということで動的なページを作るにはどうコーディングすべきか考えた。
・コーディングの際に複数の入力欄を表示させ、PHPとJavascriptで対応させる範囲を考えて実装した。
【成果】
・イベント用のWebサイトは使われて、タイアップを実現することが出来た。
・クラウド(AWS、GCP、Azure)を用いた業務(特に機械学習と関連する業務)。
・統計学。(資格勉強を並行で勉強中)
業務で断片的に上記のキーワードの業務は携わったが、体系的に学ぶ必要があると実感。
・アーキテクト(上流工程から保守、運用までの工程)
・マネジメント(プロジェクト、人材両方。将来的に…リーダー的な立場から)
エンジニアとしての幅を出していくという意味でも以上の分野の業務も機会があれば取り組みたい。
・会議と残業時間が少なく、専門的な業務に専念できる職場。
・WLB(ワークライフバランス)が保てる会社。(リモートワーク、フレックス制がある職場が理想的)
要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。
なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。