python

heic->jpeg変換ツール公開 (インストール不要 フリーソフト)

概要 iPhoneで撮影したheicファイルをjpegに変換する際、様々な変換ツールが存在しているが、webサービスもインストーラ付フリーソフトもセキュリティ上不安・・・ということで、インストーラなしのシンプルな変換ツールを自作したので公開する。 Pythonでさ…

pythonでHEIC形式の画像をjpegに変換する(Windows対応)

概要 iPhoneで撮影したHEIC形式のファイルをjpegに変換する際、webサービスにアップするのはセキュリティ上不安だし、このためだけにフリーソフトを入れるのもなんだか・・・ということで、pythonで変換できるようにしてみた。 よく紹介されているpyheifだと…

python,tkinterを用いた"GUIによるファイル選択⇒処理"のひな形

概要 python tkinterを用いて、GUIで指定したファイルに対して処理を行うプログラムを記載することが多い。 基本的には、整数バーやラジオボタン等を使ってパラメータを指定し、ファイルを指定して出力、という流れがほとんどとなる。毎回書き方を調べるのも…

16進数が記載されたテキストファイルをバイナリに変換(python)

経緯 wireshark等でキャプチャした16進数の値をバイナリに変換したい!と思って作ったスクリプト。 実行するとGUIでテキストを選択するダイアグラムが出るので、そこでテキストファイルを選択すると、同じディレクトリに.binとしてバイナリ化されたファイル…

pipをアップグレードするとpip installがエラーで使えなくなる問題の解決方法(from pip import main; ImportError: cannot import name main)

経緯 解決方法 経緯 pip install --upgrade pipとしてpipをアップグレードすると、以下のエラーが出てpip installが出来なくなる問題が発生した。 どうもpip9〜pip10の移行に伴う問題の模様。 調べると様々な解決策が講じられているが、どれもあまりうまく行…

見開きPDFのページ分割/トリミングアプリ (フリーソフト、非破壊自炊PDF)

フリーソフト概要 書籍等を私的利用のために、数ページ、スキャナでスキャンすることがあるが、iPad等で閲覧する際、見開きではなく1ページずつ表示したくなる。 しかし、見開きのPDFファイルを、左右1ページずつにトリミングし、分割したPDFに変換してくれ…

pyinstallerを使ったpythonコードのexe化と、処理時間の評価(onefileオプションの有無を含む)

概要 pyinstallerを使ってpythonスクリプトのexe化することがままあるが、exe化すると速度が遅くなるように感じる。(特に--onefileオプションを入れて一つのファイルにパッケージ化した場合) しかし、どの程度の速度低下があるのか定量的に測定した例がな…

Pythonでword,docxファイルを操作・置換する(python-docx)

概要 大量の文章ファイルを扱うとき、いちいちwordを使ってdocxの中身を変更するのは面倒。 Pythonを使ってある程度自動化できないか・・・と考えて調査したところ、簡単に実装できたのでまとめておく。 対象とする環境 OS異存なし Python2.7 概要 対象とす…

中心のずれた見開きスキャンPDFを2ページに分割する方法(Python,pypdf)

概要 参考書等を数ページスキャナで取り込み、タブレットに保存して、参照したいことがままある。 その際、なるべく綺麗に取り込みたいところだが、見開きでスキャンしてしまうと、以下のイメージのように、スキャンした部分でない余白部分が残ってしまう。 …

ROSのRvizにwaypointを表示させる方法(Python)

概要 rvizのGUIで指定したウェイポイント通りにロボットを自律走行させる(Python,ROS) - 技術メモ集にて、ウェイポイントを保存し、その順番通りにロボットを自律走行させる方法を記載した。 しかし、実際に自律走行させてみると、ウェイポイントを追加し…

ROS解説本4冊の書評と、開発スタイルに合わせたおすすめの入門書紹介(2018/10/20 実用ロボット開発のためのROSプログラミング追加)

概要 ROSの解説本として日本語で販売されている書籍として、「ROSではじめるロボットプログラミング」、「ROSロボットプログラミングバイブル」「プログラミングROS」の3冊がある。 どれも非常によくまとまっているが、それぞれ個性があるので、各書籍の感…

rvizのGUIで指定したウェイポイント通りにロボットを自律走行させる(Python,ROS)

概要 ROSのチュートリアル等では、RvizのGUIで指定した場所に自律走行させるところまでで終わっていることが多く、広い環境下でロボットをウェイポイントに沿って自律走行させる方法がまとまっていない。 そこで、本稿では、RvizのGUI上で指定したウェイポイ…

PythonでROSのRvizに基本図形を描画する簡単な方法

概要 PythonでROSのRvizに基本図形を描画する方法を記載する。 C++は以下のROSチュートリアルが参考になるが、Pythonで記載された例がないので、私のような「どうしてもPythonで書きたい・・・」という人のために、サンプルを記載しておく。 各項目の説明は…

日本とアメリカでアレグラの用量、用法が違う!理由を半減期を根拠に計算してみた

概要 アメリカ出張時に、薬局でアレグラの説明を読むと、日本と違うことが書かれている。 具体的に比較すると以下の通り。日本:60mgを1日2回 (合計120mg) アメリカ:180mgを1日1回アメリカは1日1回でいい代わりに、1日の用量が日本の1.5倍になっている。 1日1…

AlexaにLine経由でリマインドして貰うSkillを作った(Python, Line Notify API)

概要 Alexaアプリ第二弾。 今度はAlexaに話しかけることで、Lineに通知・リマインドしてくれるアプリを作った。 Echoに対して、 「アレクサ、リマインダーで⚪︎⚪︎とリマインドして」 と話しかけると、Lineに⚪︎⚪︎の部分を通知してくれる。[第一弾はこちら] 【A…

