高橋かずひとのプログラミング、その他、備忘録。

日々調べてたことや、作ってみたものをメモしているブログ。 お決まりの断り文句ですが、このブログに書かれている内容は個人の見解であり、所属する組織の公式見解ではありません。チラ裏。

夏休みの自由研究:六角形の2次元コード🦓

今年の夏休みの自由研究です。
六角形の2次元コードで、SF系の漫画とかゲームに登場するようなイメージです。

例年は、ネタの要素はありつつ、多少の実用性とか仕事への応用も視野に入れたものを
作ったり試したりしているのですが、今年は実用性皆無です(QRコード使えばよいし)

いつか作ってみたいと思いつつ、実用性がほぼ無いのに実装量が重めという難儀なもので、中々作れなかったのですが、、、
今年はコーディングエージェントのパワーもあり、ある程度動くところまで作りこむことができました🦔

 

作成したコードは以下にコミットしています👀
Pyodide利用でブラウザで動作するデモも同梱しています。

github.com

 

追記:

Zennに簡単にまとめた内容を投稿しました🦓

zenn.dev

 

以上。

PaddleOCRv6をONNXに変換してお試し🦔

PaddleOCRv6をONNX変換して、推論スクリプトからpyclipperとshapely依存を排除したサンプルコードです👀

精度を追い求めたいならPaddleOCR-VLのほうが良いです(もちろん相応に処理が重いですが)

 

あと、今回からWebデモ(onnxruntime-web利用)を追加しました。
割とお手軽に動作確認できるようになりました。
PaddleOCR v6 ONNX Web Demo

 

リポジトリは以下です。

github.com

ピュアGo実装でのONNX推論ライブラリ v0.0.6🧪

確実に僕しか利用していないだろうと言えるライブラリです。
ピュアGo実装のONNX推論ライブラリ🦔

