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

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

音声wavファイルを入力してtxtで出力するツールを作った

## 入力文章(音声化前のテキスト)

私はその人を常に先生と呼んでいた。
だからここでもただ先生と書くだけで本名は打ち明けない。
これは世間をはばかる遠慮というよりも、その方が私にとって自然だからである。
私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。
筆をとっても心持は同じ事である。
よそよそしい頭文字などはとても使う気にならない。
私が先生と知り合いになったのは鎌倉である。
その時私はまだ若々しい書生であった。
暑中休暇を利用して海水浴に行った友達からぜひ来いというはがきを受け取ったので、私は多少の金を工面して、出掛ける事にした。
私は金の工面に二、三日を費やした。
ところが私が鎌倉に着いて三日と経たないうちに、私を呼び寄せた友達は、急に国元から帰れという電報を受け取った。
電報には母が病気だからと断ってあったけれども友達はそれを信じなかった。
友達はかねてから国元にいる親たちに勧まない結婚を強いられていた。
彼は現代の習慣からいうと結婚するにはあまり年

元記事を表示

Python&機械学習&データ分析なプログラミングにおけるTips

## これは何?

Python&機械学習&データ分析なプログラミングをする筆者(@daikikatsuragawa)のこれまでの経験に基づくTipsです。個人的に後に確認するためにまとめ、せっかくなので公開します。あわよくば「“もっと良い書き方”がありますよ。」というコメントや編集リクエストを期待しています。大歓迎です。主に以下について書きます。

– コードスニペット
– リファクタリング例

特に、“データ”を扱う“新人プログラマ”の方にとって、本記事が少しでも参考になるTipsになればと幸いです。

https://qiita.com/official-events/30be12dd14c0aad2c1c2

https://qiita.com/official-events/3f21c92121aa125807b4

※随時更新します。

## コードスニペット

### インスタンスをファイルとして保存&復元

プログラミングにおいて扱っているインスタンスをファイルとして保存したい場面があります。pickleによりオブジェクトをファイルとして保存&復元することが可能です。以

元記事を表示

Jinjaテンプレートの書き方をがっつり調べてまとめてみた。

