Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第9回】事例紹介:Tkinterを活用した配当金管理プログラム

はじめに

本ブログではTkinterの基本的なコードを紹介していきました。以下のリンクが複数のブログ記事です。

chantastu.hatenablog.com

本記事では、Tkinterを活用した配当金管理プログラムを作成したので、その内容を紹介します。

 

1. 配当金プログラムの動作動画

以下のYoutubeにて動作の様子を公開しています。

youtu.be

 

2. Pythonコード

この配当金プログラムのPythonコードは以下です。これまでの記事を活用して作成しています。

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

Tkinterを活用した配当金管理プログラムを作成したので、その内容を紹介しました。本記事のコードはまだまだ不十分な点があると思いますので、ぜひ皆さんで拡張したり、他の目的に活用してください。

cx_Freezeを用いたpythonプログラムのexe化

はじめに

 Pythonで作成したアプリを公開して使ってもらったり、Pythonを使わない人にPythonで作成したアプリを渡して使ってもらえるようにしたいと思うことありますよね?

 そういった場合にはexe化して実行ファイルに変換します。exe化する方法として、現在はpyinstallerが主流ですが、cx_Freezeはファイル容量が小さく、比較的安定し、exeファイルの起動時間が短いといったメリットがあります。

 この記事では、cx_Freezeを用いてPythonプログラムをexe化する方法を紹介します。具体的には最小限のライブラリを用意するためにvenvの環境を構築し、そのvenv環境でcx_Freezeを用いてPythonプログラムをexe化していきます。

 

1. Windowsで仮想環境venvの構築

コマンドプロンプトで以下のコマンドで実行すると、仮想環境が作成されます。

python -m venv {仮想環境の名前}

例は以下のようになります。以下は仮想環境の名前を「venv」としています。

仮想環境が作成されたら、作成した仮想環境をアクティベートします。

.\{仮想環境の名前}\Scripts\activate

例は以下の様になります。以下は仮想環境の名前を「venv」としています。

アクティベート後は必要なライブラリだけインストールします。以下の例ではこの後使用するcx_Freezeとnumpyをインストールしています。

 

2. cx_Freezeでexe化

それでは、作成した仮想環境でcx_Freezeでexe化していきます。

cxfreeze -c {exe化したいpythonファイル} --target-dir {exe化後のファイルをまとめたフォルダの名前}

例は以下の様になります。以下ではtest.pyをexe化して。それらがappフォルダに格納されます。

画像で作成前後を比較してみます。

最初は対象のpythonファイルとvenvのフォルダがある状態です。

exe化すると以下の様にappフォルダが作成されます。

このappフォルダの中を見ると、以下の画像のようになっており、拡張子がexeのものが本記事で作成したかったexeファイルになります。appフォルダ内のものは必要なものなので、exeファイルと一緒に配布しましょう。

 

3. 動画で確認

上記の内容を動画で示しましたので、わかりにくい方はこちらをご覧ください。

youtu.be

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

 この記事では、cx_Freezeを用いてPythonプログラムをexe化する方法を紹介しました。具体的には最小限のライブラリを用意するためにvenvの環境を構築し、そのvenv環境でcx_Freezeを用いてPythonプログラムをexe化しました。起動が早いexeファイルを作成するにはcx_Freezeが良いと思うので、pyinstallerと比較しながらexeファイルを作成してみてください。

【第6回】scipyを用いたQ-Qプロット描画、シャピロ・ウィルク検定、コルモゴロフ・スミルノフ検定による正規性の確認

はじめに

 データ分析の内、統計解析をする際に重要な項目の一つとして挙げられるのはデータの正規性です。正規分布に従っているか否かで検定方法がパラメトリックかノンパラメトリックかが決まってきます。そのため、基本的に検定を行う際にはまずデータの正規性を確認します。

 正規性を確認する方法には、以下の手法があります。

  • Q-Qプロット
  • シャピロ・ウィルク検定
  • コルモゴロフ・スミルノフ検定

シャピロ・ウィルク検定については、こちらの記事で紹介しています。Q-Qプロットは視覚的に評価する手法で、シャピロ・ウィルク検定とコルモゴロフ・スミルノフ検定は定量的に評価する手法です。データ数が少ない場合にはシャピロ・ウィルク検定が、データ数が多い場合には、コルモゴロフ・スミルノフ検定が用いれます。

 本記事では、scipyを用いたQ-Qプロット描画、シャピロ・ウィルク検定、コルモゴロフ・スミルノフ検定による正規性の確認方法を紹介します。

 

