その他

【初心者向け】新入社員がAIでAIを勉強!! | ゴミ判別プログラム その1

その他
この記事は約10分で読めます。

はじめに

みなさん、こんにちは。そして、2025年度卒の新卒のみなさん、ご就職おめでとうございます。私は2025年度新卒で株式会社インプルに入社しました、てるです。大学では、主にUI/UXデザインについて勉強をしていました。

そんな私ですが、配属された部署では、AIをつかっています。
最近、chatGPTをはじめ、生成AIが本当に人気ですよね。これをビジネスに活用すれば、いままで時間がかかっていた業務もあっという間に解決できてしまうかもしれません。みなさんの中でも、AIをうまく活用できていない人や、AIにこんなことをしてもらいたいな、と思っている人も多いのではないでしょうか。

これからAIを使った開発についての記事を更新していきます!
もちろん、私はデザインの勉強をしていましたので、開発経験は少しやったことある程度です・・・。なので、開発にもAIを用いながら、初心者の方にもわかりやすいような、初心者目線での記事にしていけたらなと思います。
同期メンバーも毎週記事を更新していきますので、よろしければ、そちらもぜひご覧ください。

ramble - 株式会社インプルの技術メディア
ramble - ランブルは札幌のIT/ニアショア企業株式会社インプルの技術メディアです。主にReact, ReactNative, iOS, Android, WEB, AWS(Amazon Web Service)といったトレンドのIT技術に関する有用な記事をお届けいたします。

今回作るプログラム

ゴミ判別プログラム

さて、記念すべき第1回目で作るプログラムは、ゴミ判別システムです。

調べたいゴミの画像を読み込ませると、ゴミの種類を教えてくれるところまで目指します。今回は試作のため、燃えるゴミ・プラスチック・ペットボトル・ダンボールの4種類が判別できる状態を目指します。今週から4回程度に分けてのんびりやっていきますので、よければ一緒に制作していきましょう!

なぜゴミ判別プログラム?

早速ですが、みなさん、プラスチックの卵のパックって、何ゴミかわかりますか?

正解は、自治体によって変わります!!

多くの自治体では、プラスチックや燃えないごみに分類されますが、燃えるゴミに分類される自治体もあります。そう、複雑なんです。私は大学から北海道へ移り住んできたので、地元と違うゴミの出し方に最初は戸惑いました・・・。もちろん、何ゴミかを調べる機能(本社のある札幌市の場合は、50音分別辞典)もありますが、膨大な項目の中からピンポイントで調べたい内容を見つけるのも大変ですよね・・・。

家庭ごみ50音分別辞典

また、私は、大学時代に江別市の外国人のゴミ出しについての研究をしていました。
そこでは、外国人が多く移住してくる中で、外国語のリーフレットだけでは対応できない課題があることも判明しました。研究では、ゴミ出しカレンダーの改善やチラシ・動画などを制作して解決を試みましたが、これをアプリで解決できれば一番いいなとも思っていました。

そのような問題を解決するには、位置情報から自治体を把握し、ゴミの写真を撮るだけで分別方法や収集日などを教えてくれるアプリができたら、素敵ですよね!
なので今回は、その中でもゴミの種類を判別するというところにフォーカスし、AIを使って画像からゴミを判別してくれるシステムを作ってみようと思います!

どうやって作るの?

早速作ってみましょう!
でも、いままでデザインを勉強してた人間が、いきなり開発に取り組むのは難しいですよね。そのため、冒頭でも少し説明したように、開発にもAIを用いて見ました。一番メジャーなAI、chatGPTに聞いてみると・・・

すごい!!回答してくれました。ということで、今回はこの流れに沿って進めていこうと思います。

機械学習の準備をしよう!

実施する環境

今回の開発では、MacbookPro(M3)を使って開発していきます。そのため、OSの違いもありますので、違う部分はみなさんのPCに合わせたやり方で進めて見てください。もし一人でやるのが不安であったり、わからない人がいたら、chatGPTに聞いたら教えてくれるかもしれません!

