初心者でもできる!画像認識AIの作り方4

 こんにちは!インターン生の保です。

 突然ですが皆さん、AIって聞いたことありますか?又の名を人工知能。昨今の世界において、いろいろな場面で出てくる言葉だと思います。AIを使ったことがあると感じている人は少ないと思いますが、意外と身近なところに隠れているんです。例えばスマートフォンのカメラ機能や、SNSのチャットボットなどがそうです。皆さんも、使ったことがあると思います。

 前回に引き続き、そんなAIの中でも画像認識AIについてのお話です。前回の記事、動画をまたみていらっしゃらない方は、是非そちらをみてからお越しください。今回説明している画像認識AIというAIは、ほんの少しプログラミングの知識があれば、簡単にできてしまう代物なんです!一度自分の手でAIを作って、「僕・私はAIを作ったことがあるんだ!」と言ってみませんか?

 前回では画像認識AIのコードの一部、インポート分を書き、画像の用意をしました。前回の最後で言った通り、今回は実際に出力をしてみたり、コードの土台となる__main__の部分を書いたりします。それでは早速コードを書いて参りましょう。

 前回作成したdetect_image.pyというファイルを開いてください。その一番下の行から改行して、以下のコードを書いてください。

if __name__ == “__main__” :
img_path = “./images/”
img_names = os.listdir(img_path)

for img_name in img_names :
if ‘res’ in img_name : continue
detect_image(img_path, img_name)

少しずれているのはインデントと言って、Pythonではこれが重要な役割を果たします。インデントでコードのまとまりを見るのです。Tabキーまたはスペース4つで入力するようにしてください。さて、この部分ですがこれは__name__ == “__main__”とあるように、nameがmainであるときに実行される部分です。実は端末やターミナルからこのコードを実行した時だけ、このnameはmainとなるので、今回はあまり関係ありませんがこれを用いることで安全にコードを運用することができます。
 2行目は画像のパスを指定していて、今回はこのコードと同じフォルダまたはディレクトリ内にimagesフォルダまたはディレクトリがあるので、現在と同じという意味を表す.(ドット)に、隣のフォルダまたはディレクトリかファイルを表す/(スラッシュ)、その名前のimagesを書いています。3行目でそのパスを用いて、そのフォルダまたはディレクトリ内にあるファイルを全てリストにしています。
 5行目はそのリストの中身を一つずつ取り出している状況です。一つずつ取り出し、6行目でその名前にresが含まれていないかチェックします。resとは後ほど使うもので、responseの略です。結果画像を保存する際の名前になるので、結果画像は検出画像に用いないようにこうするのです。
 6行目ではいよいよ関数を呼び出しています。この関数にパスと名前を渡すことで、検出画像を一枚ずつ検出することができるのです。
 
 続いて、今書いたコードとインポート文の間に以下のコードを書いてください。

def detect_image(img_path, image_name, save_res_img=True):
# 画像読み込み
img = cv2.imread(img_path + image_name)

cv2.imshow(‘res’, img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 これが先ほど言った関数です。1行目は関数の定義をしています。この関数はパスと名前を必ず引数に取り、save_res_imgというブール代数で実行時に結果画像を保存するか選択できるようになっています。2行目の#から始まる部分はコメントと言って、実行には干渉しません。その部分のコードの説明をしたり、わかりやすくするためのメモです。
 3行目で画像を読み込み、5行目で出力しています。6行目では何らかのキーボードからの入力がくるまでコードの実行を停止しています。その次の7行目で全ての出力ウィンドウを削除しているので、関数の実行が終了し、次の検出画像へ映ることができるようになるのです。

 ここまで書いたところで端末またはターミナルを開き、detect_image.pyがあるフォルダまたはディレクトリまでcdで移動しましょう。そしてWindowsOSの方はpython detect_image.pyと入力、MacOSの方はpython3 detect_image.pyと入力し、エンターを押してください。すると、検出画像がそのまま表示されると思います。そのままエンターなどを押すと次の画像が表示され、最後まで行くと実行が終了するでしょう。これで入力と出力を実装することができました!

 さて、今回は実際に出力をしてみたり、コードの土台となる__main__の部分を書いたりしました。次回は一番最初に説明した二値化の部分に入っていきます。この部分は何回かに分けて説明するので、皆さんも一歩ずつ付いてきてください。それでは、ありがとうございました! 

インターンシップへの申し込み・お問い合わせ先

インターンシップへの申し込み・お問い合わせ先
メールでのお問い合わせは、下記フォームに入力して送信してください。
ご氏名 (例)山田 太郎
メールアドレス 半角英数字:ご入力間違いのないようにご注意ください
メールアドレス(確認用) 半角英数字:ご入力間違いのないようにご注意ください
電話番号 (例)0354339211 ※ハイフン抜きで入力してください
題名
お問合わせ内容

アーカイブ

カテゴリー