1. Q-Qプロット描画

X軸に実測値、Y軸に実測値が正規分布に従う場合の期待値(累積確率)を置いた図です。こちらのプロットが直線的であれば正規分布に従っていると考えられます。

Q-Qプロットはscipy.stats.probplot()を用いて以下の様に描画します。ここでのデータは平均値0、標準偏差1の正規分布に従う1000個のデータです。

Q-Qプロットは以下の図のようになります。赤い直線に沿って青い点がプロットされているのがわかると思います。こちらの青い点が赤い線付近にプロットされていれば正規性があり、外れた点があれば正規性がないと考えられます。

2. シャピロ・ウィルク検定

シャピロ・ウィルク検定では、scipy.stats.shapiro()を使用します。返り値のs,pはそれぞれ検定統計量とp値です。p値が0.05以上であれば正規性があります。以下の例では、p値が0.48であることから正規性があると判断できます。

 

3. コルモゴロフ・スミルノフ検定

コルモゴロフ・スミルノフ検定では、scipy.stats.kstest()を用います。返り値のs,pはそれぞれ検定統計量とp値です。p値が0.05以上であれば正規性があります。以下の例では、p値が0.36であることから正規性があると判断できます。

 

4. 活用例

シャピロ・ウィルク検定を活用した事例を以下の記事で紹介しています。

chantastu.hatenablog.com

chantastu.hatenablog.com

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

 本記事では、scipyを用いたQ-Qプロット描画、シャピロ・ウィルク検定、コルモゴロフ・スミルノフ検定による正規性の確認方法を紹介しました。統計解析の際にこれらの手法を活用してみてください。

【第23回】リスト内包表記による処理時間の高速化

はじめに

 ビックデータに対するデータ分析を行う際に、データを処理する時間が長くなる傾向があります。処理時間が長いことはそれだけ結果を出すのに時間がかかることから、デメリットと言えます。ましてやアルゴリズムを考案する際に試験的に実行して動作確認を行う際にも時間がかかるとかなり繁雑ですよね。よって、データ処理時間を短くすること、つまりは処理の高速化が重要になってきます。

 処理の高速化の一つに、リスト内包表記という方法があります。具体的にはfor文でループしながらappendでリストに追加する処理をリスト内だけで完結させる処理になります。

 本記事では処理の高速化を目的としたリスト内包表記の手法を紹介します。

 

1. 処理時間の比較

まずは簡単なリスト内表記を用いて処理時間の比較を行いたいと思います。

ここでの処理は以下のように0から10000000まで値をdataリストの格納を対象とします。リスト内包表記をすると、以下の様な表記になります。

それでは処理時間の計測をしていきます。上記の処理を10回試行して、その1回あたりの平均処理時間を算出しています。以下の結果を見てわかる通り、通常のfor文のループ処理は1.55秒、リスト内包表記は0.75秒となっており、リスト内包表記にすることで半分の時間で済んでいることがわかります。

 

2. リスト内包表記:条件

さて、リスト内包表記でもif文による条件を設けることができます。if文だけの場合、以下の例のようにfor文の後に記述します。この例では、0から19までの数字の内、偶数の値だけ抽出してリストに格納しています。一方、if, else文の場合は、for文の前に記述します。この例では、0から19までの数字の内、偶数の場合は値をそのまま格納し、奇数の場合は0を格納する処理となっています。

 

3. リスト内包表記:2重ループ

続いて2重ループの表記について紹介します。通常の2重ループ表記とリスト内包表記を合わせて以下に記述します。ここでは2つの例を紹介します。見た目がかなりスッキリしていますね。

まずは一つ目です。

二つ目です。

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

 本記事では処理の高速化を目的としたリスト内包表記の手法を紹介しました。処理速度が速いことに越したことはありません。リスト内包表記を用いて処理速度を高速化しましょう。

【第22回】datetimeとtimeによる日付・時間データの取得と計算

