サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
tech-blog.optim.co.jp
こんにちは、R&Dチームの齋藤(@aznhe21)です。 さあみなさん、ついにこの時がやってまいりました。 本日2019/11/8にリリースされたRust 1.39により、あらゆる環境で最高速な非同期プログラミングが可能になりました。 新たな時代に乗り遅れないよう、今のうちにRustでの非同期プログラミングをマスターしておきましょう。 なお、この記事は、先日開催したOPTiM TECH BLOG Meetupの内容を大幅に加筆修正した上でエントリに仕上げたものです。 まず最初に伝えたいこと 非同期の歴史 Rustの非同期プログラミングの歴史 Rust 1.0以前 Rust 1.0 〜Rust 1.3 Rust 1.2あたり Rust 1.11あたり Rust 1.26あたり Rust 1.36 Rust 1.39 Rustの非同期プログラミングの特徴 ゼロコスト抽象化 プラットフォーム非依
こんにちは、R&Dチームの河野(@ps3kono)です。深層学習モデルの開発を担当しております。 今回は、画像分類、画像検査、顔認識や異常検知など様々な分野に利用されている深層距離学習(Deep Metric Learning)について紹介したいと思います。 Deep Metric Learningとは 定番のクラス分類と距離学習によるクラス分類の違い 距離学習の進化 1. 対照的(contrastive)アプローチ サンプル選択(sample selection) 代表的な学習手法 Contrastive loss Triplet loss さらなる改善と進化 対照的アプローチの問題点 2. Softmaxをベースにしたアプローチ 代表的な学習手法 Center loss SphereFace CosFace ArcFace さらなる改善と進化(2019年以降) 推論 深層距離学習の利点
初めまして.社内の好きなエディタアンケートで Visual Studio Code (VSCode) に 1 票を投じた R&D チームの久保です.普段は深層学習を用いた画像解析やその周辺の研究開発を行っています. アンケートでは惜しくも Vim 勢に敗れてしまいましたが,2015 年にリリースされてからというもの,ものすごいスピードでユーザを増やしているこの VSCode を使って Rust の開発を行いたい人向けの記事を書いてみました.この記事を読むまで Rust (rls) と CodeLLDB の拡張機能を知らなかったという人がいれば今すぐインストールしましょう.私がこの 11101 文字を使って言いたいのはそれだけです. 「Rust って何?」という方はぜひ以下の過去記事にも目を通してみてください. 必修言語Rustの他己紹介 Rust カテゴリーの記事一覧 - OPTiM TE
まえがき 初めまして、R&Dチームの宮﨑です。趣味はFPSをやってます。150時間やってますが未だにドンかつを食べられていません。普段は深層学習のベンチマークを取ったりしています。 実はひと昔前からあった深層学習。近年実用性が増して一大ブームとなっています。実用的になった背景の一つとしてGPUを用いた高速化により深層学習の学習及び推論が実用的な時間で実行できるようになったことがあります。NVIDIAから提供されるCUDAを用いるとC言語に拡張を加えた形式でCPU+GPUのヘテロジニアスコンピューティングを記述できます。 CUDAを使用するにはCPU+GPUの環境がどのようなハードウェア構成をしており、その上でCUDAがどのようなシステムを構築しているのかを理解する必要があります。この理解なしに漫然とサンプルコードを真似するだけでは意図通りのパフォーマンスが出なかったり、そもそもAPIの意味
はじめまして。R&Dチーム所属、20.5卒の伊藤です。 普段の業務では自然言語処理と格闘していることが多いです。 今回は自然言語処理モデルとして有名なBERTをWebAssemblyを使用してフロントエンドで動かしてみた話になります。 最近、自然言語処理ライブラリとして普段お世話になっているHugging Face社のTransformersのTokenizerがRustで実装されていることを知り、それならばWebAssemblyにコンパイルして動かせるのではないかと試したみたのがきっかけです。 Tokenizerのみ動かしても実用性に乏しいため、Tokenizerから得られた結果からBERTを用いた推論をブラウザで動作させるまでを行い、備忘録がでら手順をまとめました。 どなたかの参考になれば幸いです。 8/26追記 本記事内のコードを含むリポジトリを公開しました!Dockerを使用してブ
はじめに 皆様こんにちは。OPTiM新卒1年目エンジニアの青木です。 前回は早押しボタンなんかを作っていました。 tech-blog.optim.co.jp 今回は、PHP フレームワークの Laravel を、PostgreSQL と Vue.js と組み合わせて作成する TODO アプリを通して紹介します。 このフレームワークらはこちらの記事でも密かに利用しています。 tech-blog.optim.co.jp OPTiMではあまり利用されていませんが、一部のアプリケーションで実利用されている箇所もございます。 PHPは昔のイメージからかなり避けられていていますが...今のPHPとそのフレームワークはすごく発展していてとても使いやすいので是非使っていただきたい!という気持ちがあります。 ですが、現状はあまり利用していただけなくて個人的には悲しい気持ちでいっぱいです。 そんなPHPですが
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_
こんにちは。 先日、しばらく不動の一位を守ってきたRustをVSCodeで使う記事を抜き、 私の書いた非同期プログラミングの記事の記事が一番人気になったと思いきや数日でまた抜き返されて傷心中の、 R&Dチームの齋藤(@aznhe21)です。 さて、Rustの非同期プログラミングで時々Pinを使ったり、コンパイラにUnpinが不足していると怒られたりしませんか? そんな時によく分からずuseしたり別の手段を取ったりしていませんか? 今回、このままではマズいと思ってPinを勉強して完全に理解しましたので、その成果を皆さんと共有したいと思います。 更新履歴 03/10 指摘を受け下記2点を修正しました Unpinを実装しない型もムーブ出来ることへの言及 pin-projectクレートが安全であることによる書き換え 対象読者 この記事は下記全てに当てはまる人を想定して執筆しています。 Rustのト
R&D チームの徳田(@dakuton)です。 最近は画像とテキストの狭間にいます。 今回記事のまとめ 簡単にまとめると以下のとおりです。 いくつかの超解像(高解像度化)モデルがOpenCV extra modules(opencv_contrib)インストール + コード数行記述で導入可能 超解像に限らず、文字が一定サイズ以上になるような前処理 -> OCR解析 を実施すると、OCR精度改善につながることがある 超解像による見た目の滑らかさに比例して、OCR精度改善につながるわけではない 低計算コストな画像拡大から超解像に変更する恩恵は発生しにくい テスト条件を変えた場合、違った結果になる可能性あり(用いるOCRエンジン、画像の劣化条件、OpenCV未提供の後発モデル利用など) 実験内容 利用するOCRエンジンの実行条件は変えずに、前処理部分のみ変更した場合のOCR精度・速度変化を調べま
Rust 1.36がリリースされ、皆さん待望のFuture関連のAPIが安定化されました。 この記事ではFuture関連APIを巡る過去と未来を紹介します。 Q&A(TL; DR) 長くなってしまったので要約をまとめました。 細かい話は目次以降をご覧ください。 Futureは何のために必要? Futureは非同期処理を抽象化したもので、Rustにおけるあらゆる非同期処理はFutureの上に成り立ちます。 処理をFutureによって隠蔽することで、 ただ非同期に処理するだけでなく処理のパイプライン化、 すなわち単一のスレッドで複数の処理を実行出来るようになります。 futuresクレートではだめなの? async/await構文を入れるために言語コアに取り込まれました。 futures 0.1と合わせて使える? futures 0.3には互換性レイヤーがあり、相互に変換出来るため問題ありませ
こんにちは、インダストリー事業本部 医療チームの高橋(@yukey1031)です。 去年のクリスマス以来の投稿です。AMIAS(アミアス)をお願いします。 さて、今回は自身の周辺業務で普段行っているOpenAPIによるスキーマファースト開発の実施サンプルと先日Google Cloudより発表された「Cloud Run」について少し触れてみたいと思います。 なお、フロントエンドはVue.js+TypeScript+Axios、バックエンドはJava+SpringBootでの話です。 マイクロサービスな現場でのAPI開発 スキーマファースト開発 OpenAPI OpenAPI Generator Cloud Run 実施サンプル Requirement インターフェイス定義 サーバーサイド実装 フロントエンド実装 Cloud Runにデプロイ/接続 おわりに マイクロサービスな現場でのAPI開
はじめまして、OPTiMの久末です。私は現在R&Dチームに所属している新卒1年目のスタッフで、普段は様々な物体の行動を映像から解析する日々を過ごしています。 今回はそんな私が、普段使っている技術に関して、そのバックボーンとなる部分も含めてお話しさせていただければとおもいます。 なお、今回のブログの内容は以前のブログで和田から紹介させていただいた「OPTiM TECH Seminar」で私がお話しさせていただいた内容を元に再構成しています。 そもそもなぜニューラルネットワークが流行ったのか ILSVRC ImageNet 有名な深層学習手法 VGG GoogleNet ResNet 機械学習による行動認識の歴史 行動認識とは 従来の手法 3D-CNN 行動分類データセット 3D-CNNの発展 3D-ResNets 全体的な流れ さいごに そもそもなぜニューラルネットワークが流行ったのか 現在
こんにちは。Optimal Bizのサーバーサイドに関する開発を担当している伊藤です。 皆さんCIは何を利用していますでしょうか? Optimal BizではGitLab CI/CDを利用しています。 単体テスト・ビルド・デプロイ等CIの用途は多岐にわたりますが、実際にそれらを実行するPCを必要な数だけ常に起動しておくと無駄な料金がかかってしまいます。 そこで、今回はGoogle Cloud Platform(以降、GCP)のプリエンプティブル VM インスタンスをGoogle Kubernetes Engine(以降、GKE)でオートスケールさせることで、CIリソースを格安で確保する事例を紹介します。 利用例 Optimal Bizチームの場合は「RSpecをGitLab CI/CDを使って並列実行する」で紹介した大量の単体テストを約20台のノードで並列実行するために利用しています。 ざ
ご無沙汰してます。中野です。 相変わらずNATSやNSQやら、AWSやAzureやらと戯れてます。 はじめに IoTの流行りとともに脚光を浴びた通信プロトコルにMQTTと呼ばれるものがあります。 MQTTがIoTのシーンにおいて、HTTPなどの他のプロトコルと比較して、 プロトコル的にどう優れているのか、どう劣っているのか、結局ユースケース次第なのでここでは割愛します。 ただ事実としてあるのは、 Amazon Web Services (AWS) Microsoft Azure Google Cloud Platform (GCP) らが、IoT向けのメッセージブローカーとしてMQTTをサポートした以上、 MQTTというプロトコルの存在を無視はできないということです。 (製品に採用するかどうかは、ユースケース次第なのでまた別の話です。) (MQTTそのものの良し悪しより、それぞれのクラウド
はじめに こんにちは.R&D チームの久保です. 現在 JavaScript や JavaScript にトランスパイルする言語 (TypeScript, 新し目の ECMAScript など) が主流であるフロントエンドの Web アプリケーションフレームワーク界隈ですが,数年前に WebAssembly の実行が主要ブラウザ全てでサポートされて以来,ひそかに他の言語によるフレームワークが増えつつあるのをご存知でしょうか?しかもそれらは,JavaScript でデファクトスタンダードとなりつつある React や Vue.js などと同様,仮想 DOM を実装していたりします. 例としては C# (.NET) の Blazor, Rust の Yew, Go の Vugu, C++ の asm-dom などがあります.ただ,現時点ではその多くが実験的なプロジェクトであり,今すぐに Jav
概要 Optimal BizのWindows AgentはながらくVisual Studio 2005とVisual Studio 2015を併用してビルドする必要がありました。Visual Studio 2015化対応は2012年のVisual Studio 2012化対応からスタートしていましたが、対応範囲の大きさからモジュールごとにVisual Studio 2015化対応を行ってきました。そして2024年リリースのBiz 9.19.0にてVisual Studio 2015化対応は完了を迎えました。 しかし、埋め込まれたバグの修正にはCOMの理解が不可欠であったため、2020年代に突入した今になって私達はこれまで正面戦争を避けてきたCOMを0から学び直す必要がありました。そしてATLの不思議な挙動やSTAにおける再入との戦いを乗り越え、無事にリリースされました。 はじめに Opti
初めまして、R&Dの加藤です。R&Dでは珍しく中途入社です*1 。業務は農業や医療のプロジェクトでDeep Learningを使った画像解析を主に担当しています*2。 また、終業後は不定期(主に月曜日)に職場の人達と一緒に皇居を走っています。先日開催された多摩川のランニングイベントでは、10kmコースを43分で走れました! 今回の記事では、Deep Learningによらず機械学習や統計の場面でも良く出現するF1 score(F値)とIntersection over Union(IoU)の意味を理解して使い分けることを目標とします*3。 そもそもなぜ精度評価が必要? 用語のおさらい 混同行列について(TP/TN/FP/FN) 評価指標について Precision/Recall/F値(Dice係数)/IoU(Jaccard係数) Precision(適合率) Recall(再現率) F値(
はじめまして。オプティムのR&Dに所属している新卒2年目の板垣です。 普段は、AI の学習に必要な教師データを作成するためのアノテーションツールの設計・開発・運用を行なっています。 アノテーションツール自体は Web アプリで、クライアント側は React と TypeScript、サーバー側は Go で実装しています。 さて、先日 Clean Architecture 達人に学ぶソフトウェアの構造と設計 という本が ITエンジニアに読んでほしい!技術書・ビジネス書 大賞2019 の技術書部門ベスト10にノミネートされました。 本記事を読もうと思って下さった方の中には、この本を読もうと思っている、または、もう読んだという方が結構いらっしゃるのではないでしょうか。 かくいう私も、携わっているソフトウェアのソースコードがひどくて(というより、そのアーキテクチャでは耐えられなくなってきたと言った
こんにちは、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:
R&Dチームの齋藤です。最近モニターアームを(個人的に)買ってその便利さに心底満悦しています。 さて、前回はRust言語そのものを紹介しましたが、 今回はRustにおけるユニットテストの書き方とカバレッジの測り方を、 実際に医療機器ソフトウェアの開発の中で体験した内容を使って紹介します。 ユニットテスト テストの書き方 テストを実行する その他 カバレッジを測る カバレッジツールの比較 Tarpaulin cargo-cov cargo-kcov cargo-kcovのインストール カバレッジを計測する コード片を無視する ファイルを無視する カバレッジ結果を標準出力に出す Dockerの中で実行する CIで勝手にカバレッジ さいごに ライセンス表記 ユニットテスト 某宇宙の乗り物が発進するときに設備の故障が無いか、進路上に障害物が無いかをチェックして、 そのあと「システムオールグリーン」
はじめに 19新卒エンジニアの青木です。 先日(2019/06/07)にOPTiM Dayという創立記念日イベントがあり、今回はそこでの新卒企画を紹介します この記事はOPTiM Day新卒企画に登場した早押しボタンと効果音について、軽く解説したいと思いますのでよろしくお願い致します。 イベントの様子、ざっくりと解説 OPTiM Dayとは 毎年恒例の創立記念日のイベントで、全スタッフが集まって、弊社の理念や行ってきた活動を称え合い、より高みを目指すための活力を生み出そうという目的で実施されます。 この日のために作成した前年1年間の振り返りムービーを見たり、夜は懇親会も開催されます。 目的 ・感謝:現在、これまでOPTiMに関わってくださった、ご支援いただいた方々への感謝の気持ちを新たにする ・達成:この1年間で我々が成したことを確認し、今日ばかりは少し自己満足気味に讃えあう ・理念:
はじめに オプティムの 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) しないと
(新元号が発表されましたね。いらすとや さん仕事早い.....!) 新社会人・学生の皆さま、御入社・御入学おめでとうございます! はじめまして。プラットフォーム事業本部の Kikuchi です。 普段は Cloud IoT OS のアカウント管理・認証・権限管理周りの機能検討や設計・開発をやっています。 主な開発言語 は Rust ではなく Ruby です。 Object#tap とか可愛いですよね。 さて、少し前のことですが、OpenID TechNight #16 ~ OpenID Connect 5周年記念 というイベントで、「OPTiM サービスでの OAuth 2.0/OpenID Connect と周辺技術の活用事例」というテーマで Lightning Talks をさせていただきました。 LT ということもあり時間が限られていたため、今回はネタ落ちした内容をご紹介していこうか
こんにちは、R&Dチームの齋藤(@aznhe21)です。 さて、本日、日本時間8/28(金)、Rust 1.46がリリースされました。 この記事ではRust 1.46での変更点を詳しく紹介します。 なお、この記事は公式リリースノートをベースに、意訳・編集・追記をしています。 8/28は日本テレビが民法で初めてテレビ放映をした日 ピックアップ 定数文脈で一部の制御構文が使えるようになった パニックメッセージに関数呼び出し元の情報を出せるようになった 変更点リスト 言語 コンパイラ ライブラリ 安定化されたAPI Option::zip サンプル vec::Drain::as_slice サンプル Cargo 互換性メモ 関連リンク さいごに ライセンス表記 ピックアップ 個人的に注目する変更点を「ピックアップ」としてまとめました。 全ての変更点を網羅したリストは変更点リストをご覧ください。
R&Dチーム所属の伊藤です。GiNZAについて検索しようとして(地名の)銀座についての結果が出てくると悲しくなります。 今回はチャットボットの作成についてです。前から気になっていたRasaを試してみたので備忘録がてらまとめてみました。 はじめに 準備 ドメインの設定 intents entities slots responses forms actions モデルの設定 language pipeline policies モデルの訓練データ nlu rules stories エンドポイント設定 モデル訓練 チャットボット実行 おわりに はじめに RasaはRasa Technologies GmbHより提供されるオープンソースの対話システム作成フレームワークです。 Pythonで書かれており、自然言語理解のモデル訓練・推論環境や対話管理ツール、データベースやAPIに接続するためのエン
こんにちは、R&Dチームの齋藤(@aznhe21)です。 さて、本日、日本時間2/12(金)、Rust 1.50がリリースされました。 この記事ではRust 1.50での変更点を詳しく紹介します。 2/12はダーウィンの日 *1 *2 ピックアップ Rust財団が誕生 ディレクトリ内容を変更した際のbuild.rsの再実行 boolの値でOptionを返す関数 値域を制限する関数 配列を同じ値で埋める関数 安定化されたAPIのドキュメント bool::then サンプル btree_map::Entry::or_insert_with_key サンプル f32::clamp パニック サンプル f64::clamp パニック サンプル hash_map::Entry::or_insert_with_key サンプル Ord::clamp パニック サンプル RefCell::take パニ
こんにちは。R&Dチームの河野です。主な担当業務は機械学習モデルの開発です。 タイから日本に留学し、卒業後日本企業に就職していました。データ分析・機械学習の業務経験が3年程度で、R&Dチーム唯一の女性かつ外国人のメンバーです。 直近の仕事はディープラーニングによるクラス分類モデルの開発を担当しており、今回はモデル精度評価によく使われる評価指標について初心者向け説明させて頂きたいと思います。機械学習モデルの精度改善には課題に適切な評価指標の選択がすごく重要のため、各評価指標の理解が必要になります。分類モデル開発に興味を持っている方・挑戦してみたい方にご参考になれば幸いです。 基本的な用語 ポジティブとネガティブクラス 混合行列 評価指標 正解率(Accuracy) 適合率(Precision) 再現率(Recall) F値(F1-score) しきい値とprecision-recallのトレ
ついにRustの深掘りがシリーズ化してしまいました。R&Dチームの齋藤です。 先週からTwitterを始めてみました(@aznhe21)。 さて、本日、日本時間4/12(金)にRust 1.34がリリースされました。 この記事ではRust 1.34での変更点を詳しく紹介します。 なお、この記事は公式リリースノートをベースに、意訳・追記をしています。 ピックアップ TryFrom/TryIntoが安定化 iter::from_fn/iter::successorsが追加 usize/isize以外の整数型にもアトミック型が追加 符号付き整数型にもNonZeroが追加 cargoで代替レジストリが使えるようになった 変更点リスト 言語 コンパイラ ライブラリ 安定化されたAPI std & core Any::type_id Error::type_id atomic::Atomic{I8,I
こんにちは。プラットフォーム技術戦略室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 と
次のページ
このページを最初にブックマークしてみませんか?
『OPTiM TECH BLOG』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く