【Alexa Skill開発】LaunchRequest時にエラーになってしまう場合に確認すべき事項(Python)

概要 Alexaのスキルはシミュレータでもデバッグできるので、比較的デバッグがしやすい。 しかし、スキルが最初に呼び出された際の挙動がシミュレータでは確認できないため、エラーが発生した際のデバッグが困難。 気づいてみれば簡単なことだったけれど、結…

pythonを使って連番の画像を一括ダウンロードする

pythonを使って連番の画像を一括ダウンロードするスクリプトを書いたので、まとめておく。(スクリプトは一番下)https://www.xxxxxx/001.jpg https://www.xxxxxx/002.jpg . .というURLのjpgファイルを一括でダウンロードするためには、 url = "https://www.…

pythonを使ってディレクトリを簡単にzip圧縮する

pythonを使ってディレクトリを圧縮する方法を検索すると、リストを作成→zipfileを使って圧縮という方法がよく出てくる。 しかし、この方法は無駄に行数が長くなり面倒。 shutilを使うことで、もっと簡単にディレクトリを圧縮することができることがわかった…

grouped convolution(グループ化畳み込み)の概念を理解する

経緯 mobilenetの実装とモデルを調べる中で出てきた概念として、pointwise convolutionとdepthwise convolutionの理解をまとめてきた。今回はその発展系で、grouped convolutionについてまとめる。 mobilenetは基本的に、pointwise convolutionとdepthwise c…

Depthwise convolution(dw畳み込み)の概念を理解する

経緯 前回、CNNモデルのパラメータ・計算量削減手法の一つであるpointwise convolution(pw畳み込み)について解説した。 pw畳み込みはHW方向の次元を削減し計算量とパラメータを減らすものだったが、それの対極をなすものとして、レイヤー方向の次元を削減…

pointwise convolution(1x1の畳み込み)で何をやっているか、概念を簡単に理解する

概要 googlenetやmobilenet等、最近のCNNモデルでは、当たり前の様にpointwise convolution(1x1の畳み込み)を使って次元数を調整する・・・等の説明がなされるけれど、1x1で畳み込んでも結局意味ないじゃん?と最初理解に苦しんだので、自分なりにまとめてお…

【つくばチャレンジ2017】tinyYOLO,YOLO v2を使って対象人物検知モデルを学習させる

目次 目次 つくばチャレンジとは つくばチャレンジ2016における成果と課題 学習データの作成 YOLOによる学習 モデルの評価 本走行の結果 まとめ つくばチャレンジとは 「つくばチャレンジ」は、つくば市内の遊歩道等の実環境を、移動ロボットに自律走行させ…

ubuntuにopencvを入れる方法(ubuntu16.04,cuda8.0,gtx1070)

経緯 cuda,cudnnを導入したubuntuにopencvを導入しようとすると、make時にエラーが頻発し、なかなか進まない。 一方で、anaconda等を使用してconda install cv2等とするとffmpegがインストールされないため、imshow等の一部の関数が動作しない。よって、今回…

pythonを使って、ether(LAN)経由で測域センサURGのデータを取得する方法(ROS不使用)

概要 シンプルなプログラムを動かしたいとき一々ROSに頼るのは面倒。よって、ROSを使わなくともURGデータを読み込めるようにした。 ネットを探してもシリアル通信を使ったデータ取得ライブラリばかりでetherを使ったライブラリが殆ど無い。 ようやく見つけて…

anacondaを使ってubuntu16.04にchainer, openCVを導入する

導入のきっかけ これまでpyenv,python2.7を使って開発を行っていたが、python3系が必須のライブラリを使用する必要があり、anacondaに乗り換え。 使ってみると、複数のpython環境を乗り換えることができ、pyenvよりも便利かも。 他でもいろいろ書かれている…

cv2で動画読み込み時にerror: (-215) size.width>0 && size.height>0というエラーが出る場合の対処法(Windows)

概要 ネット上でよく見るWindowsへのcv2導入方法に従ってcv2を導入すると、動画読み込み時(cv2.videoCapture()使用時)に"error: (-215) size.width>0 && size.height>0"というエラーが出てくる。 これはffmpegのDLLがないため、動画が開けずに出てくるエラー…

cv2(openCV)で動画の途中から再生する方法

概要 openCVで動画の任意の地点から再生を開始する方法をまとめる。 これまではwhileループで1フレームずつ取得し読み飛ばしていた。しかし、この方法はあまりにも無駄が多い・・・時間もかかるし、HDDにも悪影響が出そう。 ということで、もう少し効率の良…

pythonでgooglemap情報を扱う(地名から座標を取得、座標から地図画像を取得)方法まとめ

[追記] 2018/08からGoogleMapのポリシーが変わり、APIキーの取得が必須になったようです。 追って対策を調べて記載変更しますが、現状は、このままの方法ではAPIキーのエラーで位置情報の取得ができません。 概要 googlemapデータを機械学習の元ネタにするた…

フォルダ内の全画像ファイルに対して一括処理を行う(python)

機械学習を行う際、webでスクレイピングした大量の画像ファイル等を一括で操作したくなることが多い。 その場合ファイル名も拡張子もバラバラで保存されるため、処理する際にいつも悩む。 毎回調べるのもバカらしいので、サンプルとしてまとめておく。 pytho…

pix2pix(GAN)を使ってモノクロのおそ松くんをカラー画像にしてみた

前半に着色結果 後半にpix2pixの導入方法、学習方法 という構成になっている。手っ取り早く導入したいならば、「作業内容」からみるのがオススメ。 概要 結果 人 人工物 その他 (追記)漫画のカラー化もしてみた 作業内容 torchのインストール pix2pixを導入 …