はじめに

 データ分析を実施している際に、日付や時刻といった時間の計算をするケースが多々あります。その際に用いるライブラリがdatetimeやtimeです。時系列データを扱う際にdatetimeとtimeのライブラリを多用します。時系列データの場合、データに日付が入ることが多く、それを加工・抽出するケースがあり、その際にdatetimeをよく使用します。さらに、作成したプログラムの性能評価の一つとして、コードの処理時間の計測する場合があり、その際にtimeを使用します。

 本記事ではdatetimeとtimeによる日付・時間データの取得と計算の方法について紹介します。

 

1. datetimeによる日付・時間データの取得と生成

1.1 現在の日付・時刻データの取得:datetime.datetime.now()

現在の日付・時刻データの取得には以下のようにdatetime.datetime.now()を用います。取得したデータは、datetime.datetime型です。

さらに、取得した日付・時刻データから年、月、日、時間、分、秒のデータを抽出するには以下の様にします。

1.2 任意の日付・時刻データの生成:datetime.datetime()

日付・時刻データの生成は以下の様にします。生成したデータは、datetime.datetime型です。

1.3 日付データの取得:datetime.datetime.today()

日付データの取得には以下のようにdatetime.datetime.today()を用います。取得したデータは、datetime.date型です。

さらに、取得した日付データから年、月、日のデータを抽出するには以下の様にします

1.4 任意の日付データの生成:datetime.date()

日付データの生成は以下の様にします。生成したデータは、datetime.date型です。

1.5 時刻データの生成:datetime.time()

時刻データの生成は以下の様にします。生成したデータは、datetime.time型です。

 

2. datetimeによる日付・時刻の計算:datetime.timdelta()

日付や時刻の時間差を計算するには、以下の様にデータ同士を引きます。

さらに、時間の計算は以下の様にdatetime.timdelta()で足し引きしたい値を引数にして実施することも可能です。

 

3. 時間データと文字列の変換

3.1 時間データから文字列への変換:strftime()

時間データから文字列への変換にはstrftime()を用います。以下の例では現在の日付・時刻データを取得して、指定した形式「〇年〇月〇日 〇 〇時:〇分:〇秒○○」の文字列に変換しています。

ここで文字列に変換する際に書式化コード(%Y、%Hなど)を用いています。これにはいくつか種類があるので以下の表にまとめます。

書式化コード 意味
%Y 西暦4桁 2022
%y 西暦下2桁 22
%m 月(数字) 9
%B 月名 September
%b 月名(省略) Sep
%d 日にち 05
%A 曜日 Friday
%a 曜日(省略) Fri
%w 曜日(数字:10進表記) 5
%H 時(24時間表記) 14
%I 時(12時間表記) 2
%p AM or PM PM
%M 分(10進表記) 03
%S 秒(10進表記) 43
%f マイクロ秒(6桁) 317466
%j 該当年における経過日 266

 

それでは上記の書式化コードをいくつか用いてデータを確認してみます。以下に、年、月名、時間、曜日などを示しています。

 

3.2 文字列から時間データへの変換:strptime()

文字列から時間データへの変換にはstrptime()を用います。第一引数に日付・時刻の文字列を、第二引数にその文字列の形式を書式化コードを用いて指定します。その形式に従って時間データに変換します。

 

4. UNIX時間の取得と計算

4.1 UNIX時間で現在時刻の取得:time.time()

UNIX時間で現在時刻を取得するには、time.time()を用います。

4.2 UNIX時間を非UNIX時間に変換:datetime.datetime.fromtimestamp()

UNIX時間を非UNIX時間に変換するには、datetime.datetime.fromtimestamp()を用います。

4.3 時間差・処理時間の計算

UNIX時間を取得して時間差を計算する方法を示します。この手法はコードを実行する際にどのくらいの時間がかかるか(処理時間)を計算する際に用いられることが多いです。

以下の例では、for文のループ処理の直前と直後にtime.time()でUNIX時間を取得して、その引き算を行うことで、for文の処理時間を計測しています。

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

 本記事ではdatetimeとtimeによる日付・時間データの取得と計算の方法について紹介しました。時系列データを扱う際にdatetimeとtimeのライブラリを多用します。さらに4.3で示した処理時間の計測も性能評価の際に使用します。こういった意味で本記事の内容は非常に重要なので、しっかり覚えておきましょう。

【第1回】物体検出モデルYOLOXの動作環境構築とデモ実行

