1
/
5

ソフトウェアとハードウェアが融合するAIプロダクト開発チームの技術スタックについて

こんにちは、インダストリー事業部でデータサイエンティストをやっている宇佐見です。この記事では、インダストリー事業部の技術スタックについて紹介したいと思います。

過去にHACARUS全体の技術スタックについて紹介する記事も書かれているのですが、今回は私が所属しているインダストリー事業部における技術スタックについて紹介します。

インダストリー事業部の事業内容

まず技術スタックの前に、イメージが湧きやすいようにどんな事業をやっているかを簡単に紹介します。詳細はこちらの事業部の業務内容紹介に詳しいですが、簡単に言えばカメラと照明が先端につけられたロボットアームで最終製品を外観検査するプロダクトを作っています。あと、画像・カメラを用意すればロボット無しで検査ができるようなソフトウェアも作っています。

従って、ざっくりいうと

  • 機械学習モデルを作成する部分(独自アルゴリズムの開発など)
  • お客様が「モデルの学習」「検査の設定」「実行」を行うためのUI
  • ロボット、カメラ、照明などのハードウェアの設定、制御部分

などを開発しています。

HACARUS内における、インダストリー事業部が特異な点としてはハードウェアが絡んでくるところでしょう。それ故に、選ばれている技術も他の事業部とは異なっています。

採用している技術スタック

プログラミング言語はC++、C#、 Pythonが使用されています。

C++は機械学習アルゴリズムの実装に使われています。以前は実装の簡易さからPythonで書かれていたのですが、生産ライン上での許される計算時間がmsオーダーであるため、その処理時間を出すために計算方法の見直しを行ったり、高速化のためのライブラリ(EigenおよびIntel Math Kernel Library)を使いたかったりという理由があってC++を使うようになったという背景があります。この辺の詳細は長くなりそうなのでまた別の機会に。ただC#、Pythonから呼べるようにプラットフォーム呼び出し(Platform Invoke), pybind11でラッパーを用意していて、C#、 Pythonからも等価な結果を再現できるようになっています。

C#はUI作成及び機械学習アルゴリズム以外のバックエンド処理に使われています。UIはWPFを使っていて、画像処理やハードウェアの制御周りもC#で書かれています。フレームワークは.NET 6.0を使っています。当初はカメラのSDK対応の関係から.NET Framework 4.8を使わざるを得なかったのですが、最近SDKが対応したためにフレームワークを.NET 6.0にアップデートすることができました。アップデート自体にもちょっと苦労したので、別の機会に記事にしたいものです。

また、主な外部ライブラリとして使っているのはOpenCvSharp4、 Caliburn.Micro、Serilogなどで、画像処理や、XAMLとのデータバインディング、ロギングにはこの辺りに助けられています。(OpenCvSharp4なんかはきっちりリソースを開放しないとメモリリークするみたいな憂き目に会うこともありますが。。。)

Pythonは正確にはプロダクト自体には使われていません。ただ、ちょっとした機械学習モデルの性能検証や、お客様からの頂いたデータでHACARUS Checkが機能しそうか?などの検証に使っています。

コード自体はGitLabにホスティングしていて、CI/CDはGitLabCIを使って実現しています。リモートリポジトリにコードがPushされる度にCIが走り、MSTestが実行されるようになっています。併せて、リリース用のタグ付けをした時のみ、GitLabCI上でボタンを押せばタグ付けされたコミットでReleaseビルドを行い、GitLab上でリリースが作成され、GoogleDrive上の特定のフォルダにインストーラーがアップロードされるようになっています。これをセールスチームからお客様に配布してもらうようにしています。CI/CDの実現についても別途記事にしたいと思います。

DockerもC++のコードやPythonラッパーのビルドに使われたりしていますが、プロダクトそのものはWPFを使っているのでコンテナ化されてはいません。

また、技術スタックではないのですが開発のスタイルはスクラム開発で、2週間のスプリントで開発するものを決めて開発しています。詳細はこちらの記事をご覧ください。

最後に

もし、既にHACARUSの募集要項や過去の技術紹介の記事を見てくださった方がいれば、今回紹介した内容はかなり意外だと思われる内容だったのではないでしょうか。それくらい、HACARUSの中では様々な事業が展開されています。

C#(.NET)を使って自社プロダクトを開発したい、ロボットを使った新しい外観検査装置を作ってみたい、C++で高速で生産ライン上での検査に耐えうるアルゴリズムを作ってみたい。。。などといった野望のある方は是非とも募集を覗いて、お話を聞きに来てください。

もちろん、医療、労働安全支援といった領域でもプロダクトを作ってますので、そちらに興味がある方もウェルカムです。

C# .NET
AIスタートアップで C#の開発経験を活かしませんか?アプリ開発エンジニア
HACARUSは医療、製造業、インフラ領域に AI をコアにした製品・ソリューションを提供している会社です。 ◉事業領域と提供サービス ■ 医療 ・診断支援 MRI や CT のような医療画像をはじめとする患者データを解析し、疾病の早期発見や読影医の負担軽減などより、速く正確な診断ができる医療環境の実現を目指して、製薬企業様との共同プロジェクトを推進しています。 ・ 創薬支援 創薬研究におけるスクリーニングの効率化を目指した製品開発に取り組んでいます。HACARUSの技術を用いることでスクリーニングの効率化を実現するとともに薬物の作用メカニズムに対するヒントを提示することで、専門家と協働し、研究開発を加速するシステムの実現を目指しています ■ 製造業 ・外観検査 ロボット、照明、カメラと AI を組み合わせた製品「HACARUS Check」を提供しています。複雑な形状の自動車部品の検査など、これまでの検査装置では自動化が難しかった領域に導入を進めています。 ・予知保全 工作機械をはじめとする FA 機器から収集される各種センサーデータに基づいた設備の予知保全を AI で行うことで、より生産性の高いスマートファクトリの実現に機器メーカ様と取り組んでいます。 ■インフラ ・地中探査 簡便で精度の高い地中埋設物の検査手法が、建設現場や鉄道施設などの現場で求められています。HACARUSでは地中レーダの画像から地中の埋設物の位置を確認するための AI を開発しています。 ◉HACARUSの技術の特徴 ・ビッグデータ不要 AIと聞くとディープラーニング、ビッグデータというキーワードを思い浮かべる人は多いでしょう。しかし「検討したものの、ビッグデータを集められない」とAIの利用を断念したという課題も耳にします。スパースモデリングなら、少量データでも高精度の成果を得られます。ビッグデータがないからとあきらめる必要はありません。 ・「その結論に至った理由」が解釈できる ビジネスであれ、医療であれ「なぜそうなったか」を説明できることはとても大切です。しかし、ディープラーニングを活用したAIでは「結果が出るが、なぜそうなったか」を説明できません。スパースモデリングなら、その根拠もフィードバックします。「知」が見える化されることで、応用も期待できます。 ・高速かつ低消費電力 ビッグデータを扱うAIは、膨大なデータ処理のための高性能システムが必要で、電力消費も多く、気軽にできるものではありません。 HACARUSのAIは、少ないデータの取り扱いで済むため低負荷です。クラウドベースとオンプレミスともに提供実績があります。
株式会社HACARUS
株式会社HACARUSでは一緒に働く仲間を募集しています
22 いいね!
22 いいね!
同じタグの記事
今週のランキング
株式会社HACARUSからお誘い
この話題に共感したら、メンバーと話してみませんか?