本記事はQiitaの[「データに関する記事を書こう!」](https://qiita.com/official-events/30be12dd14c0aad2c1c2)イベント用の記事となります。

最近聞くことが多くなってきたJinjaの書き方について整理&まとめてみました。

# Jinjaって何?(どんなところで使われているのか)

Djangoとかを普段使っている方はお馴染みの`{% for i in range(10) %}`とか`{{ any_variable }}`みたいな書き方を任意のテキストファイルに対して反映できるテンプレートエンジンのライブラリです。初版リリースはこの記事を執筆している時点で3年弱くらい前なので比較的新しいライブラリになります。

以下に書かれているようにDjangoのテンプレートの機能がベースとなっており、Djangoに慣れている方であればほぼ学習コスト0で書けるような書き方になっています。

> Djangoのテンプレートエンジンにインスパイアされているので、パッと見はDjangoのデフォルトのテンプレートエンジンと同じです。Jinja2はDj

元記事を表示

DOBOTに緊急停止スイッチを取り付ける

# やりたいこと
DOBOT Magicianには、緊急停止用のボタンが搭載されておらず、また、ハードウェア的に緊急停止する機能が実装できるように設計されていないようです。

ただ、DOBOTの動作を止める(緊急停止)APIは用意されているので、そちらと外部スイッチを用意して、ソフトウェア的に簡易な緊急停止スイッチを作りたいと思います。プログラム上でスイッチの入力を監視し、入力があれば動作を停止する命令を送るものなので、いわゆる緊急停止スイッチのようにどのような状況でも安全に停止できることを保証していない点、ご留意ください。

# できたもの
## スイッチの接続
今回のプログラムでは、DOBOT背面のEIO14とEIO20を使用しています。
接続は、以下の画像を参照してください。

元記事を表示

DOBOT×AI グリーンバックから対象物の輪郭を抜き出す

# やりたいこと
以下のテキストでは、AIを用いた画像認識により対象物を分類し、ロボットアームにより仕分けを行っています。
・[DOBOT Magician AIx画像認識xロボットアーム制御](https://afrel.co.jp/product/dobot/education-product/)

上記テキストでは、画像認識によって対象物の領域を取得する際に、カメラの画像をグレースケールに変換した後、2値化して、その後、領域を取得しています。その場合でも、カメラの調整や環境(照明の明るさ、外乱光等)の調整をすることでおおよそ認識することが可能です。
テキストでは、グレースケールした際に明暗がハッキリするように、カメラに映るところに黒い下敷きを敷いています。

ただ、対象物が黒い場合、上記の方法ではうまく認識できないことがあります。
今回は、黒い下敷きを任意の色のついたものに変えて、その色を抜き出すことで対象物と背景を切り分けてみたいと思います。

# できたもの

[Attention入門]seq2seqとAttentionの解説(TensorFlow)

BERTを勉強していて**seq2seqのAttention**について整理しました。モデル部分は理解しましたが、**訓練ジョブを流す部分などはほとんど見ていないですし解説もしていません**。seq2seqについては[記事「【Keras入門(7)】単純なSeq2Seqモデル定義」](https://qiita.com/FukuharaYohei/items/27cd247342a0f7006511)で以前解説をしました。
もともとは以下のオンライン講座を受講していて、Attentionに関する理解を深めようとしたのがきっかけでした。

https://www.udemy.com/course/nlp-bert/

以下のTensorFlowのチュートリアルを使って学習しました。

https://www.tensorflow.org/text/tutorials/nmt_with_attention

チュートリアルに以下の記載があるとおり、少し**古い考えですが Attention を理解する上で重要**だと信じ時間をかけました。
> While this architecture

元記事を表示

PaSoRiとnfcpyでNFCの中身を見てみる

# はじめに

– NFCやFeliCaの仕様に関しては [NFCとFeliCaについて整理する](https://qiita.com/h_tyokinuhata/items/d75afab3e5654535a7f3) でざっくりとまとめています

# どうやってNFCカード/タグを読み込むの?

– PCに外付けのNFCリーダーを接続する or NFC対応のスマホを使用する
– NFCリーダーはSONY製のPaSoRiがデファクト感ある

# どの型番のPaSoRiを使えば良いの?

– PaSoRiの製品一覧は [PaSoRi製品比較表](https://www.sony.co.jp/Products/felica/business/products/reader/comparison.html) にまとまっているため、自分のプラットフォームで動作する機種を選択する
– `RC-S300`は`RC-S380`の後継機種
– 注意点としては`RC-S300`と`RC-S300/S`はnfcpy(後述)で認識できない

# どうやって中身(データ)を見るの?

– コードから制御したい

元記事を表示

EfficientNetV2の学習済みモデルでGrad-CAMを試す

# はじめに

CNN可視化手法であるGrad-CAMを試してみようと思います。
画像分類AIの予測根拠の可視化などに使われたりしている技術です。

– 環境
OS: Ubuntu18.04LTS
CPU: Intel® Core™ i7-8700 CPU @ 3.20GHz × 12
GPU: GeForce RTX2080
Python: Python3.7.9(Anacondaで作成した仮想環境)
tensorflow:2.8.0
matplotlib:3.5.1
numpy:1.21.5
opencv-python:4.5.5.64

– 参考記事
① [kerasとtensorflowでGrad-CAMを実装してみた](https://qiita.com/Kensuke-N/items/cea3920f19bebc9e0d19)

# 学習済みモデルの読み込み
“`python
# ライブラリの読み込み
import tensorflow as tf
import numpy as np
import cv2
import matplotlib.pyplot as plt

元記事を表示

PostmanからバイナリデータをPOSTする

最近APIのテストをする時によくPostmanを使っています。
FastAPIにバイナリデータをPOSTしようとして詰まったのでメモっておきます。

## TL;DR
Postmanからバイナリを送信するときはbinaryではなくform-dataを使いましょう。

## 困ったこと
`http://localhost:8000/pool/`でPOSTを受信するプログラムを作っていました。
“`ruby:main.py

@app.post(“/pool/”)
async def receiveBinary(file: UploadFile = File(…), authorization: str = Header(None)):
BearerCheck(authorization)
return {“filename”: file.filename}
“`
PostmanでPOSTのチェックをしたところ
422 Unprocessable Entity `”failed required” “value_error.missing”`と怒られてしまいま

元記事を表示

モノグサプログラミングコンテスト2022(ABC249) A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

モノグサプログラミングコンテスト2022(ABC249) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

# モノグサ株式会社について
本コンテストはモノグサ株式会社様が主催されています。
モノグサ株式会社様は「解いて憶える」記憶アプリ『Monoxer(モノグサ)』の開発と運営等をされています。
興味のある方は採用ページを御覧ください。

https://careers.monoxer.com/#section-entry

# A – Jogging

https://atcoder.jp/contests/abc249/tasks/abc249_a

ABCのA問題は10回に1回くらいやたら難しい問題が出ます。
今回がそのやたら難しい回なので、今回解けなかった人も落ち込まずに競技プログラミングを続けてください。

高橋くんと青木くんがどこまで進めるか実際にシミュレーションしてみましょう。
残り時間をtim

元記事を表示

Elasticseach App Search に MongoDBのデータを書き写して全文検索調査に使う。

# はじめに
MongoDBにコレクションされたドキュメントに対し、全文検索したくなった。しかし、MongoDBに対して検索をしかけるのではちょっと速度面で難がある。また、検索のためのUIの作成もめんどくさい。

なにか簡単に実用的なツールを構築する手立てはないか、と模索していたところ、Elasticsearchに App Searchというものがある(あった?2020年に名称が変更になっているらしい)ことがわかった。

今回の先達情報はこちら。

https://qiita.com/tike/items/dc1ed4d0734080a00376

こちらの先達の手段で、AppSearch環境は作れる。本投稿では、PythonでMongoDBのデータを読み込み、AppSearchに書き写す機能の開発の説明に重点を置きながら、全文検索調査システムを構築する手順を紹介する。

# App Search のセットアップ

docker を使う。dockerで 4GB程度のメモリが使える環境であることが必要らしい。事前準備として、読者の環境でdovkerの環境を調整してほしい。また、ローカル環

元記事を表示

カスタム桁数(10まで)のhit&blowをpythonでやる

# hit&blow
hit&blowとは知ってる人も多いと思うが、ランダムに一個数字を選んで言った数字と比較するものである。

例えばランダムな数字が1234だとして1283と言ったら2hit1blowである。(因みに数字がかぶることはない)

つまり位置も数字も同じ場合hitが1増える、数字が同じでも位置が違えばblowが1増えるということだ。
良くあるのは3、4桁だが数字が被らないようにすれば10桁までいけるので作ってみた。~~(解くのに時間かかりそう)~~
# コード
まずどのようにしてhit,blow数をカウントするかだが、これはまず2つの数字の共通する数字を全て数え出す(言葉で説明するのが難しいが、要は4桁だとしたら4×4の16通りの組み合わせの数字を比べて同じ数字の数を数えるということ)。•••①
そしたら数字が一緒になるときは位置について同じ位置か違う位置かしかないため①の数からhit数を引けば良い。
hit数を数えるのは
“`py
for i,n in zip(randomnum,inputnum):
if i==n:
“`
のように簡単に取得できる。
では作

元記事を表示

MPV+PulseAudioでDiscord音楽ボットに新たな可能性を作る

現存するDiscordの音楽ボットには、一時停止やリピートができるもの、音量を変更できるものがたくさん存在します。
しかしシークができたり再生速度を変えられるというボットは今まで聞いたことがありません。
ならば作ってみようということで、まずはどういう仕組みにするか考えることにしました。
この記事では[Discord.py](https://github.com/Rapptz/discord.py)を使用します。
OSはUbuntu 20.04 LTSを使用します。

# 仕組みを考える
## そもそも単体で完結させるのはちょっと厳しい
Discord.pyやDiscord.jsは音声を送信する過程(音声ファイルのデコード等)にFFmpegを使用しています。
ここはどうしても外部に頼らざるを得ない部分でもあります。
さらにここに、今目標としているシーク機能や再生速度を変える機能を実装するとなると、時間がかかって効率が悪くなってしまいます。既存のソフトウェアをうまく組み合わせたほうが早く実現できそうです。

## 既存のソフトウェアを使う
DiscordボットはGUIのある環境で動かすこと

元記事を表示

PythonでGoogle Fitness APIから1日ごとの歩数や移動距離を取得する

# はじめに

GoogleFitのアプリで記録している歩数や移動距離といったアクテビティデータをPythonで取得するスクリプトです。

# 実装

環境は以下の通り。

– Python: 3.8
– google-api-python-client: 2.45.0
– oauth2client: 4.1.3

## 前準備

はじめにGoogle Cloud ConsoleでFitness APIを有効化し、Oauth2クライアントの認証情報を作成する。

[Google Cloud Platform](https://console.cloud.google.com/)

GCPにログインをし「Fitness API」の管理コンソールに移動する。その後、遷移した先の管理画面で「有効化」を押下し、以下のように「APIが有効です」と表示されることを確認する。

![b86d5db9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163680/3918db61-a020-985b-d492-935

元記事を表示

OpenCVとsklearnでk-means法を使う

# はじめに
前回の記事「[**OpenCVでトゥーンな加工をする**](https://qiita.com/mo256man/items/8a9bb7bb66e107fd7153)」のために減色について調べていたところ、k-means法による減色の記事を多数見つけることができた。k-meansといえば教師なし学習のクラスタリング手法ではないか。なぜ減色に使えるのだろう。
不思議に思った私はk-meansについて調べはじめた。

# k-means法について

## k-meansの考え方
紙と鉛筆で実感するキカガクの動画がわかりやすいので説明はそちらに任せることにする。