環境構築(Python)

まずは、AIが学習できるように環境を整えていかなければなりません。AIの学習には、主にPythonを使って学習させていきますので、この準備から始めていきましょう!

1. Pythonをインストール

まずはPythonをインストールしましょう。

でも今回開発で使用するMacには、基本的には元からPythonが入っています。しかし、バージョンが古かったり入っていない場合もあるので、確認のためにターミナルを使って見て見ましょう。ターミナルを開いて以下のコマンドを入力して実行してみましょう。出力結果が Python 3.x.x になっていればOKです!

python3 --version


もしなっていない人がいれば、ダウンロードしてきましょう。この時の注意点として、ダウンロードするバージョンは Python 3.10.x がおすすめです。ダウンロードしてくる時、ついつい最新バージョンが一番良いと思われがちですが、新しすぎると一部のライブラリに対応していなかったりします。逆に古すぎると、サポートが終了していたりします。注意しましょう。

Download Python
The official home of the Python Programming Language

2. 仮想環境を作成

続いて、仮想環境を作っていきます。仮想環境とは、部屋のようなイメージです。部屋を一つ一つ作っていくことで、部屋の中でやったことは、他の部屋に影響を及ぼしません。例えば、あるライブラリを古いバージョンと新しいバージョンを同時に使いたい時に、部屋を分けてくことでお互いに影響を及ぼさないようにできます。

以下のコマンドを1行ずつ実行してみましょう!

mkdir myproject
cd myproject
python3 -m venv venv

3. 仮想環境を実行(と終了)

続いて、仮想環境を実行していきます。これは、この部屋の中を動かすよ!という命令です。

1行目のコマンドを実行すると、3行目のように(venv)というのが頭に表示されたのではないでしょうか?これがついていると、仮想環境が準備できた(起動した)状態になります!

source venv/bin/activate

(venv) MacBook:myproject username$

これにてPythonの基本的な準備は完了です!

ちなみに、起動させた状態から終了するときは、下記のコマンドを打ちます。そうすると、頭の(venv)が消えます。

deactivate

MacBook:myproject username$

次回以降、学習環境を実行させるときや終了させる時には、これらのコマンドを使うので、覚えておきましょう!

データセットの準備

続いて、データセットの準備をします。データセットとは、教科書のようなものです。今回は、燃えるゴミ・プラスチック・ペットボトル・ダンボールの4種類のゴミを学んで欲しいので、それぞれのゴミの写真を準備します。しかも、1枚だけでは学習できないので、100枚程度準備する必要があります。ですが、みなさん普段からゴミの写真なんてそんなに撮ってないですよね・・・。(そもそも撮らないですよね・・・。)

そんな悩みを解決させるのが、世の中にあるデータセットたちです。世の中には、同じく機械学習をしている人たち向けに公開されたデータセットが多く存在します。そこで、今回はゴミの画像で構築された以下のデータセットを使いました。

GitHub - garythung/trashnet: Dataset of images of trash; Torch-based CNN for garbage image classification
Dataset of images of trash; Torch-based CNN for garbage image classification - garythung/trashnet

このデータセットから、”dataset”というフォルダを作り、画像を以下のように整理します。

dataset/
├── 0_burnable/
│   ├── burnable_1.jpg
│   ├── burnable_2.jpg
│   └── ...
├── 1_plastic/
├── 2_pet/
└── 3_cardboard/

これが完成したら、データセットの準備も完了です。

機械学習をさせてみよう

さぁ、いよいよ準備が完了しました。
この後は、判別プログラムを作るために、機械学習(勉強させること)をしなくてはいけません。しかし、chatGPTに聞いたところ、学習させるためには学習させるためのPythonのコードを書かなくてはいけません・・・。無理!かけない!と思う方も多いでしょう。