はじめに

 近年、AI(Artificial Intelligence:人工知能)の急速な発展に伴い、それらを用いた技術が活用され始めています。例えば、AIによる画像認識技術として物体検出などがあります。物体検出は「画像の中から特定の物体の位置、種類、個数などの情報を認識する技術」であり、AIを用いて比較的高速に画像内の物体情報を取得することができます。この技術を用いて製造業では品質評価、外観検査、異常検知などに活用されています。

 リアルタイムに物体検出を行うアルゴリズムにYOLO(You Only Look Onse)と呼ばれるものがあり、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)を用いたアルゴリズムとなっています。2021年8月に公開された最新の物体検出モデルにYOLOXがあり、これはYOLOv5を超える性能と、使いやすいライセンス(Apache License)を両立しています。

 本記事では物体検出モデルYOLOXの動作環境の構築の方法を紹介します。

 

1. YOLOXのリポジトリ

YOLOXのリポジトリは以下のGithubです。

github.com

 

2. Windowsで構築

2.1 環境

Windows : Windows11

Python : 3.8.5

-venvで仮想環境構築:

 

2.2 YOLOXのダウンロードとpipインストール

以下のコマンドでYOLOXをダウンロードとpipのインストールをして実行環境を構築してください。

YOLOX:https://github.com/Megvii-BaseDetection/YOLOX

pipインストールで「error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio”」とエラーが出る可能性があります。その際には以下の記事に従ってVisual Studio Installerをインストールしてください。

mebee.info

visualstudio.microsoft.com

2.3 YOLOXのモデルダウンロード

YOLOXのモデルはこちらのGithubのBenchmarkのStandard Models.かLigth Models.のどちらかから取得してください。なお、Standard Models高精度向けで、Light Modelsはエッジ端末向けです。以下の例ではyolox-nanoのモデルを用いています。

2.4 デモ実行

それでは、デモをしてみます。以下のコマンドで、yolox-nanoのモデルを用いてassetsフォルダ内のdog.jpgの画像に対してデモを行います。

実行すると、以下のようにバウンディングボックスが描画された画像がYOLOX_outputsの中に生成されます。

動画でデモを実行するには、以下のコマンドを実行します。以下の例ではYOLOXフォルダ内にvideoフォルダを作成し、そのvideoフォルダの中にsample.mp4動画を保管したと想定しています。

なお、以下のコマンドを実行すると、以下の動画例のようにバウンディングボックスが描画された動画がYOLOX_outputsフォルダ内に保存されています。

youtu.be

youtu.be

 

3. Ubuntuで構築

3.1 環境

Ubuntu: Ubuntu 20.04.4 LTS

Python: 3.8.10

3.2 必要なパッケージのインストール

以下のコマンドで必要なパッケージをインストールしてくだい。

3.3 Cmakeのインストールとビルド

以下のコマンドでCmakeのインストールとビルドを行ってください。以下ではCmake-3.15.2を使用しています。バージョンによっては3.3のpipのインストールのonnx部分でエラーが出ました。

Cmake:https://cmake.org/download/

Cmakeのリポジトリhttps://github.com/Kitware/CMake/releases

3.4 YOLOXのダウンロードして環境構築

以下のコマンドでYOLOXをダウンロードとpipのインストールをして実行環境を構築してください。

YOLOX:https://github.com/Megvii-BaseDetection/YOLOX

3.5 YOLOXのモデルをダウンロード

YOLOXのモデルはこちらのGithubのBenchmarkのStandard Models.かLigth Models.のどちらかから取得してください。なお、Standard Models高精度向けで、Light Modelsはエッジ端末向けです。以下の例ではyolox-nanoのモデルを用いています。

3.6 デモの実行

それでは、デモをしてみます。以下のコマンドで、yolox-nanoのモデルを用いてassetsフォルダ内のdog.jpgの画像に対してデモを行います。

実行すると、以下のようにバウンディングボックスが描画された画像がYOLOX_outputsの中に生成されます。

動画でデモを実行するには、以下のコマンドを実行します。以下の例ではYOLOXフォルダ内にvideoフォルダを作成し、そのvideoフォルダの中にsample.mp4動画を保管したと想定しています。

なお、以下のコマンドを実行すると、以下の動画例のようにバウンディングボックスが描画された動画がYOLOX_outputsフォルダ内に保存されています。

youtu.be

youtu.be

 

