searchカテゴリー選択
chevron_left

カテゴリーを選択しなおす

cancel
プロフィール PROFILE

T_A_Tさんのプロフィール

住所
未設定
出身
未設定

自由文未設定

ブログタイトル
Pythonでいろいろやってみる
ブログURL
https://tat-pytone.hatenablog.com/
ブログ紹介文
Pythonを使った画像処理や機械学習などの簡単なプログラムを載せています
更新頻度(1年)

17回 / 263日(平均0.5回/週)

ブログ村参加:2019/06/09

本日のランキング(IN)
読者になる

新機能の「ブログリーダー」を活用して、T_A_Tさんの読者になりませんか?

ハンドル名
T_A_Tさん
ブログタイトル
Pythonでいろいろやってみる
更新頻度
17回 / 263日(平均0.5回/週)
読者になる
Pythonでいろいろやってみる

T_A_Tさんの新着記事

1件〜30件

  • ディープラーニングで近藤春菜、角野卓三、マイケルムーアを判別する(Kerasで画像分類)

    ライブラリKerasを用い、ディープラーニングの1手法であるCNN(畳み込みニューラルネットワーク)による画像分類を行います。 Kerasはディープラーニングのライブラリであるtensorflowのラッパーです。tensorflowの記述は難易度が高いですがKerasを用いると簡単な記述でディープラーニングを実行できます。 近藤春菜、角野卓三、マイケルムーアの画像を学習させ3者を分類できるか試します。 準備 jupyter notebookファイル(***.ipynb)と同じディレクトリに、フォルダ'keras_image'を作成、さらにその中にフォルダ'Haruna','Takuzo','M…

  • VGG16を用いた画像分類

    画像のディープラーニング学習済みモデルVGG16を用いて画像の分類を行います。VGG16は140万個のラベル付き画像と1000種類のクラスからなるImageNetデータセットを用いたCNN(畳み込みニューラルネットワーク)学習済みモデルです。自分でディープラーニング学習済みモデルを作成するには大量の画像データと多くの時間が必要ですが、既存の学習済みモデルを用いることで簡単に画像分類が可能になります。 ライブラリKeras上でVGG16モデルを用いて画像分類を行います。Kerasはディープラーニングのライブラリであるtensorflowのラッパーです。tensorflowの記述は難易度が高いです…

  • 形状の異なる数字画像を大量に生成する

    機械学習を行うためには大量の学習データが必要になります。0-9の10個の数字画像を大量に生成します。以下のパラメータを変えた32x32pxの画像を4320個生成しpngファイルで保存します。 数字(0-9)・・・10 フォント・・・8 文字のx位置・・・3 文字のy位置・・・3 回転角度・・・3 ぼかし処理・・・2 10 x 8 x 3 x 3 x 3 x 2 = 4320個 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 準備 生成した画像データ保存用フォルダ'number_gene…

  • ヒストグラム平坦化・コントラスト制限付適応ヒストグラム平坦化によるカラー画像のコントラスト補正

    明るい画像では明度の分布は明るい方に集中しており、暗い画像では明度は暗い方に集中しています。この明度の分布(ヒストグラム)を広げて明るさをまんべんなくする方法がヒストグラム平坦化で、画像のコントラスト調整ができます。 OpenCVではメソッドcv2.equalizeHist()を使うことで実現可能です。引数となるヒストグラムにはHSV色空間のV(Value)・明度を用い、明度のヒストグラムを平坦化します。 画像が全体的に明るい場合や全体的に暗い場合はヒストグラムが特定の範囲に偏っているため平坦化(ヒストグラムを広げる)が有効ですが、元の画像のヒストグラムが特定の範囲に偏っていないなど、ヒストグ…

  • K-means(K平均法)で花の写真を色でクラスタリングする(全画素を特徴量に使う)

    K-means(K平均法)で花の写真を色でクラスタリングする では画面全体のBGRの比率を特徴量として用いましたが、画面全画素のBGR値をそのまま特徴量に用いてクラスタリングをします。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 準備 画像ファイルはフリー写真素材ぱくたそから花の写真25枚をダウンロードさせていただき、jupyter notebookファイル(***.ipynb)と同じディレクトリに、'flowers2'ディレクトリを作成しそこに保存しました。画像は64px X 6…

  • K-means(K平均法)で花の写真を色でクラスタリングする

    K-Meansクラスタリングは、与えられたデータを自動的に分類するアルゴリズムであるクラスタリングの一種で、クラスタの平均を用い、与えられたクラスタ数k個に分類する手法です。(Wikipedia >> k平均法) cv2.kmeans()を用いるとK-Meansクラスタリングが簡単に実装できます。 様々な色の花の写真を色に応じてクラスタリングします。写真全体のBGR各チャンネルの比率を特徴量として(特徴量3つ)、クラスタリングを行い、それぞれのクラスタ別にフォルダを作り画像ファイルを移動します。 関連記事 K-Meansクラスタリングによる画像の減色 環境 windows10 home Ana…

  • ライブラリqrcodeでQRコードを生成する

    ライブラリqrcodeを使うことでQRコード(2次元バーコード)がPythonで簡単に作成できます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 qrcode 6.1 Pillow 5.2.0 準備 ライブラリqrcodeをAnaconda Promptよりインストールします。 pip install qrcode コード この記事のurlをQRコードに変換します。 import qrcode from PIL import Image img = qrcode.make('https://tat-pyto…

  • TF-IDFとコサイン類似度により文書の類似度を判定する

    文書の類似度を調べます。関連文献の調査などで「自動で似ている文書を探してくれれば楽なのに」と思うことがありますが、類似度が求められれば自動化の可能性が出てきます。 TF-IDFは文書中に含まれる単語の重要度を評価する手法の1つであり、情報検索などに利用されています。TF(Term Frequency、単語の出現頻度)はそのまま出現頻度を示し、IDF(Inverse Document Frequency、逆文書頻度)は、単語がある文書だけでに現れるのか、多くの文書に現れるのかといった希少度を現します。 TF-IDFはTFとIDFの積であり、出現頻度が大きく(TF大)、特定の文書において現れる(I…

  • word2vecでコパアメリカ 日本vsチリ戦の敗因を分析する

    word2vecでコパアメリカ 日本vsチリ戦の敗因を分析します。word2vecは文章中の単語をベクトル化する技術で、関連する単語の抽出や単語同士の類似度を調べたり単語の線形計算ができるようになります。ベクトル化処理をするためには単語の区切りを示す必要があるため、先に文章を分かち書きします。手順は以下の通りです。 形態素解析ライブラリJanomeで形態素解析、分かち書き 自然言語処理ライブラリgensimでword2vecを実行しモデルファイルを作成、 自然言語処理ライブラリgensimでword2vecを実行し類似単語の抽出 関連記事 word2vecにより単語をベクトル化し類似語検索をす…

  • ルックアップテーブルによる画像の減色

    画素値0~255のそれぞれに対する係数をあらかじめ決めておき、画像を処理する手法があります。この係数のリストをルックアップテーブルと言い、ルックアップテーブルを用意することでOpenCVのcv2.LUT()メソッドにより画像処理が可能です。 元画像はBGRそれぞれ256諧調ですが、階段状のルックアップテーブルを用意して変換することで、これをRGBそれぞれ8諧調とします。 減色前 256 * 256 * 256 = 16,777,216‬色 減色後 8 * 8 * 8 = 512色 関連記事 K-Meansクラスタリングによる画像の減色 ルックアップテーブルによる画像コントラストの補正 環境 w…

  • 特定チャンネルをガンマ補正し画像の色味を変える

    画素値0~255のそれぞれに対する係数をあらかじめ決めておき、画像を処理する手法があります。この係数のリストをルックアップテーブルと言い、ルックアップテーブルを用意することでOpenCVのcv2.LUT()メソッドにより画像処理が可能です。 特定のチャンネル(BGR)のみこの処理を行うことで特定のチャンネルを強調したり、逆に弱くしたりでき、画像の色味を変えられます。 関連記事 ルックアップテーブルによる画像コントラストの補正 画像の彩度、明度を変える 使った関数・メソッド cv2.LUT() : 入力画素値とルックアップテーブルから出力画素値を計算 環境 windows10 home Anac…

  • K-Meansクラスタリングによる画像の減色

    K-Meansクラスタリングは、与えられたデータを自動的に分類するアルゴリズムであるクラスタリングの一種で、クラスタの平均を用い、与えられたクラスタ数k個に分類する手法です。(Wikipedia >> k平均法) cv2.kmeans()を用いるとK-Meansクラスタリングが簡単に実装できます。これを画像データに用いてBGRのチャンネルについてクラスタリングし、各クラスタに含まれる画素を、各クラスタの中心値に変換することで減色できます。 OpenCV >> K-Means Clustering in OpenCV 記載のコードをほぼそのまま使用しています。 環境 windows10 home…

  • 画像をグニャグニャにする(各行をsinカーブでx方向にずらす)

    画像をグニャグニャにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にsinカーブでずらすことでグニャグニャに変形した画像を生成します。 関連記事 黒画像を作成する 画像を斜めに変形する 画像をザーザーにする(各行をランダムにx方向にずらす) 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 準備 画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'ramen.jpg'で、jupyter notebookファイル(***.ipy…

  • 画像をザーザーにする(各行をランダムにx方向にずらす)

    画像をザーザーにします。画像を読み出し別のndarrayに1行ずつコピーしますが、その際にx方向にランダムにずらすことでザーザーに変形した画像を生成します。 関連記事 黒画像を作成する 画像を斜めに変形する 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 準備 画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'ramen.jpg'で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。 ramen.jpg コード…

  • 波線を描く

    波線を描きます。波線の絵を使いたくなることが結構ありますが、いざ描こうと思うと面倒です。なのでpythonで作成してみます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 コード import numpy as np import math import cv2 height = 60 # 波線を描く背景画像の高さ width = 400 # 波線を描く背景画像の幅 x_mag = 6 # 幅方向の波の細かさ y_mag = 20 # 波の高さ margin = 10 # 左右の余白…

  • 画像を斜めに変形する

    画像を斜めに変形します。画像を読み出し別のndarrayに1行ずつコピーしますがその際にx方向に1pxずつずらすことで斜めに変形した画像を生成します。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 準備 画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'ramen.jpg'で、jupyter notebookファイル(***.ipynb)と同じディレクトリに保存しました。 ramen.jpg コード import cv2 import numpy as …

  • numpyで乱数生成(一様分布、正規分布)

    numpyの乱数生成関数であるrandomを用います。一様分布、標準正規分布(平均0、分散1である正規分布)および任意の平均・標準偏差を持つ正規分布を生成し、ヒストグラムで表示します。 使ったメソッド numpy.random : 乱数生成 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 一様分布 numpy.random.rand()メソッドにより0以上1未満の乱数が生成されます。 コード %matplotlib inline import numpy as np import matplotlib.pypl…

  • 文字列にアルファベットがそれぞれ何個含まれているか数える

    文字列にアルファベットの小文字(a-z)と大文字(A-Z)がそれぞれ何個ずつ出現するか数えます。for文で文字コードを回して.count()メソッドにより出現回数をカウントします。 使ったメソッド .count() : 文字列の出現回数を求める 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 準備 カウント対象の文字列strに、アメリカンセンターJAPANのサイトに掲載されているリンカーン大統領のゲティスバーグ演説をコピーさせていただきました。 アメリカンセンターJAPAN>>Gettysburg Addres…

  • 回転を考慮した外接矩形を描画する

    図形に対して領域を検出し、回転を考慮した外接矩形を描画します。まず画像を二値化し、cv2.findContours()で領域を検出。検出した領域のうち最も大きいものに対して、cv2.minAreaRect()で外接矩形を描画します。物体の大きさや傾きの検出に応用できます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 準備 画像ファイルはフリー写真素材ぱくたそからダウンロードさせていただき、ファイル名'baguette.jpg'で、jupyter notebookファイル(***.i…

  • ナップザック問題を解く(貪欲法)

    ナップザック問題とは、ナップザックに容量を超えずに荷物を詰めるときにその荷物の合計価値が最大となる組み合わせを求める最適化問題です。 ここでは 重さ1kg、値段100円の荷物が3個 重さ2kg、値段300円の荷物が3個 重さ5kg、値段800円の荷物が3個 ある場合に 13kgまで入るナップザックにどのように詰めれば値段が一番高くなるか について、貪欲法で解きます。貪欲法は「重さ当たりの値段が高いものを詰めれば価値が大きくなる」という考え方で、ナップザック問題の近似解(ベストかどうかはわからないがそこそこ良い答え)を求めることができます。 Wikipedia >> 貪欲法 具体的には、荷物を重…

  • ナップザック問題を解く(ライブラリknapsackを使用)

    ナップザック問題とは、ナップザックに容量を超えずに荷物を詰めるときにその荷物の合計価値が最大となる組み合わせを求める最適化問題です。 ここでは 重さ1kg、値段100円の荷物が3個 重さ2kg、値段300円の荷物が3個 重さ5kg、値段800円の荷物が3個 ある場合に 13kgまで入るナップザックにどのように詰めれば値段が一番高くなるか について解きます。ライブラリ'ortoolpy'の'knapsack'を用います 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 準備 ライブラリortoolpy をpipでイ…

  • 食べログ全国ランキングTOP20の星をジャンル別に比較する

    食べログの全国ランキングTOP20の星(レーティング)をフレンチ、ラーメン、寿司、天ぷらの4ジャンルで集計・比較し、どのような傾向にあるかを調べます。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 コード %matplotlib inline # モジュールのインポート from bs4 import BeautifulSoup as bs import requests import numpy as np import matplotlib.pyplot as plt # 関数checkrankの定義 d…

  • Yahooニュース・アクセスランキングの見出しを取得し頻出単語を調べる

    Yahooニュースのアクセスランキングページの見出しを取得し、出てくる名詞を出現回数順に表示し、何に関するニュースが興味を持たれているのかを調べます。 アクセスランキングページのスクレイピング→形態素解析し名詞のみ取得→出現が高い順に並べる→グラフで表示 という手順で行います。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 準備 matplotlibの日本語文字化けを解消する(Windows編)を参考にmatplotlibで日本語表示できるように設定しました。 コード yahooニュース>ランキング>アクセス…

  • 特定の色を別の色に変換する(赤い服を緑の服に変える)

    HSV色空間は色相(Hue)、彩度(Saturation・Chroma)、明度(Value・Lightness・Brightness)の三つの成分からなる色空間で、この色相値を変更することで彩度、明度を保ったまま色を変えることができます。 opencvにおけるHSV色空間のHue値は0~179の値をとります。 赤は0付近と179付近にあるので、例えば青に変換する場合は 赤(0付近)->120足す 赤(0付近)->60引く(120足すと180以上になるので、+120-180) となります。 使った関数・メソッド cv2.imread() : 画像ファイルの読み出し cv2.cvtColor() …

  • 写真をミニチュア風に加工する

    ミニチュア写真の特徴として 斜め上から撮影されている コントラストが強い 上下がぼけている があります。 なので、 斜め上から撮影した写真にコントラスト強調処理と画像上下のぼかし処理をすることでミニチュア風加工ができます。 コントラスト強調はルックアップテーブルによるS字カーブコントラスト補正を用いました(ルックアップテーブルによる画像コントラストの補正)。上下のぼかしは画像を縦に5分割しcv2.blurメソッドで両端を5x5カーネルでblur処理、その内側を3x3カーネルでblur処理、中央は何もしないことで、端に行くほどぼけるように見せています(画像の上下のみぼかす)。 使った関数・メソッ…

  • ルックアップテーブルによる画像コントラストの補正

    画素値0~255のそれぞれに対する係数をあらかじめ決めておき、画像を処理する手法があります。この係数のリストをルックアップテーブルと言い、ルックアップテーブルを用意することでOpenCVのcv2.LUT()メソッドにより画像処理が可能です。ガンマ補正とS字カーブ補正によるコントラスト補正を行います。 使った関数・メソッド cv2.LUT() : 入力画素値とルックアップテーブルから出力画素値を計算 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 OpenCV 4.0.0 準備 画像ファイルはフリー写真素材ぱくた…

  • N-gramで文章の類似度を調べる

    文章の類似度を調べる方法の一つ、N-gramを用いて2つの文章の類似度を調べます。N-gramは「隣り合う連続したN文字」の意味で、2文字なら2-gram、3文字なら3-gramとなります。 例えば2-gramは次のように作成します。 【元の文章】群馬県でマイクロバスが崖下に ↓ 【2-gram化】'群馬' '馬県' '県で' 'でマ' 'マイ' 'イク' 'クロ' 'ロバ' 'バス' 'スが' 'が崖' '崖下' '下に' ある文章のN-gramを作成し、別の文章のN-gramに何回出現するかカウントすることで類似度を算出します。 同じニュースに関する記事の類似度、無関係なニュースについての…

  • googleimagesdownloadで画像をダウンロードする

    googleimagesdownloadはグーグル画像検索から画像をダウンロードするスクリプトです。 環境 windows10 home Anaconda 3/ jupyter notebook 5.6.0 Python 3.7.0 google-images-download 2.7.0 準備 pipコマンドでgoogle-images-downloadをインストールします。 pip install google_images_download コード from google_images_download import google_images_download #モジュールのインポート…

  • Linear SVCによる言語判定 - 頻出単語を特徴量に使う

    scikit-learnは機械学習用ライブラリで以下のアルゴリズムが使用できます。 classification(識別:教師あり学習) clustering(分類:教師なし学習) regression(回帰:教師あり学習) dimensionality reduction(次元削減,主成分分析:教師なし学習) classificationアルゴリズムの一つ、Linear Support Vector Classificationを用いた言語判定器を作ります。線形の境界を引いて識別する手法です。 英語では'the'が最も使用頻度が高いのですが、登場頻度の高い単語(頻出単語)が言語によって違うだろ…

  • word2vecにより単語をベクトル化し類似語検索をする

    word2vecは文章中の単語をベクトル化する技術で、関連する単語の抽出や単語同士の類似度を調べたり単語の線形計算ができるようになります。ベクトル化処理をするためには単語の区切りを示す必要があるため、先に文章を分かち書きします。手順は以下の通りです。 HTML解析ライブラリBeautifulSoupでウエブサイトをスクレイピング、テキストの整形 形態素解析ライブラリJanomeで形態素解析、分かち書き 自然言語処理ライブラリgensimでword2vecを実行しモデルファイルを作成、 自然言語処理ライブラリgensimでword2vecを実行し類似単語の抽出 環境 windows10 home…

カテゴリー一覧
商用