タグ

ブックマーク / tech-blog.optim.co.jp (21)

  • Multiple Object Trackingの手法・ライブラリ紹介 - OPTiM TECH BLOG

    R&Dチーム2年目の葉山です。巣ごもりの影響...はあまり関係なく元からですが、もっぱら自宅で映画ばかり見ています。バイオレンスな映画が好きです。最近は業務でMultiple Object Trackingを扱っており、トラッキング処理の実装に四苦八苦しています。 今回はMultiple Object Trackingの基的な解説と、アルゴリズムや便利なライブラリを紹介していきたいと思います。 Multiple Object Trackingとは? MOTの手法やライブラリなど MOTベンチマークで顕著な成績を残しているモデルたち FairMOT TransMOT(STGT) その他の手法やライブラリ FastMOT motpy MOTの評価指標 評価指標を測るライブラリ py-motmetricsの使い方 終わりに Multiple Object Trackingとは? Multipl

    Multiple Object Trackingの手法・ライブラリ紹介 - OPTiM TECH BLOG
  • 【初心者向け】 機械学習におけるクラス分類の評価指標の解説 - OPTiM TECH BLOG

    こんにちは。R&Dチームの河野です。主な担当業務は機械学習モデルの開発です。 タイから日に留学し、卒業後日企業に就職していました。データ分析機械学習の業務経験が3年程度で、R&Dチーム唯一の女性かつ外国人のメンバーです。 直近の仕事はディープラーニングによるクラス分類モデルの開発を担当しており、今回はモデル精度評価によく使われる評価指標について初心者向け説明させて頂きたいと思います。機械学習モデルの精度改善には課題に適切な評価指標の選択がすごく重要のため、各評価指標の理解が必要になります。分類モデル開発に興味を持っている方・挑戦してみたい方にご参考になれば幸いです。 基的な用語 ポジティブとネガティブクラス 混合行列 評価指標 正解率(Accuracy) 適合率(Precision) 再現率(Recall) F値(F1-score) しきい値とprecision-recallのトレ

    【初心者向け】 機械学習におけるクラス分類の評価指標の解説 - OPTiM TECH BLOG
  • Rust 1.51を早めに深掘り - OPTiM TECH BLOG

    こんにちは、R&Dチームの齋藤(@aznhe21)です。書きたい記事がいっぱいあるのに時間が取れません。悲しい。 さて、日、日時間3/26(金)、Rust 1.51がリリースされました。 この記事ではRust 1.51での変更点を詳しく紹介します。 3/26は普通選挙法成立の日 ピックアップ ジェネリクスの引数として定数を使えるようになった 配列要素の所有権を奪いつつイテレート出来るようになった featureの新しい解決機構が使えるようになった 安定化されたAPIのドキュメント Arc::decrement_strong_count 安全性 サンプル Arc::increment_strong_count 安全性 サンプル Once::call_once_force サンプル Peekable::next_if_eq サンプル Peekable::next_if サンプル Seek:

    Rust 1.51を早めに深掘り - OPTiM TECH BLOG
  • OCR前処理としてのOpenCV超解像 - OPTiM TECH BLOG

    R&D チームの徳田(@dakuton)です。 最近は画像とテキストの狭間にいます。 今回記事のまとめ 簡単にまとめると以下のとおりです。 いくつかの超解像(高解像度化)モデルがOpenCV extra modules(opencv_contrib)インストール + コード数行記述で導入可能 超解像に限らず、文字が一定サイズ以上になるような前処理 -> OCR解析 を実施すると、OCR精度改善につながることがある 超解像による見た目の滑らかさに比例して、OCR精度改善につながるわけではない 低計算コストな画像拡大から超解像に変更する恩恵は発生しにくい テスト条件を変えた場合、違った結果になる可能性あり(用いるOCRエンジン、画像の劣化条件、OpenCV未提供の後発モデル利用など) 実験内容 利用するOCRエンジンの実行条件は変えずに、前処理部分のみ変更した場合のOCR精度・速度変化を調べま

    OCR前処理としてのOpenCV超解像 - OPTiM TECH BLOG
  • ExcaliburによるPDFテーブルデータ抽出を動かしてみる - OPTiM TECH BLOG

    R&D チームの徳田(@dakuton)です。 前回、2値化画像処理の論文(+実装)について紹介しましたが、今回はこういった2値化の応用例としてExcalibur(PDFからテーブルデータを抽出するためのWeb UIベースのツール)を紹介します。 記事はOPTiM TECH BLOG Advent Calendar 2020 12/7 の記事としてお送りします。 前回記事はこちら。 tech-blog.optim.co.jp 動かしてみる インストール # https://camelot-py.readthedocs.io/en/master/user/install-deps.html#macos] brew install ghostscript tcl-tk pip install excalibur-py excalibur initdb 実行結果 今回もこちら(Rustの全マク

    ExcaliburによるPDFテーブルデータ抽出を動かしてみる - OPTiM TECH BLOG
  • Rust 1.48を早めに深掘り - OPTiM TECH BLOG

    こんにちは、R&Dチームの齋藤(@aznhe21)です。 先日の健康診断でついに身長が180cmに到達しました。 さて、日、日時間11/20(金)、Rust 1.48がリリースされました。 この記事ではRust 1.48での変更点を詳しく紹介します。 11/20は任天堂設立の日 ピックアップ Rustdocでのアイテムへのリンクが簡単になった Vec<T>から[T; N]に変換できるようになった futuresクレートの一部メソッドがlibcoreでも実装された 安定化されたAPIのドキュメント slice::as_ptr_range slice::as_mut_ptr_range VecDeque::make_contiguous サンプル future::pending サンプル future::ready サンプル 変更点リスト 言語 コンパイラ ライブラリ 安定化されたAPI

    Rust 1.48を早めに深掘り - OPTiM TECH BLOG
  • 古くて新しい2値化画像処理を動かしてみる(ECCV 2020論文) - OPTiM TECH BLOG

    R&D チームの徳田(@dakuton)です。 今年の8月に開催されたECCV 2020のacceptされた論文のなかに、使い古された2値化画像処理をもとにした論文(+実装)があり気になったので、今回はそちらを少し調べて動かしてみた結果をご紹介します。 対象論文 A Generalization of Otsu’s Method and Minimum Error Thresholding 要点 簡単にいうと「既存手法をまとめて、ちょっとだけ融通の効く2値化画像処理にしたもの」の提案です。 ヒストグラムベースでの2値化しきい値を自動決定する手法 下記の既存手法を特殊ケースとして内包できるよう、一般化した式にまとめた Kittlerの2値化(MET: Minimum Error Thresholding): 2クラスの正規分布が存在すると仮定し、分布の重なる範囲にて別クラスに該当する画素が最

    古くて新しい2値化画像処理を動かしてみる(ECCV 2020論文) - OPTiM TECH BLOG
  • Rust 1.47を早めに深掘り - OPTiM TECH BLOG

    こんにちは、R&Dチームの齋藤(@aznhe21)です。 もうじきOculus Quest 2が発売されるということでドキがムネムネしています。 単体で動くVRヘッドセットなのに解像度はハイエンドレベルということで期待が膨らむばかりです。 さて、日、日時間10/9(金)、Rust 1.47がリリースされました。 この記事ではRust 1.47での変更点を詳しく紹介します。 10/9はVimで有名なウガンダがイギリスから独立した日 ピックアップ あらゆる要素数の配列で標準トレイト実装が使えるようになった パニック時のバックトレースがコンパクトになった ビルド用依存クレートが最適化されなくなった 安定化されたAPIのドキュメント Ident::new_raw Range::is_empty サンプル RangeInclusive::is_empty サンプル Result::as_dere

    Rust 1.47を早めに深掘り - OPTiM TECH BLOG
  • Production Readyと開発プロセス改善 - OPTiM TECH BLOG

    こんにちは。プラットフォーム技術戦略室SREチームの津田(@grim0h)です。 昨年の6月以来の投稿になります。 今回は、Cloud IoT OSに対して行なっているProduction Ready活動について紹介します。 ( この記事はInfra Study Meetup #3のLTで話した内容を詳細化したものです。LTの資料はこちらになります。) Cloud IoT OS とは Cloud IoT OS について簡単に紹介します。 Cloud IoT OS とは、あらゆる人に直感的なIoTデバイスの制御、データ解析、AI・クラウドサービス連携できるユーザ体験を提供するAI・IoTプラットフォームです。 マイクロサービスアーキテクチャで構成されており、コンテナ化された各サービスをKubernetesで管理しています。 www.optim.cloud Production Ready と

    Production Readyと開発プロセス改善 - OPTiM TECH BLOG
  • Rust 1.46を早めに深掘り - OPTiM TECH BLOG

    こんにちは、R&Dチームの齋藤(@aznhe21)です。 さて、日、日時間8/28(金)、Rust 1.46がリリースされました。 この記事ではRust 1.46での変更点を詳しく紹介します。 なお、この記事は公式リリースノートをベースに、意訳・編集・追記をしています。 8/28は日テレビが民法で初めてテレビ放映をした日 ピックアップ 定数文脈で一部の制御構文が使えるようになった パニックメッセージに関数呼び出し元の情報を出せるようになった 変更点リスト 言語 コンパイラ ライブラリ 安定化されたAPI Option::zip サンプル vec::Drain::as_slice サンプル Cargo 互換性メモ 関連リンク さいごに ライセンス表記 ピックアップ 個人的に注目する変更点を「ピックアップ」としてまとめました。 全ての変更点を網羅したリストは変更点リストをご覧ください。

    Rust 1.46を早めに深掘り - OPTiM TECH BLOG
  • 日本語正式サポートされた自然言語処理ライブラリspaCyのStreamlit可視化が超お手軽だった - OPTiM TECH BLOG

    R&D チームの徳田(@dakuton)です。 最近、spaCyの日語版モデルが正式サポートされたのでいろいろ触ってみたところ、解析結果ビジュアライズを全部まとめるStreamlitアプリも同じ月に提供されていることがわかったので、今回はそちらを紹介します。 なお、ビジュアライズ機能の一部(係り受け解析)は1年前の記事「その他」で紹介しています。 tech-blog.optim.co.jp 実行手順 spaCyのUniverseプロジェクトであるspacy-streamlitをインストールします。 pip install spacy-streamlit 起動用スクリプト(streamlit_app.py) import os import pkg_resources, imp import spacy_streamlit models = ["ja_core_news_lg", "ja_

    日本語正式サポートされた自然言語処理ライブラリspaCyのStreamlit可視化が超お手軽だった - OPTiM TECH BLOG
  • RustのPinチョットワカル - OPTiM TECH BLOG

    こんにちは。 先日、しばらく不動の一位を守ってきたRustVSCodeで使う記事を抜き、 私の書いた非同期プログラミングの記事の記事が一番人気になったと思いきや数日でまた抜き返されて傷心中の、 R&Dチームの齋藤(@aznhe21)です。 さて、Rustの非同期プログラミングで時々Pinを使ったり、コンパイラにUnpinが不足していると怒られたりしませんか? そんな時によく分からずuseしたり別の手段を取ったりしていませんか? 今回、このままではマズいと思ってPinを勉強して完全に理解しましたので、その成果を皆さんと共有したいと思います。 更新履歴 03/10 指摘を受け下記2点を修正しました Unpinを実装しない型もムーブ出来ることへの言及 pin-projectクレートが安全であることによる書き換え 対象読者 この記事は下記全てに当てはまる人を想定して執筆しています。 Rustのト

    RustのPinチョットワカル - OPTiM TECH BLOG
  • Edge TPU の性能を引き出すためには? - OPTiM TECH BLOG

    はじめに オプティムの R&D チームで Deep な画像解析をやっている奥村です。 Edge TPU は NVIDIA GPU と同じような感覚で使うことはできません。NVIDIA GPU よりもメモリの制約が強く、Edge TPU の性能を引き出したり、複数のモデルを1つの Edge TPU で同時に実行するにはいくつかのコツが必要になります。Edge TPU Compiler | Coral をベースに、意訳・追記したものをメモしました。 Edge TPU はモデルのパラメータデータをキャッシュするための 8MB 程度の SRAM を持っており、ここにモデルが乗り切らない場合、都度外部メモリから Edge TPU にデータを転送する必要があるため、性能低下を引き起します。また、複数モデルを 1 つの Edge TPU で実行する場合、同時コンパイル (Co-Compile) しないと

    Edge TPU の性能を引き出すためには? - OPTiM TECH BLOG
  • CUDAを一枚の絵にまとめてみた - OPTiM TECH BLOG

    まえがき 初めまして、R&Dチームの宮﨑です。趣味はFPSをやってます。150時間やってますが未だにドンかつをべられていません。普段は深層学習のベンチマークを取ったりしています。 実はひと昔前からあった深層学習。近年実用性が増して一大ブームとなっています。実用的になった背景の一つとしてGPUを用いた高速化により深層学習の学習及び推論が実用的な時間で実行できるようになったことがあります。NVIDIAから提供されるCUDAを用いるとC言語に拡張を加えた形式でCPU+GPUのヘテロジニアスコンピューティングを記述できます。 CUDAを使用するにはCPU+GPUの環境がどのようなハードウェア構成をしており、その上でCUDAがどのようなシステムを構築しているのかを理解する必要があります。この理解なしに漫然とサンプルコードを真似するだけでは意図通りのパフォーマンスが出なかったり、そもそもAPIの意味

    CUDAを一枚の絵にまとめてみた - OPTiM TECH BLOG
  • 2019インターン紹介: Edge TPU向けPoseNetのリアルタイム姿勢推定 - OPTiM TECH BLOG

    R&D チームの量子化警察こと徳田(@dakuton)です。 7月のEdge TPUアップデートにあわせて、7/30にPoseNetのEdge TPU版が公開されていた(作者Twitter動画はこちら)ため、今夏初のインターンとしてチャレンジしてもらいました。 Edge TPUアップデート内容については過去記事を参照ください。 tech-blog.optim.co.jp PoseNetとは? TensorFlow.js(TensorFlowのJavaScript版)で動作する姿勢推定モデルです。Webブラウザで人の姿勢がリアルタイムに検出できる(15FPS以上)のが特徴です。 参考記事: Real-time Human Pose Estimation in the Browser with TensorFlow.js | by TensorFlow | TensorFlow | Mediu

    2019インターン紹介: Edge TPU向けPoseNetのリアルタイム姿勢推定 - OPTiM TECH BLOG
  • Xamarin.iOS から OpenCV を使って QR コードを認識してみる - OPTiM TECH BLOG

    はじめに こんにちは。ソリューション開発部 農業開発チームの梅田です。 アンケート記事以来、約1ヶ月ぶりの再登板です。 tech-blog.optim.co.jp 今回は Xamarin.iOS から OpenCV を利用する方法をご紹介します。 Xamarin とは Xamarin とは、.NET Framework の UNIX 互換実装である Mono をベースとしたアプリケーションを作成するための開発ツールであり、その開発元の企業名です。 企業としての Xamarin は2016年に Microsoft に買収され、ツールとしての Xamarin も OSS 化され、無料で使えるようになりました。 で、何ができるかというと、共通の C# のコードで、iOS / Android / Mac アプリの開発が行えます。(昔は Windows Phone もできたんだけどどこに行ったんだろ

    Xamarin.iOS から OpenCV を使って QR コードを認識してみる - OPTiM TECH BLOG
  • Rust IDE に化ける VSCode - OPTiM TECH BLOG

    初めまして.社内の好きなエディタアンケートで Visual Studio Code (VSCode) に 1 票を投じた R&D チームの久保です.普段は深層学習を用いた画像解析やその周辺の研究開発を行っています. アンケートでは惜しくも Vim 勢に敗れてしまいましたが,2015 年にリリースされてからというもの,ものすごいスピードでユーザを増やしているこの VSCode を使って Rust の開発を行いたい人向けの記事を書いてみました.この記事を読むまで Rust (rls) と CodeLLDB拡張機能を知らなかったという人がいれば今すぐインストールしましょう.私がこの 11101 文字を使って言いたいのはそれだけです. 「Rust って何?」という方はぜひ以下の過去記事にも目を通してみてください. 必修言語Rustの他己紹介 Rust カテゴリーの記事一覧 - OPTiM TE

    Rust IDE に化ける VSCode - OPTiM TECH BLOG
  • Raspberry PiとArduinoで社内イベントのための早押しボタンを電子工作してみた - OPTiM TECH BLOG

    はじめに 19新卒エンジニアの青木です。 先日(2019/06/07)にOPTiM Dayという創立記念日イベントがあり、今回はそこでの新卒企画を紹介します この記事はOPTiM Day新卒企画に登場した早押しボタンと効果音について、軽く解説したいと思いますのでよろしくお願い致します。 イベントの様子、ざっくりと解説 OPTiM Dayとは 毎年恒例の創立記念日のイベントで、全スタッフが集まって、弊社の理念や行ってきた活動を称え合い、より高みを目指すための活力を生み出そうという目的で実施されます。 この日のために作成した前年1年間の振り返りムービーを見たり、夜は懇親会も開催されます。 目的 ・感謝:現在、これまでOPTiMに関わってくださった、ご支援いただいた方々への感謝の気持ちを新たにする​ ・達成:この1年間で我々が成したことを確認し、今日ばかりは少し自己満足気味に讃えあう​ ・理念:

    Raspberry PiとArduinoで社内イベントのための早押しボタンを電子工作してみた - OPTiM TECH BLOG
  • ひとつのポートで異なる通信プロトコルを nginx の nginScript で振り分ける - OPTiM TECH BLOG

    インダストリー事業部のイチノです。リモート製品 (Optimal Remote, Optimal Second Sight, ポケットドクターなど遠隔地とコミュニケーションするための製品) で使われるコア技術をまとめた Communication SDK を担当しています。 記事では、ひとつのポートで異なる通信プロトコルを、 nginx で振り分けたい場合に、役立つ方法を紹介します。 80 ポートや 443 ポートのみ許可しているセキュアなネットワーク環境へ、複数のプロトコルを持ったサービスを提供するといった場合に使える方法です。 nginx によるリバースプロキシの振り分け方法として、以下の6つが存在します。 IP アドレスでの振り分け ポート番号での振り分け SSL/TLS の SNI による振り分け HTTP のパスによる振り分け HTTP の Host ヘッダーによる振り分け

    ひとつのポートで異なる通信プロトコルを nginx の nginScript で振り分ける - OPTiM TECH BLOG
  • OpenAPIによるスキーマファースト開発の実施サンプルとCloud Runについて - OPTiM TECH BLOG

    こんにちは、インダストリー事業部 医療チームの高橋(@yukey1031)です。 去年のクリスマス以来の投稿です。AMIAS(アミアス)をお願いします。 さて、今回は自身の周辺業務で普段行っているOpenAPIによるスキーマファースト開発の実施サンプルと先日Google Cloudより発表された「Cloud Run」について少し触れてみたいと思います。 なお、フロントエンドVue.js+TypeScript+Axios、バックエンドはJava+SpringBootでの話です。 マイクロサービスな現場でのAPI開発 スキーマファースト開発 OpenAPI OpenAPI Generator Cloud Run 実施サンプル Requirement インターフェイス定義 サーバーサイド実装 フロントエンド実装 Cloud Runにデプロイ/接続 おわりに マイクロサービスな現場でのAPI

    OpenAPIによるスキーマファースト開発の実施サンプルとCloud Runについて - OPTiM TECH BLOG