ブックマーク / zenn.dev/kounoike (7)

  • 「ZigはCよりも速いです。」をVector/SIMD最適化で検証する

    「パフォーマンスについて言えば、ZigはCよりも速いです。」 この一文は Zig 言語の公式サイトの詳細な概要に実際に書いてある文章です。 その理由としていくつか挙げた上で最後にちらっと「ZigSIMD ベクトル型を直接公開しており、移植性の高いベクトル化コードを簡単に記述することができます。」と書いてあります。今回の記事では画像処理っぽいお題を使って実際に SIMD 最適化される様子を検証してみます。 ベンチマーク環境 OS: Ubuntu20.04 on WSL2 on Windows11 CPU: AMD Ryzen 9 5900X 12-Core Processor お題 一般的な画像データ構造の表現である、幅×高さ×4(RGBA)の長さを持つ8bit整数の配列を受け取り、in-placeでRGBの値を 10 加算して明るくするという関数を考えます。Aの値は元のままとします。

    「ZigはCよりも速いです。」をVector/SIMD最適化で検証する
    toshikish
    toshikish 2023/01/21
  • GitHub Actions で簡単にバージョン番号付きリリースとリリースノートを作成する方法

    対象読者判定フロー 以下の質問にはいかいいえで答えてください。 Q1: GitHub を使用していますか? はいの方→次の質問に進んでください。 いいえの方→対象外です。すみません。 Q2: ソースコードなどの変更は全てプルリクエストで行って(=master/main 直コミットはしていない(多少ならOK))いますか? はいの方→次の質問に進んでください。 いいえの方→まずはプルリクエストベースの開発に切り替えてみてはいかがでしょう? その後で続きを読んでください。 Q3: リリースノートをちゃんと書いていますか? はいの方→基的に対象外です。継続して書いていって下さい。楽をしたいと思ってる場合は続きを読んでください。 いいえの方→あなたは対象読者です! この記事を読んで、お手軽自動生成でも良いのでリリースノートを作成しましょう! はじめに 公開しているソフトウエアにバージョン番号を付け

    GitHub Actions で簡単にバージョン番号付きリリースとリリースノートを作成する方法
    toshikish
    toshikish 2022/02/11
  • OpenCVの新しい顔検出をブラウザでも試してみる

    この記事はOpenCV Advent Calendar 2021の 23 日目の記事です。 はじめに 3 日目の記事で紹介されているように、OpenCV 4.5.4 では新しく顔検出/顔認識の API が実装されました。この記事ではこの顔検出 API をブラウザから呼んでみることにします。ブラウザから呼び出すにあたって、先にきちんとパフォーマンスを確認して使用する解像度を決めます。更に高速化のために SIMD とマルチスレッドを使った OpenCVWasm バイナリを作ります。その後、実用的な環境を想定して Reactフロントエンドから呼び出すようにしてみます。ついでに WebRTC で実際に加工した画像が送信できることのデモまで行います。 OpenCV.js での新機能の扱い OpenCV.js で JavaScript から呼び出せる機能はホワイトリスト形式になっており、ビル

    OpenCVの新しい顔検出をブラウザでも試してみる
    toshikish
    toshikish 2021/12/24
  • ぼくがかんがえたさいきょうのWasmビルド環境

    TL;DR VS Code 前提になってしまいますが、VS Code Remote Containers 拡張最強です、という話。実際にどういう風に作れば良いかは参考リポジトリ作ったので見て下さい。 はじめに 背景ぼかしのような推論結果を使ってカメラ画像にフィルタを入れる処理を書くとき、今だと選択肢は大きく分けて 2 つあります。 tfjs を使う Wasm 経由で tflite やその他ライブラリを使う この記事では後者の Wasm を使う方に注目して、その開発環境について記載します。 先行例 w-okadaさんのリポジトリには複数の Wasm を使った事例が紹介されています。 例を挙げるとTFLite Wasm for Google Meet SegmentationやTFLite Wasm for ESPCNなどが Wasm です。 これらのビルド環境はどうなっているかというと、Do

    ぼくがかんがえたさいきょうのWasmビルド環境
    toshikish
    toshikish 2021/08/10
  • GitHubみたいなサービスを今一から作るならどの言語・フレームワークを使うか

    GitHub自体がどうなっているかは分からないが、同種のサービスであるGitLabはソースが公開されている部分もあるので参考になる。よく「GitLabRuby on Rails」と言われるが、実はGitリポジトリ操作・連携の部分は別サービスに切り出されていて、それはGoで書かれていたはず。なんかソース読んでたら突然Goになったんで覚えている。ライブラリとしては多分git2goかな。Rubyにもruggedがあるが、多分パフォーマンスとかの問題で切り替えたのだろうと思われる

    GitHubみたいなサービスを今一から作るならどの言語・フレームワークを使うか
    toshikish
    toshikish 2021/02/12
  • OpenCVがWebカメラであなたの顔を画像として取得するまでの仕組み

    全体像 全体としてはこんな感じです。レンズを通して顔の像を作るところは光学の世界、センサ面に結像された像を読み取る電子の世界。そして、センサと PC の橋渡しを USB で行う通信の世界、受け取ったフレームを処理するソフトウエアの世界、という流れで説明していきます。 物理(光学)の世界~一眼とWebカメラ(とスマホ)の違い~ 一番大きな違いは設計思想そのものです。レンズとセンサの大きさ、撮影設定などの柔軟性などに現れています。 一眼レフ:でっかいレンズ × でっかいセンサ = つよい Web カメラ:写ってればいいでしょレベル~産業用レベル スマホ:目的ごとに複数のカメラモジュールを用意したりソフトで後処理したり。ともかく小さく薄く。 光学の世界で大事なことを一つだけ(機種選択の基準として) ピント合わせ の方式はどうなっているか? マニュアルフォーカス → 自分でリング回す:ピント合わせ

    OpenCVがWebカメラであなたの顔を画像として取得するまでの仕組み
    toshikish
    toshikish 2020/12/12
  • なぜGoogle Meetの背景ぼかしが最強なのか(一般公開版)

    はじめに 最近ついに、Google Meet に背景ぼかし機能が利用可能になりましたよね。日語だとインプレスのケータイ Watchの記事などで紹介されてます。確か 2020 年 9 月末前後で順次リリースされていたと記憶しています。 このときは「背景ぼかし」の機能しかなかったのですが、最近(私が気づいたのは 2020/10/30)更にアップデートされました。アップデートで「背景差し替え」機能が付いて、ぼかし機能もぼかし効果が強弱 2 つから選べるようになりました。まだ日語のニュース記事は見てないですが、Googleによるアップデートの発表はちゃんとされています。 そして、Google AI Blog でBackground Features in Google Meet, Powered by Web MLという記事が公開され、実装についての解説がされました。 この記事はその解説記事を

    なぜGoogle Meetの背景ぼかしが最強なのか(一般公開版)
    toshikish
    toshikish 2020/11/01
  • 1