4. コンテナ生成からDeibian環境での構築

4.1 YOLOXの事前ダウンロード

Linux系OSのhomeに事前にYOLOXをダウンロードします。

YOLOX:https://github.com/Megvii-BaseDetection/YOLOX

4.2 コンテナイメージの取得と生成

docekr pullで軽量コンテナイメージのdebian:stable-slimを取得し、docker runでコンテナを起動します。

4.3 YOLOXの環境構築とモデルのダウンロード

Cmakeのインストール・ビルド、pipのインストール、モデルの取得、onnxモデルへの変換、不必要なパッケージのアンインストールは以下のシェルスクリプトを実行することで実施できます。

4.4 コンテナ内で実行

コンテナ内で以下のコマンドを実行するとデモが実施できます。

動画の場合は以下のコマンドです。以下ではsample.mp4としていますが、ご自身の分析対象の動画を指定してください。

デモ結果の例

以下にデモを実行した際の結果例を示します。大まかには物体検出できていますが、ラベルが違うものやバウンディングボックスの位置が怪しいものがありますね。

 

オススメ書籍

物体・画像認識と時系列データ処理入門

現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装

現場で使える! TensorFlow開発入門 Kerasによる深層学習モデル構築手法

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

 

おわりに

本記事では物体検出モデルYOLOXの動作環境の構築の方法を紹介しました。ぜひ、ご自身で撮影した画像や動画に対して物体検出デモを実施してしてみてください。

【第21回】os.pathを用いたフォルダ名・ファイル名の取得、パスの結合、存在確認

はじめに

 Pythonを用いたデータ分析では、フォルダやファイルを指定し、そのデータを読み込むという工程が多いと思います。例えばその際にファイルパスから***.jpgなどのファイル名だけを抽出したり、フォルダの直前の階層のフォルダ名だけを抽出したり、指定したファイル名の存在確認をしたりなどの操作をするケースが多々あります。そのような操作を行うに際に、os.pathを用います。

 本記事では、os.pathを用いたフォルダ・ファイル名の取得、パスの結合、存在確認の方法について紹介します。

 

1. 本記事で扱う内容

本記事では以下の内容を扱います。

操作(大分類) 操作(小分類) コード
フォルダ名・ファイル名の取得 フォルダ名&ファイル名の取得 os.path.split()
フォルダ名の取得 os.path.dirname()
ファイル名の取得 os.path.basename()
ファイルの拡張子の取得 os.path.splitext()
ファイルの絶対パスの取得 os.path.abspath()
パスの結合 os.path.join()
フォルダ名・ファイル名の存在確認 フォルダ or ファイルの存在確認 os.path.exists()
フォルダの存在確認 os.path.isdir()
ファイルの存在確認 os.path.isfile()

 

2. フォルダ名・ファイル名の取得

2.1 フォルダ名・ファイル名の取得:os.path.split()

フォルダ名やファイル名の取得にはos.path.split()を用います。

 

2.2 フォルダ名の取得:os.path.dirname()

フォルダ名の取得にはos.path.dirname()を用います。

 

2.3 ファイル名の取得:os.path.basename()

ファイル名の取得にはos.path.basename()を用います。

 

ファイル名の内、拡張子がないファイル名を取得するには以下の方法を用います。

 

2.4 ファイルの拡張子の取得:os.path.splitext()

ファイルの拡張子の取得にはos.path.splitext()を用います。

 

2.5 ファイルの絶対パスの取得:os.path.abspath()

ファイルの絶対パスの取得にはos.path.abspath()を用います。

 

3. パスの結合:os.path.join()

パスの結合にはos.path.join()を用います。

 

4. フォルダ名・ファイル名の存在確認

4.1 フォルダ or ファイルの存在確認 :os.path.exists()

フォルダ or ファイルの存在確認にはos.path.exists()を用います。

 

4.2 フォルダの存在確認:os.path.isdir()

フォルダの存在確認にはos.path.isdir()を用います。

 

4.3 ファイルの存在確認:os.path.isfile()

ファイルの存在確認にはos.path.isfile()を用います。

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事では、os.pathを用いたフォルダ・ファイル名の取得、パスの結合、存在確認の方法について紹介しました。Pythonを用いたデータ分析や画像処理などすべての作業でこの操作は必要になってくるので、ぜひ覚えましょう。