- 1. 音声wavファイルを入力してtxtで出力するツールを作った
- 2. Python&機械学習&データ分析なプログラミングにおけるTips
- 3. Jinjaテンプレートの書き方をがっつり調べてまとめてみた。
- 4. DOBOTに緊急停止スイッチを取り付ける
- 5. DOBOT×AI グリーンバックから対象物の輪郭を抜き出す
- 6. [Attention入門]seq2seqとAttentionの解説(TensorFlow)
- 7. PaSoRiとnfcpyでNFCの中身を見てみる
- 8. EfficientNetV2の学習済みモデルでGrad-CAMを試す
- 9. PostmanからバイナリデータをPOSTする
- 10. モノグサプログラミングコンテスト2022(ABC249) A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
- 11. Elasticseach App Search に MongoDBのデータを書き写して全文検索調査に使う。
- 12. カスタム桁数(10まで)のhit&blowをpythonでやる
- 13. MPV+PulseAudioでDiscord音楽ボットに新たな可能性を作る
- 14. PythonでGoogle Fitness APIから1日ごとの歩数や移動距離を取得する
- 15. OpenCVとsklearnでk-means法を使う
- 16. 天気によって降水量を調整できる自動水やり機をつくる
- 17. 既存のSecurityGroupをCloudFormationテンプレートにする
- 18. 【AtCoder参加記】PythonでABC249のA, B, C, Dを解く
- 19. 【Python×機械学習×React】 マッチングアプリを利用している・興味のある人向けのサービス 『マッチングアプリ プロフィール写真診断』 を作りました。 (男性向け) 【個人開発】
- 20. シナリオライターがAI技術を開拓して文章生成してみる(1)【Word2vec、N階マルコフ連鎖、python】
音声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が有効です」と表示されることを確認する。
」のために減色について調べていたところ、k-means法による減色の記事を多数見つけることができた。k-meansといえば教師なし学習のクラスタリング手法ではないか。なぜ減色に使えるのだろう。
不思議に思った私はk-meansについて調べはじめた。# k-means法について
## k-meansの考え方
紙と鉛筆で実感するキカガクの動画がわかりやすいので説明はそちらに任せることにする。
天気によって降水量を調整できる自動水やり機をつくる
# ラズパイとサーボモータで自動水やり機をつくる
## 背景
先日,家の庭に畑を作りそこに大根や枝豆やなどの家庭菜園を始めました.
最初のころは楽しみながら水やりしていましたが,今ではめんどくさすぎて雨の日を祈るばかりです.
そこで,勝手に水やりしてくれるものがあればいいじゃん!と気が付いたので調べてみました.### 既製品は高いし時限式ばかり
https://www.amazon.co.jp/s?k=自動水やり機
アマゾンで自動水やり機を検索し値段と機能を確認したところ,やはり高価なものばかり...
1万円以上するものは蛇口をタイマーで制御し,定刻になるとスプリンクラーが作動するという仕組みのものが多く,一万円以下のものは簡易的な植物の水やりに適したポンプ式が多いように思います.
できればお金をかけたくないので安いものを購入したいところですが,私の家の植物たちは外の畑にあるので,簡易ポンプ式では水の量や水圧などに限界がある可能性があります.また,ポンプ式はポンプ式内の水を足さなければならないという手間があるので,やはりめんどくさいです.
そこで,自動でお水を撒いてくれる仕組
既存のSecurityGroupをCloudFormationテンプレートにする
# 既存のSecurityGroupをCloudFormationテンプレートにする
`Usage: script.py –profile
> cfn_template.json` これでJSONテンプレートが出来上がる。
** ImportStackするには、別途resources-to-import用のJSONが必要
** プロファイルは、適宜設定が必要“`
#!/usr/bin/env python
import boto3
import json
import ipaddress
import argparse
import sys
import reparser = argparse.ArgumentParser()
parser.add_argument(“-p”, “–profile”, required=True)
args = parser.parse_args()if not args.profile:
sys.exit(“ERROR: Argument is missing.\nFor example:
【AtCoder参加記】PythonでABC249のA, B, C, Dを解く
自分がコンテストでやった考察と実装を書いてみます.
* [A問題 『Jogging』](https://qiita.com/yassu/items/95f53238774e0d34489b#a%E5%95%8F%E9%A1%8C-jogging)
* [B問題 『Perfect String』](https://qiita.com/yassu/items/95f53238774e0d34489b#b%E5%95%8F%E9%A1%8C-perfect-string)
* [C問題 『Just K』](https://qiita.com/yassu/items/95f53238774e0d34489b#c%E5%95%8F%E9%A1%8C-just-k)
* [D問題 『Index Trio』](https://qiita.com/yassu/items/95f53238774e0d34489b#d%E5%95%8F%E9%A1%8C-index-trio)## A問題 『Jogging』
問題ページ: [A – Jogging](https://atcoder.jp/cont
【Python×機械学習×React】 マッチングアプリを利用している・興味のある人向けのサービス 『マッチングアプリ プロフィール写真診断』 を作りました。 (男性向け) 【個人開発】
# サービス概要

対応端末は`PC`・`スマホ`どちらも対応しております。URL:https://www.profile-diagnostic.com/
Github:https://github.com/ryuki7/dating-apps-master-image-diagnosticマッチングアプリを利用している・利用しようか迷っているが女子受けの良いプロフィール写真が分からない、マッチングアプリを利用したら自分がどれくらいモテるのかを知りたい人に
マッチングアプリのプロフィール写真に設定した場合のモテ度を教えてくれる
マッチングアプリのプロフィール写真診断サービスです。# このサービスを作った背景
私が以前開発したマッチングアプリ完全攻略サービスである、Python機械学習ポートフォリオReactマッチングアプリシナリオライターがAI技術を開拓して文章生成してみる(1)【Word2vec、N階マルコフ連鎖、python】
# はじめに
100%をAIに任せたいクリエイターはいないでしょう。しかし、たとえば、画面上で絵筆を操れるようになった事で、描き方に選択肢が増えたように――AI技術と組み合わせて、新しい執筆の形を考えてみたい人はいるかも知れないと考えました(自分は思った)。プロ・セミプロ・アマチュア問わず、自然言語生成の中で一番難しいとされる、文芸に挑戦したい人向けの資料になれば幸いです。
# 今回の記事(1)では
まずは単純に、N階マルコフ連鎖でセリフを増殖させるだけです。ただ、いずれ「形態素解析」「入力値に対応」「キーワード抽出」関連を説明するのを念頭に、サンプル文章を考えてみました。今回の記事(1)では、作品やキャラクターのTwitter宣伝に使えればよい程度のセリフ生成をしてみます。
## 記事のターゲット
– 俺の原稿を教師データにしたい人(プログラム未経験歓迎)
– SaaSチャットボットをビジネスで利用しているが、ブラックボックス部分をもう少し理解したい人ログ・ルール原稿とAI技術を組み合わせるのは、ビジネス向けチャットボットと同じだと考えています。
なので、チャットボ