Python関連のことを調べてみた2023年10月04日

Python関連のことを調べてみた2023年10月04日
目次

Ubuntu 22.04 (Docker)でOpenCVをビルドしてStructure From Motionを試す

# はじめに
MacOSX向けの記事を真似てUbuntu 22.04向け記事を作成した。
Visualな自己位置推定を自律移動ロボットへ組み込むことを最終目的としている。

# 参考
https://qiita.com/ground0state/items/0fa842d95b50a736604c
https://docs.opencv.org/4.8.0/db/db8/tutorial_sfm_installation.html
https://docs.opencv.org/4.8.0/d7/d9f/tutorial_linux_install.html
http://ceres-solver.org/installation.html

# 環境
– Jetson Orin NX ( reComputer J401 )
– J401のセットアップ手順は:https://wiki.seeedstudio.com/reComputer_J4012_Flash_Jetpack/
– ちなみに母艦がWSLだとダメだった。母艦がJetson Orin Nanoでも何故か失

元記事を表示

Flash AttentionとDeep Speedを使ってLLMをGPU1枚でフルファインチューニングする

## TL;DR
Deep Speedのoffload_optimizer機能を使って、VRAM40GBのGPU1枚で3.6BパラメータのLLMをファインチューニングしました。
さらに、Flash Attentionを使うことで、学習を高速化しつつ使用メモリ量も減らし、より長い系列長で学習を行うことができました。

