python

見開き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解説本3冊の書評と、開発スタイルに合わせたおすすめの入門書紹介

概要 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情報を扱う(地名から座標を取得、座標から地図画像を取得)方法まとめ

概要 googlemapデータを機械学習の元ネタにするために、データの取り扱い方を調べたのでまとめておく。 概要 pygeocoderを使って地名から座標(緯度経度)、詳細住所を取得する urllibを使って特定の座標周辺の地図を画像として保存 pygeocoderを使って地名…

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

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

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

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

CNN学習時のDropoutの比率(DropoutRatio)についての知見

背景 つくばチャレンジにて、CNN、SlidingWindowを応用して、看板検出を行った。 今回は、学習時のDropout率をどう変えたらいいかについての知見をまとめる。 この辺りの小細工は当たり前に思いつくことだが、あまりまとめられていないように思う。www.robot…

【つくばチャレンジ2016】DeepLearningを使ってリアルタイム看板検知をしてみた

つくばチャレンジとは 「つくばチャレンジ」は、つくば市内の遊歩道等の実環境を、移動ロボットに自律走行させる技術チャレンジであり、地域と研究者が協力して行う、人間とロボットが共存する社会の実現のための先端的技術への挑戦です。(つくばチャレンジ…

pickleをjoblibに変えて保存データサイズを圧縮!

経緯 以前のエントリで述べたとおり、Pickleで1.9GB以上のデータを保存しようとすると、エラーが出て保存できない問題があった。 この問題を、joblibを使うことでコードをほとんどいじらずに解決できることがわかったので、まとめておく。www.robotech-note.…

pythonのpickleでSystemError: error return without exception setが出る原因

pythonで大きなデータをpickleで保存しようとすると、 SystemError: error return without exception setと出て保存ができない。 調べてみると、どうやらpython2系のバグの模様、およそ1.9GB以上のデータを保存しようとするとエラーになる。 これを解決する…

JetsonTK1、TX1にopenCV(cv2も)を導入する方法

openCV導入方法 導入に失敗した場合 参考サイト JetsonTK1にOpenCVを導入するために、いつもどおりopenCVをコンパイルしてみた・・・が、環境が特殊なため、うまく動作しない。www.robotech-note.com いろいろ探していくと、NvidiaがJetson用のOpenCVを用意…