大学で使用した自作の資料等を,手直しの上公開している. クリエイティブ・コモンズ BY NC SA.
自主性、自己分析と自己アピールのスキル、AIやデータベースやプログラミングの実用的な能力、そして自己成長力などの社会的基礎力を身につけることができます。これにより、学生は将来のキャリアに対する具体的な自信とビジョンを形成することが可能となるでしょう。大いに成長してください!
その他,業界エキスパート,OB/OG によるゲストレクチャー
ゲストスピーカーによる業界動向と必要なスキルに関するプレゼンテーション
各自が、情報工学の本質、情報工学科の学生が持つ強みと魅力、可能なキャリアパスについて理解。さらに、ITエンジニア、AIエンジニアとして成長するためのビジョンと目標を理解。
【資料】
研究活動は多くの利点と成長の可能性があります。研究を行うには、確固たる心構え、そして、研究に十分に時間をかけることが大切です。研究は楽しく、自分の思い通りに進めていくものです。研究の楽しさを実感しながら進めましょう。
【資料】
【各自の探求,考察】
Pythonは多様な用途で広く使われるプログラミング言語であり、特に文法のシンプルさ、拡張性、柔軟性が高く評価されています。この言語は直感的で読みやすく、初心者にも取り組みやすい設計になっています。主要なキーワードには「print」、「type」、「if」、「else」、「for」、「while」などがあり、オブジェクト指向プログラミングもサポートされています。さらに、Pythonは多様な標準ライブラリが提供されているため、データ処理、AI、メディア処理、データ連携、Web開発など幅広い用途で活用できます。オンライン環境であるGoogle Colaboratoryを使えば、Googleアカウントさえあれば手軽にPythonのノートブックを利用できます。特にデータ処理においては、Pandasライブラリのデータフレームが表形式のデータを効率的に扱うツールとして用いられ、多くのデータ形式の読み書きもサポートしています。
【資料】
【関連資料】
Google アカウント
【演習で使用する Google Colaboratory のページ】
https://colab.research.google.com/drive/1l2pLl72PYG5TFKKu8ha0h_9fFCafxG4j?usp=sharing
画像分類に関連するAI技術は、ディープラーニングという知的なITシステムをベースに、多層のニューラルネットワークを使用して複雑なタスクを実行する能力を持っています。特に、大規模データセットで学習された学習済みモデルは、ニューラルネットワークのパラメータが最適化され、特定のタスクに特化しています。これらのモデルは、転移学習やファインチューニングを利用して、異なるタスクにも適用可能です。学習済みモデルの利用はコスト削減や高い性能、迅速な技術検証などのメリットがあります。特に、ImageNet-1Kというデータセットで学習されたモデルは、1,000種類のカテゴリを持ち、多様なタスクに適用可能です。このモデルを利用することで、新しい技術の性能を迅速に試すことや、転移学習やファインチューニングの導入などが可能となります。さらに、tkinterというPythonの標準ライブラリを使用すると、GUIを手軽に作成し、ユーザーに視覚的で直感的な操作環境を提供することができます。
【資料】
【演習で使用する Python プログラム】
演習1
import timm import torch import requests from PIL import Image from io import BytesIO # ImageNet 1kのラベル情報をダウンロード IMAGENET_1k_URL = 'https://storage.googleapis.com/bit_models/ilsvrc2012_wordnet_lemmas.txt' IMAGENET_1k_LABELS = requests.get(IMAGENET_1k_URL).text.strip().split('\n') def load_image(url, transform): image = Image.open(requests.get(url, stream=True).raw) image_tensor = transform(image) return image_tensor def classify_image(model, image_tensor, topk=5): output = model(image_tensor.unsqueeze(0)) probabilities = torch.nn.functional.softmax(output[0], dim=0) values, indices = torch.topk(probabilities, topk) return [{'label': IMAGENET_1k_LABELS[idx], 'index': idx, 'value': val.item()} for val, idx in zip(values, indices)] if __name__ == "__main__": # モデルを読み込む model_name = 'eva02_large_patch14_448.mim_in22k_ft_in1k' model = timm.create_model(model_name, pretrained=True).eval() transform = timm.data.create_transform(**timm.data.resolve_data_config(model.pretrained_cfg)) # 画像ファイルの指定 url = 'https://datasets-server.huggingface.co/assets/imagenet-1k/--/default/test/12/image/image.jpg' image_tensor = load_image(url, transform) # 画像を分類し、結果を表示 top_classes = classify_image(model, image_tensor) for i in top_classes: print(i) # 期待される結果 expected_indices = torch.tensor([162, 166, 161, 164, 167]) print("Expected Indices:", expected_indices)
演習2
import tkinter as tk from tkinter import filedialog root = tk.Tk() file_label = tk.Label(root, text="") file_label.pack() filepath = filedialog.askopenfilename() if filepath: file_label.config(text=filepath) root.mainloop() exit()
演習3
import tkinter as tk from tkinter import filedialog import timm import torch import requests from PIL import Image # ImageNet 1kのラベル情報をダウンロード IMAGENET_1k_URL = 'https://storage.googleapis.com/bit_models/ilsvrc2012_wordnet_lemmas.txt' IMAGENET_1k_LABELS = requests.get(IMAGENET_1k_URL).text.strip().split('\n') def load_image(file_path, transform): image = Image.open(file_path) image_tensor = transform(image) return image_tensor def classify_image(model, image_tensor, topk=5): output = model(image_tensor.unsqueeze(0)) probabilities = torch.nn.functional.softmax(output[0], dim=0) values, indices = torch.topk(probabilities, topk) return [{'label': IMAGENET_1k_LABELS[idx], 'index': idx, 'value': val.item()} for val, idx in zip(values, indices)] if __name__ == "__main__": # モデルを読み込む model_name = 'eva02_large_patch14_448.mim_in22k_ft_in1k' model = timm.create_model(model_name, pretrained=True).eval() transform = timm.data.create_transform(**timm.data.resolve_data_config(model.pretrained_cfg)) # 画像ファイルの指定 root = tk.Tk() root.withdraw() # GUIウィンドウを表示しないようにする file_path = filedialog.askopenfilename(title="画像ファイルを選択してください", filetypes=[("JPEG files", "*.jpg"), ("PNG files", "*.png"), ("All files", "*.*")]) if not file_path: print("ファイルが選択されませんでした") exit() image_tensor = load_image(file_path, transform) # 画像を分類し、結果を表示 top_classes = classify_image(model, image_tensor) for i in top_classes: print(i)
データの管理と処理の基礎について説明します。今回は、PythonのPandasデータフレームを利用します。機械学習は、訓練データを使ってコンピュータに知的能力を獲得させる技術です。機械学習として、主に、回帰や分類があります。線形回帰は、データに最適にフィットする線(もしくは超平面)を見つける技術の一つです。外れ値は、データセット内で、他のデータと顕著に異なるデータのことを言います。外れ値の適切な取り扱いは、分析の精度や機械学習モデルの性能向上に寄与します。外れ値の検出には、zスコアなどの統計的手法などが用いられます。zスコアはデータが平均からどれだけ離れているかを示したものです。欠損値は、データが存在しないか、測定されていないことを示し、pythonではnanを使って表します。機械学習を行う際、外れ値や欠損値の適切な処理が重要です。データは訓練データとテストデータに分割され、訓練データによる学習で得られた機械学習モデルは、テストデータで評価することが重要です。
【資料】
【演習で使用する google colaboratory のページ】
https://colab.research.google.com/drive/1outnxzsm81bwm2dxblrf2a51bhkelfnz?usp=sharing
ミニプロジェクトでは、実践的問題解決能力の向上、プログラミング技術の深化、自主性と達成感の促進を目的とし、Pythonでのプログラム作成を通して学ぶ。自らのアイディアをプログラムとして実現し、挑戦とトライアンドエラーを粘り強く重ねながら、そのプロセスで実力を磨く。Trinket、ChatGPT 3.5、TalkAI を使用して、ミニプロジェクトを進める。プログラミングは創造的なプロセスであり、その魅力はアイディアを形にできることにある。演習を通じて、AIのサポートを受けながらプログラムの改善を各自行うことにも挑戦する。
【資料】
【演習で使用する外部ページ】
Trinket
TalkAI
trinket のプログラム作成のプロンプト例
trinket で動く processing を利用したアクションゲーム の Python 2 プログラムを作成してください。プログラムの先頭を「from processing import *」で開始してください。
https://trinket.io/python/ab4ac351b3 を使うなどで、ミニプロジェクトを楽しみましょう。