まとめはじめに前回はなんとかvscodeを使って、djangoをUbuntu上で動かしてみました。Ubuntu+vscode+django今回はHello,Worldでないアプリを作ろうと考え、pythonらしく物体検出でもやってみることにしました。言っても検出ロジックは丸パクリです。HaneCaDNNはおろか、OpenCVすらよく分かってません。仕様ユーザーがサイトに来るアプリがトップページを返すユーザーが画像を指定してアップロードするアプリが画像から物体検出するアプリが検出済み画像をファイルに出力するアプリがファイルに出力した画像を挿し込んだトップページを返して3に戻るリクエストが複数同時に来たときの仕様がありませんが、今回は固定ファイルに上書きします。結果は神のみぞ知るスタイルです。環境調整djangoのような大きなモジュールをpipでインストールすると、vscodeのファイル監視が許容量オーバーしてしまいます。Linuxにあるように、システムの最大監視数を増やします(8,192→524,288)。-pこれでvscodeを起動し直して、警告が出なければ大丈夫です。もって、新しくアプリケーション作るため、vscodeのターミナルから以下を実行します。detect_appフェーズ1まずは物体検出を行わず、受け取った画像そのものを返して実装。物体検出はハリボテ(モック)。コントローラがないので、全てビューで記述してます。受け取ったファイルの検証はしてません(公開は出来ない)。result})中で使用されているフォームがこんな感じ。見事にファイルだけです。forms.FileField()HTMLのテンプレートがこんな感じ。Bootstrap4を使ってますが、見た目はやはりアレです😆。画像ファイルのチェックをしていません(公開不可)。フォームデータと抽出結果のURLを渡されてビューから呼ばれます。</div></body></html>そしてこれがハリボテ本体。output)他にも設定ファイルなどはいじってますが、最後にgitを張るので省略します。フェーズ1はこんな感じです。入力画像は下のサイトのをお借りしました(超綺麗な写真なので縮小したけど)。ありがとうございます。Photoフェーズ2いよいよ物体検出です。pythonにパッケージの追加から。requirements.txtこのまま実装するとpylintがopencvを認めてくれないので、設定でpython.linting.pylintArgsを検索して、[項目追加]「–extension-pkg-whitelist=cv2」を追加する。dnnはこれでもダメなようです。うまく回避する方法は見つかりませんでした。ドキュメントコメントがないと怒られてるワーニングも大量にあるので、これ以上は諦めます。気を取り直して実装します。中身を入れたdetect.pyです。img)動かすにはトレーニング済みモデルデータと設定ファイルがいるのですが、これをダウンロードするスクリプトが↓です。model/graph.pbtxtサーバー起動して、POSTしてみると...一人多いですね。前回と同じですが、このサーバーのGitListです。デバッグdjangoのデバッグも特別なことはありません。デバッグメニューからデバッグの開始を選びます。Pythonを選びます。Djangoを選びます。ブレークポイントを張ります。アップロードしてみます。こんな感じで止まりました。変数も普通に見えてます。まとめ今回はdjangoで物体検出するアプリを作って、デバッグまでしてみました。次回はこのアプリを進化させ、モデルも使って、PostgreSQLにデータを入れてみたいと思います。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。