柴犬の種類判別AI リンクを取得 Facebook × Pinterest メール 他のアプリ 4月 28, 2025 柴犬の種類には主に山陰柴、美濃柴、縄文柴、信州柴があります。今回、Geminiに柴犬の種類判別AIのPythonソースコードを書いてもらいました。 ```Python import os import threading import tkinter as tk from tkinter import filedialog, messagebox import shutil # 必要ライブラリ: google_images_download, tensorflow, pillow # Pydroidで以下をインストール: # pip install google_images_download tensorflow pillow # データセット用フォルダ DATA_DIR = "shiba_type_dataset" CLASSES = ["saninshiba", "minoshiba", "jomonshiba", "shinshushiba"] # 柴犬の種類 (甲斐犬を削除) IMG_PER_CLASS = 200 IMG_SIZE = (128, 128) BATCH_SIZE = 16 EPOCHS = 10 MODEL_PATH = "shiba_type_model.h5" # 画像ダウンロード try: from google_images_download import google_images_download except ImportError: raise ImportError("google_images_downloadが必要です。pip install google_images_download を実行してください。") # TensorFlow/Keras from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.models import Sequential, load_model from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout from tensorflow.keras.optimizers import Adam from tensorflow.keras.utils import to_categorical from PIL import Image import numpy as np # データセットをGoogleからダウンロード def download_dataset(): response = google_images_download.googleimagesdownload() queries = { "saninshiba": "山陰柴 犬 画像", "minoshiba": "美濃柴 犬 画像", "jomonshiba": "縄文柴 犬 画像", "shinshushiba": "信州柴 犬 画像" } for shiba_type, query in queries.items(): out_dir = os.path.join(DATA_DIR, shiba_type) os.makedirs(out_dir, exist_ok=True) args = { "keywords": query, "limit": IMG_PER_CLASS, "output_directory": DATA_DIR, "image_directory": shiba_type, "format": "jpg" } response.download(args) messagebox.showinfo("完了", "データセットのダウンロードが完了しました。") # モデル定義・学習 def train_model(): # データジェネレータ train_datagen = ImageDataGenerator( rescale=1./255, validation_split=0.2, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest' ) train_gen = train_datagen.flow_from_directory( DATA_DIR, target_size=IMG_SIZE, batch_size=BATCH_SIZE, class_mode='categorical', subset='training' ) val_gen = train_datagen.flow_from_directory( DATA_DIR, target_size=IMG_SIZE, batch_size=BATCH_SIZE, class_mode='categorical', subset='validation' ) # モデル構築 num_classes = len(CLASSES) model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=IMG_SIZE + (3,)), MaxPooling2D(2,2), Conv2D(64, (3,3), activation='relu'), MaxPooling2D(2,2), Conv2D(128, (3,3), activation='relu'), MaxPooling2D(2,2), Conv2D(128, (3,3), activation='relu'), MaxPooling2D(2,2), Flatten(), Dense(256, activation='relu'), Dropout(0.5), Dense(num_classes, activation='softmax') ]) model.compile(optimizer=Adam(), loss='categorical_crossentropy', metrics=['accuracy']) # 学習 model.fit( train_gen, validation_data=val_gen, epochs=EPOCHS ) # モデル保存 model.save(MODEL_PATH) messagebox.showinfo("完了", "モデルの学習と保存が完了しました。") # 画像分類 def classify_image(path): if not os.path.exists(MODEL_PATH): messagebox.showwarning("警告", "学習済みモデルが見つかりません。先に学習してください。") return model = load_model(MODEL_PATH) img = Image.open(path).convert('RGB').resize(IMG_SIZE) arr = np.array(img) / 255.0 arr = np.expand_dims(arr, axis=0) pred = model.predict(arr)[0] predicted_class_index = np.argmax(pred) predicted_class_name = CLASSES[predicted_class_index] probability = pred[predicted_class_index] messagebox.showinfo("判別結果", f"この画像は: {predicted_class_name} (確率: {probability:.2f})") # GUI構築 class App: def __init__(self, root): self.root = root root.title("柴犬種類判別AI") frame = tk.Frame(root, padx=10, pady=10) frame.pack() btn_download = tk.Button(frame, text="データセットダウンロード", command=self.run_thread(download_dataset)) btn_download.pack(fill='x', pady=5) btn_train = tk.Button(frame, text="モデル学習", command=self.run_thread(train_model)) btn_train.pack(fill='x', pady=5) btn_load = tk.Button(frame, text="画像を選択して判別", command=self.select_and_classify) btn_load.pack(fill='x', pady=5) # スレッド実行用 def run_thread(self, func): def wrapper(): t = threading.Thread(target=func) t.daemon = True t.start() return wrapper # 画像ファイル選択 def select_and_classify(self): path = filedialog.askopenfilename( filetypes=[("Image files", "*.jpg;*.jpeg;*.png")] ) if path: self.run_thread(lambda: classify_image(path))() if __name__ == "__main__": if os.path.exists(DATA_DIR): shutil.rmtree(DATA_DIR) os.makedirs(DATA_DIR, exist_ok=True) root = tk.Tk() app = App(root) root.mainloop() ``` リンクを取得 Facebook × Pinterest メール 他のアプリ コメント
Pydroid用ピアノアプリ+ラフマニノフピアノ協奏曲第2番1楽章デモ音源付き 4月 21, 2025 ```py import os # Pydroid3/Android 用 SDL オーディオドライバ os.environ['SDL_AUDIODRIVER'] = 'android' import tkinter as tk from tkinter import font import time import threading import math import numpy as np import pygame from mido import MidiFile class PianoApp: def __init__(self, root, midi_path): self.root = root self.root.title("ラフマニノフ: ピアノ協奏曲第2番 第1楽章 デモ") # pygame.mixer 初期化 pygame.mixer.init(frequency=44100, size=-16, channels=1, buffer=512) self.sound_cache = {} # フォント self.title_font = font.Font(family="Helvetica", size=16, weight="bold") self.key_font = font.Font(family="Helvetica", size=10) # ウィンドウサイズ w = min(1000, root.winfo_screenwidth()) h = min(400, root.winfo_screenheight()) root.geometry(f"{w}x{h+100}") # タイトル tk.Label(root, text="ラフマニノフ: ピアノ協奏曲第2番 第1楽章... 続きを読む
訴えの変更(追加的変更)申立 5月 02, 2025 訴え変更の全て!要件、手続のポイント解説 | 神奈川県厚木市・横浜市のジン法律事務所弁護士法人 拡張請求または請求拡張申立とも言う。 今回やっている訴訟は主に残業代請求であるが、ザ・ブラックからの答弁書・準備書面にあまりにも侮辱的表現が多いこと、被告の違法行為により退社を余儀なくされ、転職の結果給料が下がってしまったことを理由に差額分を逸失利益として請求できることが判例等により裏付けられたことを鑑み、請求額を大幅に増額することにした。 ザ・ブラックを退社してから派遣会社A社に5ヶ月程在職し、給料が36万円から25万円に下がり、さらにB社に転職することにより、197000円に下がってしまった。ザ・ブラックを退社してから60歳の定年を迎えるまで、単純に11万円×5ヶ月+163000円×14年×12ヶ月の合計27384055円もの逸失利益が請求可能となる。 侮辱的表現や社保未加入とか17連勤の強要などに対する慰謝料請求は20万円程度を考えている。 続きを読む
最高裁での上告理由書受理・却下の判断基準について 6月 04, 2025 最高裁判所における上告理由書の受理・却下に関する判断基準については、以下のような判例が参考となります。主に**民事訴訟法第312条**(旧法では第318条)の「上告受理の申立て」や**刑事訴訟法第405条**・**第406条**の上告理由に基づく判断が問題となります。 --- ### **1. 民事事件における判例** #### **(1) 上告受理の基準(民事訴訟法第312条)** 最高裁は「**法令の解釈に関する重要な事項を含むもの**」または「**その他の最高裁として判断を示す必要がある事案**」に限り受理を認めています。 - **最判昭和42年11月8日(民集21巻9号2439頁)** 「上告受理の申立ては、原判決に憲法解釈の誤りや法令解釈上の重要な誤認がある場合に限られる」とし、単なる事実誤認では受理されないことを明示。 - **最判平成15年7月10日(民集57巻7号973頁)** 上告受理の要件として、「**判例の変更が必要な場合**」や「**法令の統一解釈が求められる場合**」を挙げ、個別事案の事実誤認は却下対象と判断。 #### **(2) 却下事由の例** - **最判平成20年3月10日(民集62巻3号665頁)** 上告理由書が「単なる事実認定の誤り」を主張するに留まる場合、受理要件を欠くとして却下。 --- ### **2. 刑事事件における判例** #### **(1) 法令違反・判例違反(刑事訴訟法第405条)** - **最判昭和23年7月29日(刑集2巻9号1013頁)** 憲法違反や最高裁判例と相反する判断が下された場合、上告理由として受理。 - **最判平成27年10月19日(刑集69巻6号610頁)** 原判決が「**明らかな事実誤認**」であっても、法令解釈の問題に直結しない限り却下。 #### **(2) 量刑不当(刑事訴訟法第406条)** - **最判昭和58年4月26日(刑集37巻3号315頁)** 量刑が「**社会通念上著しく不当**」と認められる場合に限り受理。単なる量刑の軽重は... 続きを読む
コメント
コメントを投稿