しかし、世の中はAI時代。なんと、そのコードでさえもAIが制作してくれるのです。AI最強ですね笑。
今回は、CursorというAIエディターを使用します。詳しくは別の記事で紹介しようと思っていますので、記事を作ったらぜひ見てください!

Cursor - The AI Code Editor
Built to make you extraordinarily productive, Cursor is the best way to code with AI.

カーソルを開いてみよう

cursorを開くとこのような画面になります。
open projectを押して、detasetがあるフォルダを開きましょう。

すると、エディタの画面が開きます。プログラミングをしたことがある人は、VScodeなどのエディタで見たことある画面ですよね!
したことのない人には、なんだこれは、という画面かもしれません。ざっくりと説明すると、左側がファイルを選ぶ画面、真ん中の黒い部分がエディタ(プログラムを書く場所)です。そして、右側はプログラミングをしたことがある人も始めてみる画面かもしれません。そう、ここがAIの画面です。

機械学習させるプログラムを作ってみる

それでは早速、機械学習をさせるプログラムを作っていきましょう。
機械学習といっても、さまざまな学習方法があります(私もまだ勉強中ですが汗)。今後、このプログラムをアプリに展開していきたいことをchatGPTに伝えると、MobileNetV2で学習させるといいと提案してくれました。なので、その旨をCursorのチャット欄に記入しました。すると・・・。

全部作ってくれた!!すごい!!!
作ってくれたプログラムに関しては、説明もしてくれるので、全て任せて終わりということにもなりません。もし説明を読んでいて、足りない部分や変更したい部分があれば、それもチャットでお願いをすると、変更してくれます。今回の場合、学習させたモデルを保存する昨日がなかったので、それを追加して欲しいというお願いをしました。

すると、それも全部作ってくれた・・・!!
私がコーディングをする出番はありませんでした。あっというまにできちゃうんですね。

機械学習をさせてみた

さて、作ってもらったコードを利用して、学習させて見ます。ターミナルで仮想環境を実行させて、以下のコードを入力してみましょう。これは、このPythonのファイル(今回の場合はtrain_model.pyというファイル)を実行してね!という意味になります。みなさん、自分のPythonのファイル名を確認して入力しましょう!

pyhotn3 train_model.py

すると、ターミナルが何やら勝手に動き出します。
怖い!と思われる方もいるかもしれませんが、それが学習中の様子ですので、優しく見守ってあげましょう。しばらくすると学習が終了し、学習されたファイルが出来上がります。
今回はgomi_model.h5という名前で作ってねと指示をしたので、その通り出来上がりました。これで機械学習をさせることができました!

実際にゴミを判別させてみよう!

さて、もうちょっとです。つくってみたモデルを実行させてみましょう。
実行のためには、実行させるPythonのプログラムが必要になります。これもCursorで作れるので、作ってしまいましょう。

今回は4つのゴミの種類を判別できるように作りました。なので、与えられたゴミの画像に対して、どの種類のゴミの確率が一番高いかというのを判断し、一番高いものが答えとして表示されます。

それではターミナルで、以下のコマンドを実行してみましょう。機械学習をさせた時と同様に、今回はtest_gomi.pyというファイル名なので、これを実行しますが、自分のPythonのファイル名を確認して入力しましょう!

pyhotn3 test_gomi.py

今回は、予測スコアの欄に、左から順に、燃えるゴミ・プラスチック・ペットボトル・ダンボールのスコアが入るようにできています。すると、ターミナルに以下のような結果が表示されました!

予測スコア: [0.20196621 0.32559308 0.19887608 0.27356464]
予測クラス: 1
予測クラス名: 1_plastic

今回のゴミはポケットティッシュのビニール袋を判別させました。すると、無事結果が出てきました。プラスチックと認識されていますね。動作は問題なくできているようです!

まとめ

さて、今回はゴミ判別プログラムを作ってみました。


AIをフル活用すれば、初心者でもここまで作ることができます。みなさんも、簡単なプログラムであれば作れますので、ぜひやってみてください。

ご覧いただきありがとうございました。