質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

pythonの並列処理での変数受け渡しがしたい

dendendenjirou
dendendenjirou

総合スコア37

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

2回答

1評価

0クリップ

176閲覧

投稿2022/04/21 21:42

現在、AlexABのDarknetを使ってシステム構築を行っています。

tkinterでGUIを表示し、目的とするターゲットをラジオボタンにて選択するようにして
そのターゲットを検出した時にビープ音が鳴るようにしたいのですが
ラジオボタンで選択した変数を、検出に渡すことができません。

下記コードにて
target_canvasで選択したラジオボタンからの変数を
さらに下のコード
print_detectionsに渡したいのです。

Multiprocessで変数に.valueを付けると受け渡しができるとのことでしたが、うまくいきません。
どなたかご教授願えませんでしょうか。

python

import queue from ctypes import * import random import os import cv2 import time import darknet import argparse from threading import Thread, enumerate from queue import Queue import tkinter as tk import time from multiprocessing import Value def inference(darknet_image_queue, detections_queue, fps_queue): while cap.isOpened(): darknet_image = darknet_image_queue.get() prev_time = time.time() detections = darknet.detect_image(network, class_names, darknet_image, thresh=args.thresh) detections_queue.put(detections) fps = int(1/(time.time() - prev_time)) fps_queue.put(fps) print("FPS: {}".format(fps)) darknet.print_detections(detections, args.ext_output) darknet.free_image(darknet_image) cap.release() def target_canvas(): global target root = tk.Tk() root.geometry("300x200") root.title("Target") var = tk.IntVar() var.set(1) # ラジオボタン作成 rdo0 = tk.Radiobutton(root, value=0, variable=var, text='taeget0') rdo0.place(x=70, y=40) rdo1 = tk.Radiobutton(root, value=1, variable=var, text='taeget1') rdo1.place(x=70, y=70) rdo2 = tk.Radiobutton(root, value=2, variable=var, text='taeget2') rdo2.place(x=70, y=100) rdo3 = tk.Radiobutton(root, value=3, variable=var, text='taeget3') rdo3.place(x=70, y=130) lst_target = ['taeget0', 'taeget1', 'taeget2', 'taeget3'] target.value = lst_target[var.get()] root.mainloop() if __name__ == '__main__': frame_queue = Queue() darknet_image_queue = Queue(maxsize=1) detections_queue = Queue(maxsize=1) fps_queue = Queue(maxsize=1) args = parser() check_arguments_errors(args) network, class_names, class_colors = darknet.load_network( args.config_file, args.data_file, args.weights, batch_size=1 ) darknet_width = darknet.network_width(network) darknet_height = darknet.network_height(network) input_path = str2int(args.input) cap = cv2.VideoCapture(input_path) video_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) video_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) drg = queue.Queue Thread(target=video_capture, args=(frame_queue, darknet_image_queue)).start() Thread(target=target_canvas).start() Thread(target=inference, args=(darknet_image_queue, detections_queue, fps_queue)).start() Thread(target=drawing, args=(frame_queue, detections_queue, fps_queue)).start()

python

from ctypes import * import math import random import os import winsound def print_detections(detections, coordinates=False): print("\nObjects:") for label, confidence, bbox in detections: x, y, w, h = bbox if coordinates: print("{}: {}% (left_x: {:.0f} top_y: {:.0f} width: {:.0f} height: {:.0f})".format(label, confidence, x, y, w, h)) if label == target: winsound.Beep(800,1000) else: print("{}: {}%".format(label, confidence)) if label == target: winsound.Beep(800,1000)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

teamikl

2022/04/22 23:21

変数 target を初期化してる部分のコードを掲載出来ますか? 質問のコードはマルチスレッドなので、同一プロセス内でメモリ空間を共有します。 共有メモリ(multiprocessing.Value) は不要です。
dendendenjirou

2022/04/22 23:49

teamikl 返信ありがとうございます。 先ほど、teamiklさんに回答していただいた方法で解決しております。 感謝しています。 また、機会がありましたらお力添えを頂ければ幸いです。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Darknet

Darknetは、C言語で記述されたオープンソースのニューラルネットフレームワークで簡単にインストールすることが可能です。学習済みモデルとアルゴリズムも配布しており、ダウンロードすれば容易に動かすこともできます。

YOLO

YOLOとは、画像検出および認識用ニューラルネットワークです。CベースのDarknetというフレームワークを用いて、画像や動画からオブジェクトを検出。リアルタイムでそれが何になるのかを認識し、分類することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。