投稿

3月, 2020の投稿を表示しています

深層学習入門:画像認識系のAIについて

イメージ
E資格のための勉強もかねて、画像認識系のAIの紹介をしていきます。 もし間違っているところがあれば、ぜひコメントしてください。 画像認識AIとは 画像認識系のAIは、 画像分類 ( Classification )、 物体検出 ( Detection )、 領域検出 ( Semantic Segmentation )の3つのタスクに分類されます。 それぞれのタスクのイメージは次の図の通りです。 これから個々のタスクについて、説明していきます。 画像分類(Classification)とは 画像分類とは 入力画像に映っているものを判別させる タスクです。 例えばソフトクリームが写った画像と、ソフトクリームが写っていない画像でAIを学習させることで、 ソフトクリームか否かを判別 できるAIが作成することができます。 また、教師画像をソフトクリームの画像とアイスクリームの画像にすることで、 ソフトクリームかアイスクリームかを判別 するAIを作成することができます。 この前者後者の分類方法は、作成するAIの用途によって使い分ける必要があります。 図からも分かるかとは思いますが、入力画像の バリエーションが無数にある場合 前者、 限られている場合 は後者がおすすめです。 物体検出(Detection)とは 物体検出とは画像上の 対象物の位置を矩形で検出 する手法です。 画像分類手法と違って、複数の物体を検出できるのがポイントです。 画像分類ではソフトクリームが写っている個数を把握することが困難ですが、物体検出であればカウントできます。 よって物体検出は対象物の 大まかな位置 と 個数 を把握するのに適したタスクとなります。 領域検出(Semantic Segmentation)とは 矩形で領域を検出していたDetectionと異なり、領域検出では ピクセルレベルで対象領域を検出 することができます。 物体検出は個数を把握するのに適したタスクでしたが、領域検出は 対象物の大きさを把握 するのに適したタスクとなります。 それぞれのタスクはこれから紹介していきたいと思います! 今回使用した画像:ソフトクリーム/上島珈琲 日光東照宮店で食べたものになります。 観光終わりにサクッと行け

画像の反転 cv2.flip()

イメージ
画像を反転する方法を紹介します。 開発環境はjupyter notebook、言語はpythonです。 今回使用した画像・コード一式は google drive にも保存しておりますので、必要に応じてお使いください。 作成したコード #モジュールのインポート import cv2 import glob import os from PIL import Image #画像の読み込み filename = glob.glob("*.jpg") for n in range(len(filename)): img = cv2.imread(filename[n]) img_horizontalflip = cv2.flip(img,1) #左右反転 img_verticalflip = cv2.flip(img,0) #上下反転 img_horizontal_vertical = cv2.flip(img,-1) #上下左右反転 cv2.imwrite(os.path.split(filename[n])[1][:-4]+"_horizontal.png",img_horizontalflip) cv2.imwrite(os.path.split(filename[n])[1][:-4]+"_vertical.png",img_verticalflip) cv2.imwrite(os.path.split(filename[n])[1][:-4]+"_horizontal_vertical.png",img_horizontal_vertical) 処理の解説 反転はcv2.imreadで読み込んだ画像に対してcv2.flip()と書くだけで実施できます。 反転する向きは、第二引数の値によって決めることができます。 第二引数 < 0:上下左右反転 第二引数 = 0:上下反転 第二引数 > 0:左右反転 反転は行列をひっくり返すだけなので、処理も簡単です。 深層学習のデータ拡張にも使う技術なので、覚えて損はないです。 今回使用した画像:さなだのつけ麺 北千住駅の近くにある