以前、Opusが「もう最適化の余地はありません」と言っていましたが、Fableにまかせたら以下の改善をぶち込んでくれました👀
やるやん、、、( ´ー`)y-~~

■ 成果
・個別モデルの高速化例:
  DEIMv2 atto: 2.2 倍
  UVDoc: 2.7 倍
  PaddleOCRv6(det+cls+rec 一式): 1.7 倍
  MobileSAM ViT encoder: 1.3 倍
  candy / mosaic(スタイル変換): 1.3 倍

■ グラフ最適化パス(11 → 18 パス)
・追加: fold_constants / fuse_layer_norm / fuse_rms_norm(PyTorch 逆数形対応)/ fuse_hardswish / simplify_transposes
・パス順序修正: fuse_conv_add_bias を BN 融合より前へ(Paddle 系 Conv→Add→BN で BN 融合が不発だった問題を解消)
・バグ修正: 新パスがグラフ出力名を書き換えないようガード追加

■ Conv カーネル
・ストリップ融合実行: col 行列全体(数十 MB)を作らず、L2 に収まる行ストリップ単位で im2col→GEMM を融合し worker へ動的分配
・並列分割の形状適応: 行(OC)分割に加え列(HW)分割を新設。小チャネル大空間 conv で効く
・汎用 depthwise カーネル: 3×3 特化 → 任意 K×K + チャネル並列(7×7 / 5×5 depthwise が対象)
・dilated im2col の interior fast path(境界チェック排除、stride1 は行 copy)
・ConvTranspose 並列化(GEMM 列分割 + col2im の oc 並列)
・Winograd F(2×2,3×3) 追加: 3×3 s1 conv を FLOP 1/2.25 で計算。小チャネルでは逆効果と実測されたため C≥64・OC≥64・タイル数≥900 に限定適用

■ GEMM カーネル
・B パネルパッキング(BLIS 流): microkernel に C ストライドを分離し、B パネルを連続バッファへパック(累積順序不変=結果ビット一致)
・MatMul: packed 重みの N-D 入力対応 + 行並 lace 化

■ その他のカーネル
・elementwise 活性化の並列化(FastGELU / RelurdSwish / Softmax。重い op と軽い opで並列化閾値を分離)
・ReduceMean: 末尾連続軸(GAP / LayerNorm 形状)の fast path + 並列化
・Resize: bilinear 並列化 + nearest の NCHW   + 行 copy)
・MaxPool 並列化、Pad の行 copy 化
・Transpose / Slice: 毎要素の座標分解(除算)→ 連続ラン copy + 差分更新カウンタ + 並列化(ViT 系で -20%)

■ KernelConfig(7 → 11 フラグ)
・追加: UseParallelOps / UseReduceFastPath /
・既存ギャップ修正: UseTiledGEMM が conv 系 GEMM で無視されていた問題を解消(全最適化がオンオフ可能に)

kazuhito00.hatenablog.com

github.com

LocateAnything-3B 味見👀

LocateAnything-3Bさんを味見🦔

結構早くて、(意地悪な対象じゃなければ)結構品質が高いのですが、、、
NVIDIAライセンス(ざっくりいうとNVIDIA関連会社以外は商用不可)なのが、ちょっと使いにくいんですよねー。。。

 

お試ししたノートブックは以下にコミットしています。

github.com

つくろがや!4 に展示してきました👾

2026年5月9(土)、10(日)開催の「つくろがや!」に展示してきました。
ちなみに、私は今回、土曜日のみの展示です。
「つくろがや!」は、さまざまな分野の人が日頃のものづくりを発表し、交流するものづくり展示会です🦔

展示は「フラッピーバードを画像認識してソレノイドで物理的に操作」みたいな感じの内容です👀

動作している様子は以下↓


ちなみに本当は以下のようにゲームパッドにソレノイドを装着して操作予定だったのですが、、、
ゲームパッド故障で急遽ダイソーで板と瞬間接着剤を買ってきて、キーボードのEnterキー押下に変更。現地デバッグ😇

 

開催時間の半分くらい現地調整していて、あとはほぼブースで説明していたので、
他の展示をサラッとしか見ていないのですが、
やはりオフライン開催のメイカー系イベントはパワーを貰えてよいですね👀

技術書典20:マイナーニッチ本をオンライン頒布した収支報告👻

はじめに

技術書典20お疲れさまでした🦔

高橋はオンラインで「ONNXとは言語である」というマイナーニッチ本を頒布しました。
今回はその収支報告です。


ちなみに、内容はネタに全振りなので誰の役にも立たないことを保証します。
そして、まさかのタイミングで、kaggle の The 2026 NeuroGolf Championship(ONNXいじる系コンペ) 始まってしまい、
ONNXを学ぶ目的で購入してしまった方いたら、ごめんなさい😇

値段設定について

高橋はある部署に所属していた時、上長によくこんなことを言われていました。

「ジャンルを掛け合わせても、両方のジャンルのユーザーは獲得できない。
RPGとACTを掛け合わせたら、RPGファンとACTファンを取り込めるのではなく、
RPGもACTも両方好きなユーザーしか獲得できない。」

何が言いたいかと言うと、今回マイナー(ONNX)でニッチ(言語ネタ本)な内容を
好きなように書いたので、売れても10部程度だろーな。と思っていました🦔

でも、自分用に印刷して本にしたいし、トントンくらいになるように
テキトーに電子500円、電子+紙1000円という値段設定にしました。

いや、先に書きますが、ちょっと想定より売れてしまったので、
もし次に参加することあったら、500円で統一しよーと思います( ´ー`)y-~~

 

頒布数

今回は合計58部でした👀

電子のみ:34部
電子+紙:24部

 

損益

合計売上 41,000 - 印刷費 11,100 - 作業時間 プライスレス = 29,900

作業時間は計測していないので雰囲気ですが、
GitHubリポジトリ10時間程度?、執筆時間20時間程度?かなあ、、、たぶん、、、( ´ー`)y-~~

 

部数推移

部数の推移は以下の通りです。

いろいろな人が仰っている通り、
オンラインマーケット開始日、オフライン開催日、最終日にある程度まとまった部数がはけていますね👀

 

以上。

 

技術書典21は、2026年11月21日(土)〜12月6日(日)、オフライン会場は11月23日(月・祝)らしいです。
たぶんオフライン参加は都合つかないので、参加してもオンライン参加だと思います🤔





 

技術書典20(オンライン参加) で「ONNXとは言語である」を出しました🦔

何か技術同人誌を書きたい、とは思っていたものの腰が重くて中々行動していなかったやつです。

オンライン参加なら気軽に行けるかー。と思ってネタを考えずに参加登録して、締切駆動開発で書いた本です。
もう少し真面目なネタで書くつもりだったのですが、いつのまにかネタ全振りになってしまいましたが、、、👀

タイトルを見ていただければ分かるとおり、参加者が求めるものなどは全く考えず、売る気がない本です。
ちなみに僕は「同人は商業ではないため、ニッチ過ぎる本を書いても良いのが美徳」だと思っているタイプの人間です。

無料公開で良いかなー。とは思っていたのですが、せっかく書いたのだから自分用に印刷したくなり、電子500円、電子+紙1000円の価格にしております。

10部を後から印刷予定なので、そこがトントンになるくらいだと助かる👻

techbookfest.org

 

以下、サンプルです↓