Python関連のことを調べてみた2022年11月08日

Python関連のことを調べてみた2022年11月08日

DNNに必要な画像データの水増し

# DNNで使える画像データ水増し手法
## はじめに
DNN(Deep Neural Network)を活用したディープラーニングにおいて、画像学習をさせようとしたときの話。
DNNでクラス分類の精度を上げるには、より良いデータを取得する必要があります。
良いデータとは主に、
– 画像枚数が十分
– 各タグの画像枚数が等しい
– 正確なアノテーション

などとされています。
これらを実現するにあたって必要なものは一貫して「画像データの枚数」にあります。
そこで、今回は「ガンマ変換」と「平滑化」を用いて、画像の水増しをする手法を備忘録的に書いておきます。

また、実際のサンプルデータとコードは[github](https://github.com/wassy310/DNN_Image-data-padding-method)に置いてあります。

## ガンマ変換(ガンマ補正)
輝度値を変化させることで実装できる変換手法です。
これにより、画像を明るくしたり暗くしたりして水増しします。
サンプルコードの
“`
gamma = 0.4
“`
の実数部を変えることで、輝度を変えることが可

元記事を表示

DataFlowのパイプラインでCerberusの機能を使って、csvをチェックしてみた。

# はじめに
現在業務でGCPのDataFlowを使ってデータパイプラインを構築しており、CSVファイルがアプリケーションから来るのですが、たまにユーザが手で直したりなんてことがあるので、バリデーションして、不適当な行があれば省いて、後続のデータパイプラインに流したいと思っています。(上流の運用なおしたいのはやまやまですが。。。)
そこでCerberusというバリデーションライブラリがあったので、いっちょやってみようと思った次第です。

# Cerberusとは
Pythonのデータ検証用のライブラリで
「Cerberusは、強力でありながらシンプルで軽量なデータ検証機能をすぐに提供し、簡単に拡張できるように設計されているため、カスタム検証が可能です。依存関係はなく、Python 2.7から3.8、PyPyおよびPyPy3まで徹底的にテストされています。」とのこと
(引用元https://docs.python-cerberus.org/en/stable/index.html)

簡単に機能と使い方を説明すると、データとチェック用のファイルを比較して、OK/NGを判断してくれます。

元記事を表示

Pythonでndjsonファイルを扱う方法

# はじめに

最近ndjson形式のファイルを扱うことが増えてきたため、今回はPythonでndjson形式のファイルを扱う方法を簡潔にまとめてみた。
ndjsonというモジュールがあるらしいので、それを使用してみる。

# 参考記事など

https://pypi.org/project/ndjson/

https://dk521123.hatenablog.com/entry/2022/08/30/224248

# テスト用ndjsonファイル準備

以下のような値をもつファイルを作成し、test_input.ndjsonとして保存した。

“`
{“username”:”Mac”,”hobby”:[“baseball”,”soccer”,”tennis”]}
{“username”:”John”,”hobby”:[“baseball”,”cooking”]}
{“username”:”Miki”,”hobby”:[“cooking”,”reading”]}
{“username”:”Andy”,”hobby”:[“baseball”,”soccer”]}
“`

#

元記事を表示

AI映像解析で車両の速度を自動算出すると異常値ばっかりで苦労した

# サマリー
**・速度の算出結果がおかしい
・原因調査と対策
・距離マスクを詳細化したときの効果
・多方向からによる距離マスクの検証結果**

前回の記事「[YOLOXの映像解析で車両の速度をAIで算出して渋滞を判定するのに苦労した~その2:速度算出手法編](https://qiita.com/drafts/a86f20673df6b6536345)」で距離マスクの説明をして、斜めに移動する車両もY軸方向の移動距離のみで速度が算出できることを説明しました。
また「画面の端問題」「カルマンフィルタ問題」など、速度算出の際に異常値となる原因を見つけ出し、それらを排除して正確な速度算出ができるようにしました。

しかし実際にやってみるとそう甘くはなく、意外な原因で速度算出値がブレることが分かりました。
ここでは失敗した映像と成功した映像の比較を行い、最終的には度数分布で異常値を2%以下に抑え込みました。

また距離マスクが詳細になったときの効果や、一方向ではなく多方向に移動する車両に距離マスクが有効かどうかも検証した結果を記載します。

# 速度の算出結果がおかしい

で、実際に撮影した映

元記事を表示

pythonエンジニアになるための教材とは?(非エンジニアのメモ)

pythonエンジニアになるべく学習中。なのだがいかんせん所持している教材が多すぎる。
手元にある教材をジャンル別にまとめてみた。

コンピュータサイエンス

『基本情報技術者』

『みんなのコンピュータサイエンス』

『決定版 コンピュータサイエンス図鑑』

『教養としてのコンピューターサイエンス講義 今こそ知っておくべき「デジタル世界」の基礎知識』

『コンピュータ、どうやってつくったんですか? はじめて学ぶ コンピュータの歴史としくみ』

『UNIXという考え方―その設計思想と哲学』

Python,Django

『シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全』

『ゲームを作りながら楽しく学べるPythonプログラミング (Future Coders(NextPublishing))』

『独学プログラマー Python言語の基本から仕事のやり方まで』

udemy:
はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス

現役シリコンバレーエンジニアが教えるPython 3

元記事を表示

世界最高精度を達成した言語モデルLUKEの論文を徹底解説(試しに使えるソースコードも記載)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2847349/7113578e-d690-be81-89f2-3998e25d9962.png)

こんにちにゃんです。
水色桜(みずいろさくら)です。
今回は2020年4月当時、5つのタスクで世界最高精度を達成した新しい言語モデルLUKEの論文について、新規性は何なのかなどについて書いていきたいと思います。
日本語バージョンのLUKEは執筆現在(2022年11月)も4つのタスクで最高スコアを有しています。
もし記事中で何かご不明な点、間違いなどがありましたら、教えていただけると嬉しいです。

# LUKEの特徴・新規性まとめ(お忙しい方向け)
1. RoBERTaをベースに構成されたよ。
1. 日本人を中心としたチームが開発したモデルがTransformersに採用されたのはLUKEが初めてだよ。
1. Wikipediaから取得した固有表現注訳付きコーパスを用いて、ランダムにマスクされた単語を予測するタスクで事前学習を行ったよ。
1.

元記事を表示

ubuntuでtkinterが使えなくなった(泣)

## はじめに
初カキコども
Ze;roPです〜
最近pythonにお熱で難しいことはよくわからないけど、適当にツール作って遊んではそれを仕事で活かしたりして遊んでます。
さて、コマンドラインツールやマクロのようなものばかり作っていて、ちょっとユーザーに優しい感じのツールも作れたらいいかも〜って思ってtkinterを使おうとインストールして、リファレンスのhello worldを実行しようとした矢先、それは起きました。。。
## 突然のエラー
“`
$ python3 -m tkinter
Traceback (most recent call last):
File “/home/USER/.pyenv/versions/3.10.7/lib/python3.10/runpy.py”, line 187, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File “/home/USER/.pyenv/versions/3.10.

元記事を表示

画像の任意の座標を中心とする余白を追加する方法

# 概要
画像の任意の座標が中心にくるように余白を追加(Padding)する方法を紹介する。

# 実装
Google Colabで作成した本記事のコードは、[こちら](https://colab.research.google.com/drive/1SNymN6glCkmowuq0V_Y1ohl04xOwmEPj?usp=share_link)にあります。

## Paddingサイズを最小限に位置合わせ
画像の任意の座標が中心にくるように最小限のPaddingをする方法です。メリットは、最小限のPaddingのため、画像サイズが大きくなりにくいところです。

“`Python:Paddingサイズを最小限に位置合わせ
import numpy as np
import matplotlib.pyplot as plt

def trim_img_coord2centering(img, coord):
x_shift = img.shape[1]-1-2*coord[0]
y_shift = img.shape[0]-1-2*coord[1]
if x_

元記事を表示

python subprocess

## コマンドの結果取得
“`py
import subprocess, sys

cp = subprocess.run([‘ls’, ‘-1′], encoding=’utf-8’, stdout=subprocess.PIPE)
print(‘ファイル名:’ + cp.stdout )
print(‘ファイル数:’ + str(len(cp.stdout.splitlines())))
“`

## ファイルへ書き込み
“`py
with open(‘out.txt’, ‘w’) as fp:
subprocess.run([‘ls’, ‘-1’], stdout=fp)
“`

元記事を表示

python グラフ描画の配列引数でのエラー

## 背景
配列の1個目の要素の違いにより、エラーになるケースがあり理由を調査する。
下記のケースで、配列の1個目が文字列の時はエラーが発生する。
エラー
~~~
TypeError: ‘value’ must be an instance of str or bytes, not a float

~~~
strでfloatではない気がするがなぜなのか調査する。

## うまくいく例 (1)
“`py
import matplotlib.pyplot as plt
import numpy as np

test_fig = plt.figure()
ay1 = test_fig.subplots()
list1=[1,2,3,4,5,6]
list2=[np.nan, np.nan, np.nan,”80″, “40”, np.nan]
ay1.scatter(list1 ,list2, c=”orange”)
test_fig.savefig(“save_filename.png”)
“`

## うまくいく例 (2)
“`py
test_fig = plt.figure(

元記事を表示

よく使うけど、よく忘れるコード

# CSVの読み取り

csv読み込み
“`
df = pd.read_csv(“xxx.csv”)
“`

#csvへ出力する

“`
pd.DataFrame(df).to_csv(“download-data.csv”, header=True, index=False)
“`

# データ削除編

1行の削除
“`
df.drop(‘行名’)
“`
複数行の削除
“`
df.drop([‘行名’,’行名’])
“`

# df 1行1列ピンポイントで取得
“`
df.loc[‘行名’, ‘カラム名’]
“`
出力は値のみ
“`
df.loc[‘行名’][‘カラム名’]
“`
出力は値のみ
“`
df.loc[[‘行名’], [‘カラム名’]]
df.iloc[2,1]
“`
出力は値のみ
カッコ内の数値は先頭を0とする[行番号,カラム番号]
“`
df.iloc[[2], [1]]
“`
カッコ内の数値は先頭を0とする[[行番号],[カラム番号]]
“`
df.at[‘行名’, ‘カラム名’]
“`
出力は値のみ
“`
df.iat[2,1

元記事を表示

PyTorchでIoUを求める (torchmetricsのiouモジュールは廃止済)

# 概要

Semantic Segmentationを実施する際、IoU (Intersection over Union)を計算すると思います。

2021年末迄は`torchmetrics.functional`からで、`iou`モジュールをインポートすれば計算できていたのですが、バージョンアップにより`jaccard_index`に変更になっています。[^1]

このことに気付かず最初少し苦戦したので、記事として記録しておきます。

公式ドキュメント: https://torchmetrics.readthedocs.io/en/stable/classification/jaccard_index.html

[^1]:https://github.com/Lightning-AI/metrics/pull/662/commits/2e96b03de0e0b3a8ddb5010df1df9f5e3197238b

# Jaccard Indexとは

IoUと定義は全く同じです。ある集合とA, 別の集合Bのjaccard indexを$J(A,B)$としたとき、

“`m

元記事を表示

[python] マルチスレッドを利用して自動化の時間を短縮する -Pool-

# はじめに
多量のデータを扱う場合、どうしても応答時間が長かったりする。
ネットに接続するとき、0.1秒ほどはかかってしまうが、Webスクレイピングのように無数のurlに接続してデータを取り出す場合はその0.1秒が積み重なってものすごい長い時間になる。
ここではマルチスレッド`Pool`を利用して自動化の時間を短縮することをまとめた。

# 環境
window 10
python 3.7.8

# Code
“`python
import requests
import time

# 開始時間
start_time = time.time()

# 100個分ulrを用意した
url_list = [f’https://finance.yahoo.co.jp/quote/{x}.T’ for x in range(5000, 5099)]

def get_data(url: str):
data = requests.get(url)
return data.status_code
“`
## 普通モード
“`python
result = map

元記事を表示

【OpenCV】2つの画像の類似点の座標(X,Y)をndarray形式の変数に格納する【Python】

[参考文献:opencv画像をマッチングする](https://wonderfuru.com/opencv%E3%81%A7%E7%94%BB%E5%83%8F%E3%83%9E%E3%83%83%E3%83%81%E3%83%B3%E3%82%B0%E3%82%92%E3%81%99%E3%82%8B/)
# はじめに
[前回のQiitaの記事](https://qiita.com/matttchan/items/0bf30b808b267222d881)ではAkazaのおかげで特徴点マッチングを実現することができた。今回は、その特徴点の座標を取得し、より数学的に画像を扱えるように加工していく。

**P.S.この記事はやや深夜テンションで執筆しているので読み進めると気分を害されるかもしれません。耐えてください。**

# 環境
OS : Ubuntu 20.04 LTS (最新バージョンも対応してるかも)
Python : 3.8.10
OpenCV-Python : 4.6.0

# きらきら復習たいーむ
## Pythonの文法覚えてるかなチェック
最終的にaの変数はどうなるか

元記事を表示

CPython – インクリメントの追加 全変更点まとめ

# 変更手順まとめ
本記事は[Pythonに前置・後置インクリメントを追加してみた](https://qiita.com/r1c0chet/items/94c6acdd02ec066dbd18)の参考ページです。

基本的に以下の順番で変更しました。
Parser/tokenizer.c, Python/ast.cなど、公式サイトでは変更が必要とされていたものでも変更していないものもあります。

## Grammar/Tokens
`++`というものが存在することを明記
“`
INCREMENT ‘++’
“`
`$ make regen-token`を実行する必要がある

## Grammar/python.gram
実際に`++`というトークンはどのような使用法(文法)で用いられるのか,そしてどのような解釈をするのか
つまり`a = primary`(変数,配列,構造体)に対して`++a`, `a++`という文法を許容・追加し,それぞれ前置・後置インクリメントとして解釈すると記述した
“`
factor[expr_ty] (memo):
|

元記事を表示

Pythonに前置・後置インクリメントを追加してみた

# Pythonに前置・後置インクリメントを追加してみた
こんにちは。この記事はEEIC(東京大学工学部 電気電子工学科/電子情報工学科)3年の後期実験「大規模ソフトウェアを手探る」という授業でPythonを改造してインクリメントの機能を追加してみた体験談になります。今後Pythonを改造してみようと思った方にとっての道しるべとなれば幸いです。

このページに載せている変更点はポイントのみの抜粋です。
全変更点は[別ページ](https://qiita.com/r1c0chet/items/af7dc5b9310373870965)に載せています。

## 環境
PC: Ubuntu 20.04 LTS
デバッガ: VSCode & GDB 9.2

## cpythonのソースコードのクローン & ビルドのテスト
公式の[GitHubのリポジトリ](https://github.com/python/cpython)から引っ張ってきます。

ビルドは
“`
$ CFLAGS=”-O0 -g” ./configure –prefix=[directory to install]
$

元記事を表示

対話システム

# デモ

# デモ + 動作付き

東京大学制作展 2022 の作品の一部です。

https://iiiexhibition.com/#works

##### ノンバーバルコミュニケーションデモ

https://qiita.com/KayaTakashiro/items/8a212b11a78fab3bba0c

# システム概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1353403/65ebe602-5abc-dcd4-8f7b-b9674117cf49.png)

キャラクター対話システムで使用した対話システムの中身になります。

## 説明

内容としては,
1. 入力された文章に対して、それがキャラクターに対する質問だった場合、それに解答するテンプレート応答の生成を行います。
2. 入力された文章が、知識を必要とする天気や言葉の意味に対する質問

元記事を表示

WSL2 上の Ubuntu に pyenv 環境を作ろうとしてハマった

WSL2 上の Ubuntu 22.04.1 LTS に pyenv 環境を作ろうとしてハマったので対応策のメモ

## 実行した手順

[GitHub の pyenv のページ](https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv)に書かれている手順に従い、

“`
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo ‘export PYENV_ROOT=”$HOME/.pyenv”‘ >> ~/.bashrc
$ echo ‘command -v pyenv >/dev/null || export PATH=”$PYENV_ROOT/bin:$PATH”‘ >> ~/.bashrc
$ echo ‘eval “$(pyenv init -)”‘ >> ~/.bashrc
“`

を実行し、シェルの再起動

“`
$ exec “$SHELL”
“`

ここで

“`
/mnt/c/Users/mare_ism

元記事を表示

Pythonに パラメータとして日付を渡してみました – 第三弾

## 概要

データ分析において、データ抽出に年月のみ指定し、その年月の月初から月末までを取得する、、、、そんな理由でサクッと作ってみました。の第三弾!
Azureの請求データを CostManagement から取得するときに年月のみを指定し、その年月のデータを抽出することを想定しています。

ちなみに、[第一弾の記事](https://qiita.com/turupon/items/022cc53a086edb8e58d0)、[第二弾の記事](https://qiita.com/turupon/items/bc613cd074dfa76c12a3) はこちらになります。

### 実行環境

macOS Monterey 12.3.1
python 3.8.12

### 実行プログラム

“`python:BillingMonth.py
from datetime import *
from dateutil.relativedelta import relativedelta
import argparse
import sys

# パラメータ年月から月初-月末の取得
de

元記事を表示

ホールドアウト法と交差検証法をまとめてみた

# はじめに
今回、機械学習のモデル検証方法である**ホールドアウト法**と**交差検証法**を簡単にまとめた。

前提知識としてモデルやハイパーパラメータの概要があることが望ましい。

ただ、なくても概念は理解できるように努めたため、理解いただければ幸いである。

# 目次
1.モデル検証とは
2.ホールドアウト法
3.交差検証法
3-1.k分割交差検証
3-2.leave-one-out(1個抜き)交差検証
3-3.層化交差検証
3-4.その他の交差検証
4.まとめ

# 1.モデル検証とは
機械学習のなかでも教師あり学習において、未知のデータに対する予測を高い精度で行うことが求められている。
そのため、既知のデータを用いて未知のデータを予測するような仕組みを作ることとなる。
このような、入力データに対してある結果(出力)を導き出す仕組みを**モデル**と呼ぶ。
また、モデルの仕組みの中で性能を高めるために、自由に調節できる要素のことを**ハイパーパラメータ**と呼ぶ。

そして、モデルを作成した際にそのモデルが未知データに対しての予測性能を測る

元記事を表示

OTHERカテゴリの最新記事