お疲れ様です。 昨日mmapを使った共有メモリでのプロセス間データ共有について記事を書いていました。その補足というかちょっとした改良を考えたのでメモ的に残しておきます。 fallpoke-tech.hatenadiary.jp 内容としては、昨日の記事の中で書いた読取側でバイト列から目的のデータを取り出す部分で長さを直接スライスで指定して取得していた部分の改良になります。このままの書き方ではデータのサイズが変わった時に直接この部分のインデックス指定を書き換えないといけないと思います。 記事の引用 読み取ったバイト列をスライスで画像データ/幅/高さの該当部分を切り出します。(ここもうちょっとスマ…
Pythonで共有メモリを使ったプロセス間のデータのやり取りを実装(標準モジュール「mmap」)
お疲れ様です。 Pythonでプロセス間でのデータのやり取りをするにあたり、標準モジュールのmmapを使って共有メモリで実現する方法があります。 2年前くらいに必要があり作ったコードですが、復習の意味も込めて掘り出して再度書いてみたのでこちらにも備忘録として残します。 プロセス間のデータのやり取りについて プログラム 送信元(process1.py) 受取先(process2.py) 実行結果 実用性 プロセス間のデータのやり取りについて python ○○.pyで実行したプロセス内でデータを扱うことになりますが、基本的に個々のプロセス内でしか使えません。構築するシステムによっては複数のプロセ…
「pfnet/plamo-embedding-1b」をChromaDBのEmbeddingで使ってみた
お疲れ様です。 今日の昼頃Preferred Networks(PFN)からPLaMoをベースにしたテキスト埋め込みモデル(Embeddingモデル)が公開されていました! tech.preferred.jp この公開された「plamo-embedding-1b」ですが、他の日本語テキスト埋め込みモデルと比較してもかなり性能が良いとのこと。 このモデル自体はHugging Faceで公開されており、ライセンスもApache v2.0ライセンスなので商用利用可。めちゃくちゃありがたいです。 huggingface.co とにかくまずは使ってみたいということで、ChromaDBのEmbedding…
Streamlitで実行中のプロセスを終了できない問題【備忘録】
お疲れ様です。 WindowsでStreamlitのWebアプリを開発する際、プロセスを終了できないことがあったので調べてみた備忘録です。大した問題ではないですが気になったので…。 ※この状態でCtrl+Cを押しても終了できないという状態↓ 発生する条件 「実行したままブラウザを閉じた時」 または 「ブラウザで起動したアプリのタブを消した時」 対処方法 もう一度Webアプリをブラウザで表示した状態にして、Ctrl+Cを押してプロセス終了 要はアプリがブラウザ上で表示された状態でないとプロセスが終了できないようです。 ちなみにブラウザを閉じた状態からCtrl+Cを押していると、再度ブラウザで表示…
お疲れ様です。 PythonのWebアプリフレームワークであるStreamlitを使ってログイン画面とユーザ登録画面を作ってみたのでその紹介。 以前作成していたチャットボットのアプリに実装していたものをデモ用に機能だけを取り出した感じです。↓ github.com 今回作成のコードは以下にあります。 github.com 使用したライブラリはStreamlitとStreamlit-Authenticatorです。 Streamlit-Authenticatorにユーザ認証に必要な機能がそろっています。公式のGitHubが以下↓ github.com インストール pip install str…
お疲れ様です。 表題のコードが仕事上で必要になったので作成してみました。 過去に作成したコードがあったのでそれを利用しつつ、扱いやすいように作成しなおした感じです。 fallpoke-tech.hatenadiary.jp 作成したコードは単体のリポジトリとしてこちらに置いています。現在はVOCデータセットの形式のみ対応しています。COCOデータセットも使うことがあるのでゆくゆくはそちらも対応したいと思っています。アノテーションファイルの読み込み部分だけ作成すればできるので時間があるときにでも作成します。 github.com 使い方 settings.tomlの設定を変更し、main_vis…
お疲れ様です。 Gemma3が公開されましたね。 Twitterで話題になっていて、使ってみたい欲が高くなったのでとりあえず試してみました。 使用したモデルは以下です。RTX4060ti(VRAM16GB)を使用してローカルで動かしました。 huggingface.co 事前準備 Gemma3を使うためにはいろいろと準備が必要だったのでこちらもメモ的にまとめておきます。 Hugging Faceのアカウント作成 こちらのサイト参考にアカウント作成までやりました。 Hugging Faceの使い方!アクセストークン作成からログインまで EdgeHUB Gemmaの利用登録 Hugging F…
自作APIとの通信をするPythonコードのメモ(requestsモジュール)
お疲れ様です。 今回はFastAPIで作成したAPIにPythonコードからリクエストをかけてデータ取得するコードをざっくりとまとめました。 コード解説 コードは下記に残してありますので詳細を確認したい場合はご確認を。実際にGitHubに挙げているコードを見てもらった方がわかりやすいとは思います。 機能は自体はrequestsモジュールを使って実装しました。 github.com FastAPIのコードに関しては以前作成のものをベースにしています。必要があればこちらもご確認ください。 fallpoke-tech.hatenadiary.jp 各変数の中身は以下。 sample_data = {…
お疲れ様です。 引き続きDockerの勉強を進めています。 その中でPythonのパッケージ管理ツールのuvを使って環境設定するdevcontainerを作成しましたのでそれをご紹介。 uvについて プログラミング言語Rustで作成された高速なPythonのパッケージ管理ツールです。 公式サイト docs.astral.sh 個人的に使用するメリットとしては以下が挙げられます。 ライブラリのインストールが高速 pyproject.tomlでプロジェクト管理 DockerでPythonのプロジェクトを作成するにあたりpipenvなどいろいろ試した結果、現状はこのuvが最も使いやすいという結論にな…
WSL+Docker+VSCodeでCUDA環境を作成した備忘録
お疲れ様です。 最近は業務でDockerを使用することも増え、個人的やっている内容もDocker使えればみたいな場面が増えてきました。 そういう背景から勉強も兼ねてDockerの環境を構築していたのでその備忘録です。 基本的には参考サイトのリンク集です。 Linuxの知識はそれほど無いのでいろんな記事を参考にさせていただきました。 環境構築 Visual Studio Codeのインストール WSLのセットアップ Dockerのインストール NVIDIA Container Toolkitのインストール 動作確認 準備 コンテナの作成 実際に動かしてみる 参考サイト 環境構築 Visual S…
アップロードされたファイルのデータをFastAPIで処理するコードのメモ
お疲れ様です。 以前FastAPIでファイルダウンロードをするAPIを作成しました。 fallpoke-tech.hatenadiary.jp 逆にフロントエンドからアップロードしたものをFastAPIでデータとして受け取るというのも使いどころが多そうに感じたので、今回はそのAPIを作成してみました。 作成コード(GitHub) github.com 前回同様main.pyを実行するとFastAPIから下記のようなUIが表示されます。 上側のUIが今回作成のファイルアップロードの部分になります。ファイル選択のボタンでエクスプローラーからファイルを選択し、アップロードボタンでFastAPIと通信…
セグメンテーションモデルMask2Formerについて調べたまとめ
お疲れ様です。 商用利用可能で性能のよいセグメンテーションモデルが必要になったので調査した内容をメモに残しておきます。 リンク 概要 実装 リンク 論文 arxiv.org 論文解説 speakerdeck.com 公式実装 github.com 概要 以下は生成AI(Gemini)に聞いた内容。 Mask2Former は、様々なセグメンテーションタスクを統一的なフレームワークで実行できる、非常に強力で汎用性の高い最新のセグメンテーションモデルです。 2022年に発表され、瞬く間にセグメンテーション分野で注目を集めました。 Mask2Former の重要なポイント 統一されたアプローチ (U…
GitHub CodeSpacesでChromaDBを使う際のエラー対処【備忘録】
お疲れ様です。 会社の勉強会の関係でGitHub CodeSpacesを使ってRAGの実行をしたかったのですが、ChromaDBでデータベース作成をする際にエラーが起こっていました。その対処方法を調べて無事使用できるようになったので対処方法のメモを残しておきます。 エラー内容 対処方法 エラー内容 内容としては、SQLiteのバージョンがChromaDBの要件を満たしていないというものです。 対処方法 apt installコマンド等でバージョンを上げようとしましたがうまくいかず…。 いろいろ調べている中で見つけた下記のIssuesを参考に対応しました。 github.com 対処方法として下…
FastAPIでファイルダウンロードのAPIを作成するコードのメモ
お疲れ様です。 業務内でFastAPIを使ってcsvファイルやexcelファイルをダウンロードするAPIを作成したので、忘れないうちにメモ。 最近はWeb系のコード作成も増えていて使いどころも多くなってくるのかなと思っています。 作成コード(GitHub) 実装 FileResponseを使用したパターン StreamingResponseを使用したパターン 作成コード(GitHub) github.com 実行して立ち上がったサーバにアクセスすると下記のようなWebUIが表示されます。 ボタンを押すと適当な内容が記載されたサンプルのcsvファイルかexcelファイルがダウンロードされます。 …
Pythonで簡易的なGUI作成ができるライブラリ「Gooey」
お疲れ様です。 今回はちょっとしたライブラリ紹介的な記事です。 Pythonで使用できる「Gooey」というライブラリをですが、Pythonスクリプトを簡単にGUI化できます。結構前から使っていたのですが日本語の記事がほぼ無いのでせっかくなのでまとめようと思います。 (自分用の備忘録としても残しておきたいといういつもの動機です笑) Gooeyの公式GitHubリポジトリはこちらです。 github.com また、公式の実装例もありますので気になる方はこちら。 github.com Gooeyの概要 Gooeyを使うメリット・デメリット 👍ポイント 👎ポイント 実際に実装する場合 参考サイト 日…
お疲れ様です。 今回は機械学習の界隈で話題のRAdamScheduleFreeという新しいoptimizerを試したいと思います。 なんでもAdamWと同等かそれ以上の性能だとか…! 詳しい内容は作成者さんのZennをご確認ください。今回私がやるのはとりあえずの実装のみ…。 zenn.dev 条件設定(実行環境、使用モデルなど) 実装 結果 比較(AdamWでの結果) 所感 条件設定(実行環境、使用モデルなど) 実行環境は以下になります。 CPU: 13th Gen Intel(R) Core(TM) i7-13700F 2.10 GHz メモリ: 32 GB GPU: NVIDIA GeFo…
お疲れ様です。 以前の記事でHuggingFace(transformersライブラリ)から利用できるDETRという物体検出モデルを実装しました。 今回はDETR以外の物体検出モデルを使ってみようと思います。 前回 ソースコード 使用するデータセット PCのスペック HuggingFaceの物体検出モデル DETR Deformable DETR DETA Conditional DETR 所感 前回 fallpoke-tech.hatenadiary.jp ソースコード ソースコードは前回作成のものに追加する形で作成しています。 今回紹介するモデルはconfig/train_config.t…
GeminiAPI + LangChainでRAGを実装する
お疲れ様です。 最近の会社の勉強会でチャットボットのWebアプリを作成しています。(何故か教える側で…。) やっている中で返答を返してくれる生成AIでRAG(検索拡張生成)を実装してみたいと思い、実際に作成してみたのでそれをまとめておきます。 やったこととしては以下になります。 生成AIには基本お金がかからず、個人のPCの性能に左右されないようにGemini APIを使用しています。 Gemini APIの準備 APIキーの取得 SDKをインストール データベース作成 チャットボットに返答機能として実装 コード実装 チャットボットアプリ上での表示 Gemini APIの準備 Gemini AP…
お疲れ様です。 HuggingFace(transformersライブラリ)から利用できる物体検出のDeepLearningモデルを試してみたのでその紹介です。 物体検出についてはざっくりというと画像内の物体を矩形(Bounding Box)で囲って検出するものになります。 下図の例では人間の顔を検出しています。 作成したソースコードはテンプレート化して公開しているので気になる方はこちらもご参照ください。 github.com さて、HuggingFaceといえば自然言語処理のモデルが多いイメージかなと思いますが、VisionTransformerなどtransfomerアーキテクチャが使用さ…
Albumentationsの物体検出のDataAugmentationをいろいろ試す
お疲れ様です。 前々から試してみたかったAlbumentationsの物体検出用の処理を今回実際にやってみました。 Albumentationsとは何ぞや?という方は以下のサイトを参照ください。 albumentations.ai また、具体的にできることは以下をみると大体わかるかと思います。 (私もいつも見させてもらってます…!) qiita.com 端的に言うと画像系AIの前処理(DataAugmentation)をまとめたライブラリという感じです。 基本的には画像系AIの中でも画像分類のタスクに使われることの多いイメージですが、物体検出やセグメンテーションも対応しています。(私は最近まで…
古いバージョンのpytorch-lightningをインストールしようとして詰まったのでメモ【備忘録】
お疲れ様です。 業務内で古いバージョンのpytorch-lightningをインストールするときにエラー発生したので備忘録として残しておく。 原因としてはライブラリの問題ではなく、pipのバージョンが新しくなったことによるもののようです。 結論、pipをダウングレードしたらインストールできたという話なんですが…。 pytorch-lightningに限らずバージョンの古いライブラリをインストールする際に頭の片隅に置いておきたいです。 エラー内容 注目すべきは黄色で表示された警告の方です。 ”*(アスタリスク)”が使えるのは"=="と"!="の演算子のみだという内容ですね。 WARNING: I…
ライブラリ経由で事前学習済みモデルをダウンロードする際のフォルダ指定
お疲れ様です。 Pythonでディープラーニングのプログラムを書く際、その際に様々なライブラリにお世話になるかと思います。 その中で、モデルアーキテクチャの定義と同時に特定の事前学習済みモデルの重みファイルを自動でダウンロードしてくれる機能があるライブラリもあります。 それらダウンロードされる事前学習済みモデルのダウンロード先フォルダをこちらで指定する方法を調べたのでこちらにも備忘録としておいておきます。 私はなんとなくプロジェクトごとに使ったモデルがわかるようにしたくて、プロジェクトフォルダの直下にダウンロードした重みファイル用のフォルダを作って管理しています。 GitHubのリモートリポジ…
お疲れ様です。 「三目並べ」、いわゆる「〇×ゲーム」の対戦GUIをPythonで作ったので簡単に紹介します。 GUIのイメージ 背景 作成 ソースコード 所感 背景 元々は会社の技術系の勉強会で三目並べのAIを作ったことが始まりです。 教化学習の手法の1つであるQ学習を適用して作成したAIとMiniMax法を使ったルールベースの方法の両方を作成していました。 Q学習の方は下記のサイトのソースコードを使用しました。 Q学習の仕組みについても下記のサイトは非常に参考になりました。 qiita.com なお、MiniMax法に関してはChatGPTに元となるソースコードを作ってもらったので参考サイト…
お疲れ様です。 PythonでOpenCVを使った画像処理のプログラムを書くことが多いのですが、日本語が絡んでくるとうまく動作しないことがよくあります。 その対処法をメモ的に残しておきます。 画像読み込み・保存(imread, imwrite) 文字列書き込み(puttext) ウィンドウ表示(namedwindow, imshow) 画像読み込み・保存(imread, imwrite) cv2.imreadで画像を読み込むときやcv2.imwriteで画像を保存するときに、入力したパスに日本語が含まれていると読み込みor保存が正常にできない問題。 対処法は以下の通り。 ‐ 画像読み込み Pi…
お疲れ様です。 少し前になりますが3月のG検定(2024#2)を受験し、合格しました。 勉強期間としては1か月程度。といっても普段の業務の関係である程度AI周りの知識はあります。 今回、テキストは買わずネット上の情報と模擬問題のみで勉強していました。 流れとしては、以下ような感じ。 模擬問題を解く(自宅) ↓ 間違った問題、問題文中でわからない箇所をメモ(自宅) ↓ メモをとったところを調べる(通勤時間などの空き時間) ↓ 模擬問題を解く ↓ (以下ループ) 勉強に使用したサイトをまとめておきますので、受験勉強の参考にどうぞ。 G検定の例題・過去問 G検定公式の例題と過去問。どんな感じのテスト…
Pytorchのエラー「PyTorch: RuntimeError: device >= 0 && device < num_gpus INTERNAL ASSERT FAILED」
お疲れ様です。 Pytorch使用時に発生したエラーの対処についての備忘録です。 基本的には調べたサイトや記事をまとめただけになります。 エラー文 PyTorch: RuntimeError: device >= 0 && device < num_gpus INTERNAL ASSERT FAILED 公式GitHubのissueでも議論されている内容ですね。 github.com github.com 対処方法 1. 下記のコードを記載する。 import os os.environ["CUDA_VISIBLE_DEVICES"] = "1" os.environ["WORLD_SIZE"…
「ブログリーダー」を活用して、誰かの技術置き場さんをフォローしませんか?