#car,bikeの判別
ValueErrorが解読できません!!!
ご教授お願いします。
Djangoでwebアプリ化する段階です。
バージョン
python3.7.9
Django3.15
pythonでcar,bikeの判別をしています。
ターミナルで python manage.py runserver と実行後
http://127.0.0.1:8000/と指示されます。
carbike/を選択
写真を選択
写真を選択後エラーが生じます
3枚目のValueErrorが解読できません。
views.pyのファイルになります
from django.shortcuts import render, redirect from django.http import HttpResponse from django.template import loader from .forms import PhotoForm from .models import Photo def index(request): template = loader.get_template('carbike/index.html') context = {'form': PhotoForm()} return HttpResponse(template.render(context, request)) def predict(request): if not request.method == 'POST': return redirect('carbike:index') form = PhotoForm(request.POST, request.FILES) if not form.is_valid(): raise ValueError('Formが不正です') photo = Photo(image=form.cleaned_data['image']) predicted, percentage = photo.predict() template = loader.get_template('carbike/result.html') context = { 'photo_name': photo.image.name, 'photo_data': photo.image_src(), 'predicted': predicted, 'percentage': percentage, } return HttpResponse(template.render(context, request))
###models.py
from django.db import models import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras.models import load_model from PIL import Image import io, base64 graph = tf.get_default_graph() class Photo(models.Model): image = models.ImageField(upload_to='Photos') IMAGE_SIZE = 224 # 画像サイズ MODEL_FILE_PATH = './carbike/ml_models/vgg16_transfer.h5' # モデルファイル classes = ["car", "motorbike"] num_classes = len(classes) # 引数から画像ファイルを参照して読み込む def predict(self): model = None global graph with graph.as_default(): model = load_model(self.MODEL_FILE_PATH) img_data = self.image.read() img_bin = io.BytesIO(img_data) image = Image.open(img_bin) image = image.convert("RGB") image = image.resize((self.IMAGE_SIZE, self.IMAGE_SIZE)) data = np.asarray(image) / 255.0 X = [] X.append(data) X = np.array(X) # モデルのロード #model = laoad_model('./vgg16_transfer.h5') result = model.predict([X])[0] predicted = result.argmax() percentage = int(result[predicted] * 100) #print(self.classes[predicted], percentage) return self.classes[predicted],percentage # Create your models here.
リスト
absl-py 0.11.0 appnope 0.1.2 argon2-cffi 20.1.0 asgiref 3.3.1 astor 0.8.1 astroid 2.4.2 astunparse 1.6.3 async-generator 1.10 attrs 20.3.0 backcall 0.2.0 beautifulsoup4 4.9.3 bleach 3.2.1 cachetools 4.2.0 certifi 2020.12.5 cffi 1.14.4 chardet 4.0.0 decorator 4.4.2 defusedxml 0.6.0 Django 3.1.5 django-bootstrap4 2.3.1 entrypoints 0.3 flatbuffers 1.12 flickrapi 2.4.0 gast 0.3.3 google-auth 1.24.0 google-auth-oauthlib 0.4.2 google-pasta 0.2.0 grpcio 1.32.0 h5py 2.10.0 idna 2.10 importlib-metadata 2.0.0 ipykernel 5.3.4 ipython 7.19.0 ipython-genutils 0.2.0 isort 5.6.4 jedi 0.18.0 Jinja2 2.11.2 joblib 1.0.0 jsonschema 3.2.0 jupyter-client 6.1.7 jupyter-core 4.7.0 jupyterlab-pygments 0.1.2 Keras-Applications 1.0.8 Keras-Preprocessing 1.1.2 lazy-object-proxy 1.4.3 Markdown 3.3.3 MarkupSafe 1.1.1 mccabe 0.6.1 mistune 0.8.4 mkl-fft 1.2.0 mkl-random 1.1.1 mkl-service 2.3.0 mock 4.0.3 nbclient 0.5.1 nbconvert 6.0.7 nbformat 5.0.8 nest-asyncio 1.4.3 notebook 6.1.6 numpy 1.19.2 oauthlib 3.1.0 opt-einsum 3.3.0 packaging 20.8 pandocfilters 1.4.3 parso 0.7.0 pexpect 4.8.0 pickleshare 0.7.5 Pillow 8.1.0 pip 20.3.3 prometheus-client 0.9.0 prompt-toolkit 3.0.8 protobuf 3.13.0 ptyprocess 0.6.0 pyasn1 0.4.8 pyasn1-modules 0.2.8 pycparser 2.20 Pygments 2.7.3 pylint 2.6.0 pyparsing 2.4.7 pyrsistent 0.17.3 python-dateutil 2.8.1 pytz 2020.5 PyYAML 5.3.1 pyzmq 20.0.0 requests 2.25.1 requests-oauthlib 1.3.0 requests-toolbelt 0.9.1 rsa 4.7 scikit-learn 0.24.0 scipy 1.5.2 Send2Trash 1.5.0 setuptools 51.1.2 six 1.15.0 soupsieve 2.1 sqlparse 0.4.1 tensorboard 1.14.0 tensorboard-plugin-wit 1.7.0 tensorflow 1.14.0 tensorflow-estimator 1.14.0 termcolor 1.1.0 terminado 0.9.1 testpath 0.4.4 threadpoolctl 2.1.0 toml 0.10.1 tornado 6.1 traitlets 5.0.5 typed-ast 1.4.1 typing-extensions 3.7.4.3 urllib3 1.26.2 wcwidth 0.2.5 webencodings 0.5.1 Werkzeug 1.0.1 wheel 0.36.2 wrapt 1.12.1 zipp 3.4.0
どのファイルを共有すればいいのかわかりませんので、
他のファイルを閲覧確認される場合、質問お願いします。
index.htmlコード
index.html
1{% extends 'carbike/base.html' %} 2{% block title %}車・バイク推定アプリメニュー{% endblock %} 3 4{% block content %} 5<div> 6 <h4 class="mt-4 mb-5 border-bottom"車・バイクの推定アプリ> 7 <p>画像ファイルを選択して推定ボタンをクリックしてください。</p> 8 <form action = "{% url 'carbike:predict' %}" method="post" class = "form" enctype = "mutipart/form-data"> 9 {% csrf_token %} 10 <div class="form-group"> 11 <div class= "custom-file"> 12 {{ form.image }} 13 <label class="custom-file-label" for="customFile"> 14 推定したいファイルを選択してください 15 </label> 16 </div> 17 </div> 18 <button type="submit" class="btn btn-primary">推定する!</button> 19 </from> 20</div> 21{% endblock %}``` 22 23
forms.pyコード
python:forms.py
1from django import forms 2 3class PhotoForm(forms.Form): 4 image = forms.ImageField(widget=forms.FileInput(attrs={'class':'custom-file-input'}))