- 1. timmを利用したVision Transformerの学習
- 2. Django-NinjaでSchemaからValidationErrorをハンドリング
- 3. Pythonで使えるOCRライブラリまとめ
- 4. 魔法少女リリカルなのは形態素解析比較大会
- 5. 深層学習における物体検出の分野もLLMの進化の波が押し寄せてきた
- 6. ニューラルネットワークのすゝめ
- 7. 書籍「実装で学ぶフルスタックWeb開発」環境構築でのつまづきポイント
- 8. Azure Functions(Python)からAzure SQLにアクセスする
- 9. iRICの計算結果をPythonでいじってみる:実河川の例
- 10. Pythonで1ヶ月前を求める時
- 11. Python向けレトロゲームエンジンPyxelをRustで動かす
- 12. WSL Ubuntuにpyenvをinstallする方法
- 13. PyO3依存のパッケージをGitHub Actionsでテストする
- 14. 競馬レース結果の取得して色々見てみたい 前処理編
- 15. ローカルのChat AIアプリを作りたい
- 16. Pythonで〇×ゲームのAIを一から作成する その62 条件の統合と乱数の種によるプログラムの再現性
- 17. 【S3】イベント通知におけるオブジェクトキーのエンコードに関する注意点と解決策
- 18. 【Python】findメソッドのいろいろな使い方をサンプルコードで解説(引数があるとき、rfindやindexとの違い)
- 19. 【WebDAV】wsgidavでCORS【Access-Control-Allow-Origin】
- 20. [Python×Selenium]ValueError: Timeout value connect was , but it must be an int, float or None.が出たときの対処法
timmを利用したVision Transformerの学習
Vision Transformer(ViT)はCNNより高精度な画像認識が可能なことから注目されています.しかし,ViTは一から学習するためには膨大なデータが必要であるため個人の環境で学習するのは難しいです.そのため,Fine-tuningを用いることが一般的です.
そこで,本記事ではViTをFine-tuningする方法を書いていきます.
今回はtimmというライブラリを使用したViTのFine-tuningの方法と各引数の簡単に説明します.ViTのモデル構造
![ViT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/c72ba88f-8856-88d6-87b7-efab30c798ed.png)# timmの学習済みモデルを使用
ViTの学習済みモデルを使用するためにはtimmを使用すると簡単にできます.
timmは正式名称Py**t**orch **Im**age **M**odelsでSOTA(State of the Art)を達成した画像分類モデルを公開している
Django-NinjaでSchemaからValidationErrorをハンドリング
# 前置き
最近会社でAPIを作っています。
フレームワークにDjango-Ninjaを選定しました。
理由はシゴデキの先輩&別チームが使ってたからです。
FastAPI(使ったことない)っぽく記述ができてPydantic(使ったことない)っていうのと密接なんだ~くらいのところからスタート。# やりたいこと
リクエストを貰った際にSchemaがパラメータのバリデーションを勝手にしてくれるんですが、そこで発生するValidationErrorをいい感じにハンドリングしたいです。
ただ、どうもDjango-Ninjaの情報があまりネットに落ちてなくて、日本語の情報も全然ないし、Qiitaにもほぼなくて。
というわけで完全我流。なんとかします。**底辺が底辺なりになんとかしてみたくらいのノリです。**
**(._.)**# 使用したバージョン・ライブラリ
あまり覚えてないのですが、PydanticはV2っていう新しい方を使ったと思います。
たしか↓です。– Django-Ninja 1.1.0
– Pydantic-core 2.14.6# 実装
## 方針
ひとまず公式
Pythonで使えるOCRライブラリまとめ
# はじめに
皆さんこんにちは!ぽこちゃんです
他の記事も投稿してますし、Xではデータサイエンス系、エンジニアリングに関連した
情報を発信しているのでぜひみてってください!今回はインターンにてPythonでOCRをする機会があって
調査したのでまとめてみました!# ライブラリの選定基準
今回の選定基準は以下の通りです– モデル
– githubにレポジトリが公開されている
– 商用利用可能
– 英語、数字の検出ができる
– 日本語の検出ができる
– 文字検出(Scene Text Detection)と文字列分類(Scene Text Recognition)両方実施できる
– 最大限精度が良い
– 追加訓練可能
– API
– 商用利用可能
– セキュリティについて問題ない
– 料金
– 英語、数字の検出ができる
– 日本語の検出ができる
– 文字検出と文字列分類両方実施できる
–
魔法少女リリカルなのは形態素解析比較大会
# 「魔法少女リリカルなのは」を形態素解析しよう
まずこの話題を話すためには「魔法少女リリカルなのは」形態素解析問題について話さねばなるまい。「魔法少女リリカルなのは」形態素解析問題とは簡単に言うと「なのは」を人名としてユーザー辞書に登録すると「~なのは」という日本文の解析がUnidicやMecabでうまくいかなくなる問題である。しかし最近はBPEやSentence Pieceなどの台頭によりトークナイザー方法も進化してきた。そこで, 現代のトークナイザーはどのように「魔法少女リリカルなのは」をトークナイズしていくのかを見ていこうという問題である。# まずは人の手でトークナイズ
最近はトークナイズ方法も色々考案されてきているため意味が変わってきている気がするが, 元々の意味での形態素解析とは、文章を意味を持つ最小単位である「形態素」に区切り、それぞれを名詞や動詞などの品詞に分類することである。なので魔法少女リリカルなのはは固有名詞なので「魔法少女リリカルなのは」でも良いが, それだとコーパス内に「魔法少女リリカルなのは」トークンの存在確率は低いと考えられるので, より良いテキスト応
深層学習における物体検出の分野もLLMの進化の波が押し寄せてきた
# 深層学習における物体検出の分野もLLMの波
近年、自然言語処理の分野で大きな注目を集めている大規模言語モデル(Large Language Models: LLMs)の急速な進歩は、他の AI 分野にも大きな影響を与えています。特に、コンピュータビジョンの重要なタスクの一つである物体検出においても、LLM の技術が活用され始めています。
従来の物体検出は、畳み込みニューラルネットワーク(CNN)を中心とした深層学習アーキテクチャに大きく依存してきました。しかし、LLM の登場により、テキストプロンプトを用いて画像内のオブジェクトを特定し、ラベル付けを行うことが可能になりつつあります。この新しいアプローチは、データアノテーションの効率化や、少量のデータでの学習(few-shot learning)への応用が期待されています。
LLM を活用した物体検出の代表的な例として、Grounding DINO や GroundingSAM などのモデルが挙げられます。これらのモデルは、自然言語の理解力を画像理解に応用することで、物体検出のパフォーマンスを向上させています。さらに、LLM
ニューラルネットワークのすゝめ
# はじめに
こんにちは!
僕は研究を行いながら、長期インターンでデータサイエンティストとして働く大学院生です!学部時代から長期インターンを始め、現在まで4社経験してきました。
この経験から、プログラミングの学習を始めたばかりの人や、長期インターンを行う勇気が出ない人に、**学習サポートやデータ分析の実績作り支援**、さらには**Kaggle人材マッチングサービス**などを行わせてもらっています!僕自身、プログラミングの習得や長期インターン探しに苦労したので、その経験をお伝えすることで、より多くの人が挫折せずデータサイエンティストになるまで成長して欲しいです!
以下でサポートを行なっているのでご興味ある方はご連絡ください!学生・社会人問わず専攻も問わずサポートいたします!
### X(Twitter)
Tweets by DS_school_1これまで機械学習アルゴリズムやデータサイエンティストに内定するまでに行ったこと、統計学実践ワークブックの解説などQiitaで記事にしているので、興味ある方はぜひ読んでみてください!
今回は、深層学習の登竜門、
書籍「実装で学ぶフルスタックWeb開発」環境構築でのつまづきポイント
# P.46 docker-compose.yml
## 修正前
“`yml
services:
app-db:
image: mysql:8
command: –collation-server=utf8mb4_0900_bin –transaction-isolation=READ-COMMITTED
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
TZ: Asia/Tokyo
ports:
– 53306:3306
“`## 修正後
– `MYSQL_USER: root1` 、 `MYSQL_PASSWORD: password1` は明示的に指定する。指定しないと、コンテナ内からアクセスできない。
– ユーザ名、パスワードは、 `root` 、`password` 以外にする。`root` 、`password` だとMySQLのコンテナが起動しない。“`yml
services:
app-db:
Azure Functions(Python)からAzure SQLにアクセスする
前回Functionsのデバッグ環境を整えたわけですが、今回はAzure SQLにFunctionsからアクセスしていきたいと思います。
:::note info
前回記事
[IoT Hubと接続したローカルAzure Functionsアプリをステップ実行デバッグする #Azure – Qiita](https://qiita.com/fsd_maclala/items/e18bbae6e9b63f1b9abd)
:::## おおまかな流れ
1. パッケージのインストール
1. コードの確認
1. AzureFunctionsにpublish、そして確認
1. 余談、パッケージのバージョン指定## パッケージのインストール
今回、Functionsの中でAzureSQLに接続する中で、最初はODBCを使うという選択をしていました。私が参考にしたコードの中でpyodbcが使われていたんですね。
しかし、これはあんまり上手くない方法だと分かりました。
理由は、ODBCを使うにはシステムにODBCを使うためのインストール作業を行わなければならなかったからです。
apt
iRICの計算結果をPythonでいじってみる:実河川の例
# はじめに
河川に関する数値計算モデルプロジェクト[iRIC](https://i-ric.org/ja/)では多くの数値計算モデルが計算条件設定の前処理と可視化の後処理を備えたGUIとともに使用可能です.
いろいろな機能があり,計算結果はサクサク確認できますが,細かな解析をしたかったり,こだわりの可視化をしたかったりとすると,やはり備え付けのGUIだけでは足りない部分も出てきます.
ここではiRICのモデルの一つであるNays2DHの計算結果をcsvで出力し,Pythonでいじくってみたというのを紹介していきます.
# 計算結果のcsvエクスポート
iRICではいくつかの形式で計算結果を外部ファイルに出力できます.
まず,上部のメニューバーから ファイル→エクスポート→計算結果 と進みます.
出てきた画面で下記のように設定します.
形式はcsvファイルとします.ほかにもvtkなどでも出力できます.
時刻や領域は間引きができますが,ここでは行わないことにします.
![image.png](https://qiita-image-store.s3.ap-northe
Pythonで1ヶ月前を求める時
標記でネットを調べると、みんなdateutil を使うってなっているけど、わざわざutility使うことないのではと思って、下の関数を作成しました
これは、YYYYMMのフォーマットで文字列6桁の年月を受け取り、1ヶ月前を返すものです
今の所、問題ない感じですね
“`get_pre_month.py
def get_pre_month(year_month: str) -> str:
y = int(year_month[0:4])
m = int(year_month[4:6])if m == 1:
y -= 1
return f”{y}12″m -= 1
# 0 padding
return f”{y}{m:02}”
“`“`test_app.py
def test_get_pre_month():
assert app.get_pre_month(“202403”) == “202402”
assert app.get_pre_month(“202401”)
Python向けレトロゲームエンジンPyxelをRustで動かす
# はじめに
こんにちは! 中2のAwashAmityOakです! 今回は、**PythonのレトロゲームエンジンであるPyxelを、Rustで動かす**方法をまとめます。
# Pyxelとは?
| |
|:-:|
|![pyxel_message.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3742876/89443d30-0263-de5c-021f-9ba13148b849.png “Pyxel”)|
|https://github.com/kitao/pyxel/blob/main/docs/images/pyxel_message.png より|[Pyxel](https://github.com/kitao/pyxel)は、**Python向けのレトロゲームエンジン**です。日本人の[kitao](https://twitter.
WSL Ubuntuにpyenvをinstallする方法
# WSL Ubuntuにpyenvをinstallする方法
WSL(Ubuntu)に[pyenv](https://github.com/pyenv/pyenv)をインストールする方法を自分用にまとめておく。
## Python build環境のinstall
`pyenv`の公式Wikiにビルド推奨環境として次のコマンドが用意されている
“`bash
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
“`引用:https://github.com/pyenv/pyenv/wiki#suggested-build-environment
## pyenvのinstall
“`bash
curl https:
PyO3依存のパッケージをGitHub Actionsでテストする
[PyO3](https://github.com/PyO3/pyo3)はRustで書いたプログラムをPythonで動かせる大変優れたものです。しかしGitHub Actionsでテストしようとしたら少し詰まったのでメモ。
# pyproject.toml
`maturin`でビルドするので、こんな感じで始まっているはずです。
“`toml
[build-system]
requires = [“maturin>=0.14,<0.15"] build-backend = "maturin" ``` その下の方に、テスト用のoptional dependenciesを加えておきます。 ```toml [project.optional-dependencies] testing = [ "pytest", # その他諸々 ... "maturin", # <----- ここにも加える ] ``` これで `pip install .[testing]` をしたときにここに書かれたパッケージもインストールされます。 # test.yml テスト
競馬レース結果の取得して色々見てみたい 前処理編
## 初めに
最近競馬にハマっており、データを見ながら予想や結果を語りたいなと思うようになりました。
なので、結果を可視化してみて色々見てみたいと思います。当方開発経験がなく、今までほぼpythonを触ったこともない人間ですので拙いコードを書きますが、暖かい目で見て頂ければと思います。
## データの取得
netkeibaから、2010年~2013年のレース結果を用いたいと思います。
[netkeiba](https://www.netkeiba.com/)また、今回はデータの可視化が目的なので、データを取得する部分に関しては下記サイト様を参考にさせていただきました。
[リラックスした生活を過ごすために](https://relaxing-living-life.com/676/)取得したデータ
“`python
import pandas as pd
df=pd.read_csv(‘レース結果.csv’, encoding=’cp932′)
df.head()
“`
![image.png](https://qiita-image-store.s3.ap-n
ローカルのChat AIアプリを作りたい
# はじめに
仕事ではないので, だらだらとやってきたのでそろそろちゃんとまとめたいと思います. 上手くいかなかったこともできるだけ書こうとは思います. ~~そろそろ飽きてきたというのもあります.~~## 要求
– ローカルLLMを使いたい
– 外部に情報送信や, 保存されるという理由で使用を禁止している組織は多いと思います
– 趣味なのでできるだけコードを書かないで楽をしたい
– OSSをプロダクトに使用することが非常に面倒という会社もあるかと思います## コード
全文
“` python
import io
import logging
import os
import uuid
from distutils.util import strtobool
from xml.dom.minidom import Documentimport langchain
import streamlit as st
import transformers
from chromadb.config imp
Pythonで〇×ゲームのAIを一から作成する その62 条件の統合と乱数の種によるプログラムの再現性
# 目次と前回の記事
https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0
https://qiita.com/ysgeso/items/70c50f75319373399871
## これまでに作成したモジュール
以下のリンクから、これまでに作成したモジュールを見ることができます。
https://github.com/ysgeso/marubatsu/blob/master/062/marubatsu.py
https://github.com/ysgeso/marubatsu/blob/master/062/ai.py
## これまでに作成した AI
これまでに作成した AI の アルゴリズム は以下の通りです。
| ルール | アルゴリズム |
|:-:|:–|
| __[ルール1](https://qiita.com/ysgeso/items/bdbcd4c1ab1d8731df58#%E6%9C%80%E5%88%9D%E3%81%AB%E8%A6%8B%E3%81%A4%E3%81%8B%E3%81%A
【S3】イベント通知におけるオブジェクトキーのエンコードに関する注意点と解決策
# 背景
AWSを使用している開発者にとって、S3のイベント通知を処理するLambda関数は一般的なユースケースです。しかし、オブジェクトキーに半角スペースが含まれている場合、S3はこれをプラス記号にエンコードして通知を送信します。
このエンコードにより、Lambda関数にはエンコード後のオブジェクトキー名が渡され、開発者が予期しない問題に直面する可能性があります。例えば、S3のイベント通知で起動するLambda関数で、イベントデータからオブジェクトキーを取得し、何らかの処理をするとします。
Lambdaにはエンコード後のキー名が渡されるので、開発者はオブジェクトキーを適切に処理することができず、期待しない動作が発生する可能性があります。
(S3から当該キーのダウンロードに失敗する、など)# 解決策
この問題を解決するためには、オブジェクトキーをLambda関数内で適切にデコードする必要があります。Pythonの場合、urllib.parse.unquote_plus関数を使用して、エンコードされたオブジェクトキーをデコードすることができます。
このメソッドを使用する
【Python】findメソッドのいろいろな使い方をサンプルコードで解説(引数があるとき、rfindやindexとの違い)
# 概要
Pythonの`find()`メソッドは、指定した部分文字列が文字列内で最初に見つかる位置のインデックスを返すメソッドです。
サンプルコードで色々やってみたので使い方を紹介します。## `find()`メソッドのサンプルコード
“`py
# 元の文字列
string = “Hello, world! My world is beautiful.”# 部分文字列
substring1 = “Hello”
substring2 = “world”# 部分文字列が文字列の先頭にあるかどうか判定する
if string.find(substring1) == 0:
print(f”‘{substring1}’ は文字列の先頭にあります。”)# 出力結果:’Hello’ は文字列の先頭にあります。
# 部分文字列が文字列の先頭にないか、または全く見つからないかどうかを判定する
if string.find(substring2) != 0:
print(f”‘{substring2}’は文字列の先頭にないか、または全く見つかりません。”)
else
【WebDAV】wsgidavでCORS【Access-Control-Allow-Origin】
https://github.com/mar10/wsgidav
# インストール
“`bash
pip install wsgidav cheroot
“`# CORS有効化
“`bash
wget https://gist.github.com/GitHub30/e24acae4248902b24531b3f8ab18630b/raw/wsgidav.json
“`“`json:wsgidav.json
{
“cors”: {
“allow_origin”: “*”,
“allow_methods”: “*”,
“allow_headers”: “*”,
“expose_headers”: “*”,
“allow_credentials”: true,
“max_age”: 864000
}
}
“`# 起動
“`bash
wsgidav –root=. –auth=anonymous
“`# 動作確認
“`javascript
// ファイルアップロード
fetch(‘htt
[Python×Selenium]ValueError: Timeout value connect was
# 状況
PythonとSeleniumを使用してスクレイピングを行おうと試みた.
Pythonファイル実行時に`ValueError: Timeout value connect was## エラー発生時の環境
MacBook Air m1
anaconda 23.9.0
selenium 3.141.0
urllib3 2.0.3
python 3.10.13## エラー概要
実行すると以下のエラーが発生
~~~
Traceback (most recent call last):
File “/Users/xxx/src/py/scripting/sample.py”, line 4, in
browser = webdriver.Chrome()
File “/Users