## はじめに
Flash AttentionはAttentionの計算で使用するGPUメモリ量を系列長の2乗のオーダーから1乗に削減する技術で、xformersやoptimum、さらにはtransformersライブラリでも簡単に使用できるようになってきています。
前回の記事([1](https://qiita.com/jovyan/items/11deb9d4601e4705a60d), [2](https://qiita.com/jovyan/items/5716cd83e246df4a158e))では、LLMの推論においてFlash Attentionを使ってみたのですが、推論ではあまり効果が見られないという結論を得ました。
今回はFlash Attentionが本

元記事を表示

iCrawlerとVGG16で画像分類

# はじめに
DCGANを勉強するにあたってスクレイピングの代わりにiCrawlerが簡単と聞いたのでその勉強としてやりました!
もっといいコードがあれば教えてください✨
参考記事っていうかほぼ下の記事と一緒です(笑)
ですが今回の記事は下の記事のエラーをすべて解消したものになります(笑)
何か間違いやもっと簡単なコードがありましたら教えてください:star:

https://qiita.com/Yu_unI1/items/cc992918c6f940d10699
# 実装
## 今回作ったもの
画像収集ではスクレイピングの代わりにicrawlerを利用しました。そしてりんご、ぶどう、みかんの3つの分類を行うようにVGG16を再学習させています。また実行環境は以下のとおりです。
“`:モデルの訓練
Google Colab
“`
“`:flaskアプリ
python 3.10
Windows11 Home
“`

## icrawlerで画像収集
icrawlerで画像を収集します。
“`:colab
!pip install icrawler
“`

“`pyth

元記事を表示

高校生が約1か月で電車の自動運転を作った話

# はじめに
 この論文?は筑波大学の受験のために作成したが、残念ながら落ちてしまい、そのままこの論文?を放置するのは勿体ないと思い、公開するのことにした。
現在は、大学進学を考えているが、Jetsonを使用してスマート農業や、運搬ロボットなどを研究している会社があれば、就職したいと考えている。
~~もし、この記事を見たくださった方でJetsonなどの小型デバイスを使用したロボットなどの研究、開発をしておられる企業様がいらっしゃれば、連絡待ってます…~~
[@Neko_syashin](https://twitter.com/Neko_syashin)
## 1. これまでの画像処理関係の活動
 私は、高校在籍時に独学でYoloを使用した画像認識を作成していた。そのときは、カメラや動画などを使い、人や車などを判別しカウント(図1)をしたり、カメラにサーボモータを取り付け、人が動いた方向に追尾するというシステム(図2)を開発していたり、車がバックするときにカーナビに表示される、空から見たような映像の開発(図3)などを行っていた。以下の画像がそのときに作成していたものである。
![画

元記事を表示

PyOCR+Tesseract+画像処理でノベルゲームのテキストを抽出する

# はじめに
私が趣味でノベルゲームをプレイするとき、たまに意味を知らない単語や難読単語、実物を画像で調べたくなる単語(作中で話題に上がった料理など)が登場することがあります。

このようなとき、通常は手動でブラウザを開いて検索ワードを入力するのですが、本記事では、ゆずソフト作のノベルゲーム『千恋*万花』([Steam全年齢版リンク](https://store.steampowered.com/app/1144400/_/?l=japanese&curator_clanid=8438298))を例に、この作業をある程度自動化してみます。[^1]
[^1]:以下、本記事で当該ゲームにおける特定の場面を切り取った画像をいくつか使用しますが、これらはすべてゆずソフト様による「著作権に関するガイドライン」に従います。

“`plantuml
@startuml

footer ゆずソフト作『千恋*万花』より。「

元記事を表示

【Python】Conda環境と付き合うために

# はじめに
Conda環境,すぐ壊れるし嫌いって人多いのではないでしょうか.

しかし,誰しも一回はConda環境を使わなければならない時が訪れると思います.
私はインターン先でそのようなことがありました.苦労しながらうまく付き合う方法を見つけたため,共有できればと思います.

:::note info
この記事でわかること
**快適なConda環境を使うことができる**
:::

## 開発環境
MacOS 13.2.1

# Conda環境のインストール
快適なConda環境を使うにあたり,Condaのインストールについて解説します.すでにインストールされている方は飛ばしてください.

公式ページ (https://www.anaconda.com/download) から環境にあったものをダウンロードし,インストールしてください.
![anaconda.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3305858/8a22d451-c51c-5895-e4cb-dcfac34e309e.png)

元記事を表示

【pytest】前処理・後処理を定義する方法

### 概要
– pytest においてテストの前処理・後処理を記述する方法をまとめた

### fixture を使用する
– @pytest.fixture() を付与した関数内の処理を呼び出すことができる
– 以下の例では、test_sample() に hoge() を渡すことで、test_sample() の前に hoge() が呼び出される。

“`python:test.py
import pytest

@pytest.fixture()
def hoge():
print(“setup”)
message = “hoge”
return message

class TestApp:
def test_sample(self, hoge):
print(hoge)
“`

事前処理として “setup” が出力されている

“` shell
# command
pytest test.py -s

# 出力
test.py setup
hoge
.
“`

事前処理だけでなく、事後処理を定義することもで

元記事を表示

[swig / python / windows] windows10 に swig を install して使えるようにするまで

# 1. 概要

Docker や WSL 経由で Ubuntu が使えるならそっちでやろう。
この記事は、何らかの理由で **Ubuntu を使えない人**のためのものです。

# 2. 環境

|リソース / Package|version|
|:–|:–|
|windowsOS|10|
|WSL|**使わない**|
|docker|**使わない**|
|anaconda / miniconda|**使わない**|
|Visual Studio|2017|
|pyenv-win|3.1.1|
|python|3.7.3|
|swig (swigwin)|4.0.1 [^1]|

## 注意点

python が `3.7.3` という中途半端に古いバージョンになっているのは、「windows上で `vcvarsall.bat` を正しく見つけられると確認できた」のが、「**python 3.7.3 と VisualStudio 2017** の組合せ」のときだけだったため。

これよりも上のバージョンで動作確認出来たら、本当はそちらを使いたい。
いや、嘘です。それよりも Ubu

元記事を表示

Poetry+DockerでのPython環境構築(2023年版)

私が普段使っているPythonの開発環境の構築について説明します。[Docker](https://www.docker.com/)と[Poetry](https://python-poetry.org/)を利用して構築し、1人または少人数で利用することを想定した開発環境です。

本稿では、はじめに最低限の構成でJupyterLabを起動する方法までを説明します。後にオプションとしてVS CodeやGitHub Codespacesの各種設定やフォーマッター、テスト、API構築などのトピックを扱います。使っているエディタなどに合わせて、必要なところだけ参考にしてください。

なぜDocker+Poetryという構成が良いのか、他の選択肢にはどういった物があるのかという点については、[Pythonの開発環境の3つの観点をおさえよう](https://zenn.dev/os1ma/articles/935f6e653f1052)という記事に詳しく説明されています。

## 実行環境
– Debian 11.7
– Docker version 24.0.6
– Docker Compos

元記事を表示

tqdmでzip,enumerate,map関数のプログレスバーを簡単に書く方法

# はじめに

[tqdm](https://tqdm.github.io/)は、Pythonで進捗バーを表示するためのツールで、リスト、タプル、イテレータなどを簡単にラップし、その進行状況を表示できます。しかし、これまで“zip“、“enumerate“、“map“関数などを使う場合はプログレスバーを表示するのに工夫が必要でした。

2020年1月25日にリリースされた[tqdmのバージョン4.42.0](https://pypi.org/project/tqdm/4.42.0/)以降では、そういった問題を解決するため、“tzip“、“tenumerate“、“tmap“が導入され、簡単に進捗バーを書けるようになりました。この記事では、これらの関数を使った方法について、従来の方法と合わせて紹介します。

# 新しい方法
“tzip“、“tenumerate“、“tmap“はtqdmのバージョン4.42.0以降で登場し、通常の“zip“、“enumerate“、“map“の書き方でプログレスバーを簡単に表示することができます。これらの関数

元記事を表示

【メモ】PythonでPDF結合_PyPDF2 v3.0.0以上の場合

# 概要
PDF結合しようとしてPythonでさくっとスクリプト書こうとした。
Pythonならすぐ出るだろうとChatGPTに書かせてみたら地味につまづいてしまったのでメモ。

# 環境
Windows 11
Python 3.11.5
PyPDF2 3.0.1
VSCode 1.68.0

# やりたかった処理
指定したフォルダ(folder_path)の中にあるPDFファイルをすべて結合。
出力先PDF(output_pdf)はカレントディレクトリに作成される。

# 詰まったところ
`PdfFileMerger`クラスが間違ってるって言われる。

# 対策
`PdfFile◯◯◯`クラスは`Pdf◯◯◯`というクラスに置き換える。
[【Python】PDFをいじる](https://zenn.dev/ijiwarunahello/articles/c82dfdc402cf65) によれば、PyPDF2ライブラリはVer3.0.0から仕様が変わったようだ。
PyPDF2の公式Documentでもそうなっていて、`PdfFile◯◯◯`クラスを呼ぶと「`Pdf◯◯◯`の間違いだろ?

元記事を表示

置換積分 Integralのtransform「2007 京都大学前期理系乙【1】問1」をChatGPTとWolframAlphaとsympyでやってみたい。

・Integralのtransformでやってみました。
**・WolframAlphaでグラフがでます。**

オリジナル(youtube 12:02) PASSLABO 様より

上と同じです。大学入試数学問題集成 様>テキスト 理系乙【1】問1

https://mathexamtest.web.fc2.com/2007/200710541/2007105410100mj.html#top-0112

# ChatGPT-3.5先生へ(**???間違っています。???**)
**やってて、だんだん自信?がなくなってきました。**
入力文1
“`
定積分integrate((2*x+1)/sqrt(x**2+4),x,0,2)を求めよ.
“`
??? 返信抜粋
“`

これで、積分は簡単に計算できます:

したがって、与えられた定積分の値は約2.644です。
“`
入力文2(続けて)
“`
sympyで教えて下さい
“`
??? 返信抜粋
“`

SymPyを使用して計算すると、結果は以下

元記事を表示

東京藝術大学の学祭でプリントシール機を出店した話

# はじめに
2023年9月1日~3日に開催された東京藝術大学の学祭(通称:藝祭)にて出店した __アスキーアートになるプリ機__ についての技術をまとめた記事となっています。

IMG_5082.jpg

:::note info
注意
__今回の企画は私一人で行ったわけではありません。__ あくまで担当範囲内での技術共有、来年度に向けたフィードバックを目的に記事にしています。
今回の企画に携わっていただいたみんなには感謝してもしきれません。ありがとうございました!!!これからもよろしくお願いします!
:::

# 目次
[東京藝術大学テクノロジー研究会とは](#東京藝術大学テクノロジー研究会とは)
[自己紹介](#自己紹介)
[今回の企画概要](#今回の企画概要)
[システム概要](#システム概要)
[

元記事を表示

Renderで簡単なwebアプリをデプロイしてみた

# はじめに
Pythonでウェブアプリを作成しており、デプロイのやり方を調べていたのですが最近Herokuが有料化になったと知りました。

そこで、調べていく中で無料でデプロイできるRenderというものを知ったので備忘録を兼ねてやり方をメモしていこうと思います。

## 1. 今回デプロイするもの
PythonのフレームワークであるFlaskを使った簡単なWebアプリを作成してそれをデプロイします。

URLにアクセスすると、ブラウザ上に`Hello World!`というテキストが表示されるというものです。

“`app.py
from flask import Flask
app = Flask(__name__)

@app.route(‘/’)
def hello_world():
return ‘Hello World!’
“`

使用したライブラリの依存関係をrequirements.txtに明記しておきます。
“`requirements.txt
Flask
Gunicorn
“`
`Gunicorn`はFlaskやDjangoなどのPythonのフレー

元記事を表示

pythonでインストールしたライブラリに対して「No module」が出た時の対処法

ライブラリをインストールしたのに「No module」エラーになる事があります。
これはライブラリのパスが通っていないことが原因の場合があります。
下記の手順で解決出来ましたので、ご参考下さい。

# 1.インストール先の確認
install実行時にインストール先が表示されるので何処にインストールされたのかを確認する

# 2.パスの接続先を探す
作成中のプロジェクト内に下記のファイルを作成して実行し、接続先のパスを確認する

“`python:sys.py
import sys
print(sys.executable)
“`

# 3.pthファイルを作成する
“.pth”ファイルは、参照させたいパス一覧を書き込めるファイルなので、参照先の(2.)でヒットしたsite-packagesフォルダ配下に適当な名前の.pthファイルを配置し、そこに(1.)でヒットしたライブラリが格納されているフォルダパスを書き込む

# 4.パスの設定確認
(2.)で作成したファイルを実行し、接続先に(1.)の接続先が表示されていればOKです

元記事を表示

kintone にレコードが登録されたら LINE WORKS で通知を Google Colab で簡単に試してみる

# kintone と LINE WORKS の連携を Google Colab でさっと試してみる
https://colab.research.google.com/drive/1-snW3yD3m7w45Q2eM530gkVDHBGBQOAK?usp=sharing

元記事を表示

Pythonのよりシンプルな書き方

# はじめに
現場でシンプルにコードを書いてプルリクエストを提出したら、Pythonの経験が少ししかないレビュワーから「これどんな処理なんですか?」と聞かれたので説明したことがあり、Pythonはバージョンが上がるにつれ、よりシンプルな書き方ができるようになります。
一時期、エフェクティブPythonやデザインパターンなど勉強していたので有名どころの文法をまとめました。

# リスト内包表記
これです
“`python
squares = [x**2 for x in range(10)]
# 出力:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
“`
このコードは0から9までの数の2乗のリストを作成する処理です。
このようにリスト内包表記はPythonでリストを簡単に作成する文法です

ちなみに、リスト内包表記を使わない場合は
“`python
squares = []
for x in range(10):
squares.append(x**2)
“`
このようにリスト内包表記を使うと3行で書けるものを1行で書けます

リスト内包表記にi

元記事を表示

【高先さんの電子工作】第26回:曲に合わせてLEDを光らせる

# 概要

プリキュアのメロディに合わせてLEDを光らせています。

## 電子回路

* NPNトランジスタとベースに接続する1kΩ抵抗
* パッシブブザー
* ボタン
* LEDと220Ω抵抗

上記をブレッドボードに差し込んでいます。
動画でもさらっと触れています。
詳しいピン番号はソースコードに記載されています。

## ソースコード

勢いで書いたので荒ぶっていますが、参考にして下さい。

“`python:main.py
from machine import Pin, PWM
from utime import sleep

# NPNトランジスタのベース
buzzer = PWM(Pin(15))
# ボタンの入力
button = Pin(16, Pin.IN, Pin.PULL_DOWN)
# LEDのピン
red = Pin(0, Pin.OUT, value=1)
green = Pin(1, Pin.OUT, value=1)
blue = Pin(2, Pin.OUT, value=1)
yel

元記事を表示

websocketを使いたい人のためにまとめたよ

まずWebsocketが使われる理由から

### Websocketが使われる理由
一言でいえば、
リアルタイム性、効率性、およびパフォーマンスの向上。

詳しく解説すると理由はいくつかあって、

#### 1. リアルタイム通信
WebSocketは、リアルタイムの双方向通信を可能にします。これにより、ユーザーとサーバー間で即時にデータを交換でき、リアルタイムアプリケーション(例:オンラインゲーム、チャットアプリ、ライブスポーツのアップデートなど)のパフォーマンスが向上します。
#### 2. 効率的なデータ転送
WebSocketは、持続的な接続を通じてデータを送受信するため、データ転送のオーバーヘッドが少なくなります。これにより、ネットワークの効率が向上し、レスポンスタイムが短縮されます。
#### 3. サーバーのリソース最適化
WebSocketは、オープンな接続を維持しながらも、リソースの消費を最小限に抑えます。これにより、サーバーの負荷が軽減され、大量の同時接続を効率的に処理できます。
#### 4. 低レイテンシ
WebSocketは、データの送受信における遅延を削減

元記事を表示

Pythonでリスト・辞書の操作を行ってみた! 〜その2〜

N今回は前回Pythonにてリスト・辞書の操作を行った続きを投稿いたします。

リストをN分割したい

リストをN分割する場合、要素数/Nを切り上げした数が分割後の要素サイズとなります。切り上げ処理にはmathモジュールのceil()を使用します。このサイズの間隔ごとにスライスすると、N分割したリストが得られます。以下のコードでは、リストを3分割しています。

“`py
import math
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
n = 3
size = math.ceil(len(l1) / n)
l2 = [l1[idx:idx + size] for idx in range(0, len(l1), size)]
print(l2)
“`
実行結果
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]が

リストの要素を条件指定で抽出したい

filter関数を使用すると、リストの中から指定条件に合致した要素だけ抽出することができます。第1引数に抽出条件となる関数を指定します。指定する関数は引数に対して何らかの判

元記事を表示

OTHERカテゴリの最新記事