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

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

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

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

前回では、前からの続きで、画像のアンド合成をして輪郭描画に使う画像を完成させました。今回はいよいよ、完成した二値画像を用いて輪郭を描画し、画像認識AIを完成させます!それでは早速コードを書いて参りましょう。前に作成したutils.pyというファイルを開いてください。前に書いた、def make_contours(img_def, mono_img, small_size):の行から改行して、以下の行を書いてください。

# 輪郭抽出
labels, contours, _ = cv2.findContours(mono_img, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

height, width, _ = img_def.shape[:3]
large_area = height*width/5 # areaがでかすぎるかどうかの閾値

# 条件を満たした輪郭を元画像に書き込み
for cont in contours :
if not len(cont) : continue
area = cv2.contourArea(cont)
if not area or area >= large_area : continue
rect = cv2.minAreaRect(cont)
w, h = rect[1]
if w*h <= small_size : continue cv2.drawContours(img_def, [cont], 0, (0, 0, 255), 2) return labels  コードの各行の頭にはタブひとつ分、スペース4つが隠れていることに注意してください。コメントにある通り、輪郭をcv2.findContoursという関数を用いて抽出しています。large_areaについてもコメントのとおりです。次に、発見した輪郭を一つ一つ精査して実際に書き込むかを決めています。長さがある輪郭で、面積があり、その面積がlarge_areaよりも小さく、small_sizeよりも大きい場合のみcv2.drawContoursを用いて書き込んでいます。  次にdetect_image.pyを開いてください。いよいよ完成させます。前回書いた、cv2.imshow('mono_img', mono_img)の行から改行して以下の行を書いてください。 #輪郭描画 small_size = 200 make_contours(img, mono_img, small_size) #画像保存 if save_res_img : cv2.imwrite(img_path + 'res' + img_name, img)  コードの各行の頭にはタブひとつ分、スペース4つが隠れていることに注意してください。コメントにある通り、輪郭描画と画像保存に関するコードです。これでついに画像認識AIが完成しました!  それでは、ここまで書いたところで端末またはターミナルを開き、detect_image.pyがあるフォルダまたはディレクトリまでcdで移動しましょう。そしてWindowsOSの方はpython detect_image.pyと入力、MacOSの方はpython3 detect_image.pyと入力し、エンターを押してください。すると、ノイズ処理をした二値画像と、完成した輪郭描画に使う二値画像、結果画像が表示されると思います。ウィンドウが4つ重なって表示されるので、ずらして確認してください。そのままエンターなどを押すと次の画像が表示され、最後の画像まで行くと実行が終了するでしょう。  今回で輪郭描画も実装し、ついに画像認識AIが完成しました。ゆっくりと説明してきたので時間はかかりましたが、そこまで難しくなかったと思います。作れた人は、是非AIを作ったことがあると公言してみてください!最後まで見てくださった方は、本当にありがとうございました。それでは、ありがとうございました!

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

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

アーカイブ

カテゴリー