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

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

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

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

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

726閲覧

pythonファイルをros化中にエラーが複数出てしまいます

touya

総合スコア0

YOLO

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

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/04/08 08:49

pythonファイルをros化する際に複数エラーが出てしまうのでわかるものがあれば
ご回答よろしくお願いいたします。

エラーコードが大きく分けて2つ出たので記載いたします。
また、エラーコード1はutilの他にdarknetとpreprocessも出てしまいました。

エラーコード1

Traceback (most recent call last): File "/home/limlab/catkin_ws/src/python_pubsub/scripts/yolo_pub.py", line 14, in <module> from util import * ModuleNotFoundError: No module named 'util'

エラーコード2

Traceback (most recent call last): File "/home/limlab/catkin_ws/src/python_pubsub/scripts/yolo_pub.py", line 178, in <module> main() File "/home/limlab/catkin_ws/src/python_pubsub/scripts/yolo_pub.py", line 172, in main c = Cam() File "/home/limlab/catkin_ws/src/python_pubsub/scripts/yolo_pub.py", line 37, in __init__ self.classes = self.load_classes('/home/limlab/pytorch-yolo-v3/data/coco.names') AttributeError: 'Cam' object has no attribute 'load_classes'

これはrealsenseでYOLOを起動するpythonコードをros化したものです.

#!/usr/bin/env python3 # -*- coding: utf-8 -*- from __future__ import division from python_pubsub.msg import object_name import rospy import time import torch import torch.nn as nn from torch.autograd import Variable import numpy as np import cv2 from util import * from darknet import Darknet from preprocess import prep_image, inp_to_image import pandas as pd import random import argparse import pickle as pkl import pyrealsense2 as rs class Cam: def __init__(self): # ストリーム(Color/Depth)の設定 self.config = rs.config() self.config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30) self.config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) # ストリーミング開始 self.pipeline = rs.pipeline() self.profile = self.pipeline.start(self.config) self.classes = self.load_classes('/home/limlab/pytorch-yolo-v3/data/coco.names') self.cfgfile = "/home/limlab/pytorch-yolo-v3/cfg/yolov3.cfg" self.weightsfile = "/home/limlab/pytorch-yolo-v3/yolov3.weights" self.num_classes = 80 #colors = (255,0,0) self.colors = pkl.load(open("/home/limlab/pytorch-yolo-v3/pallete", "rb")) self.args = self.arg_parse() def get_test_input(self,input_dim, CUDA): img = cv2.imread("imgs/messi.jpg") img = cv2.resize(img, (input_dim, input_dim)) img_ = img[:,:,::-1].transpose((2,0,1)) img_ = img_[np.newaxis,:,:,:]/255.0 img_ = torch.from_numpy(img_).float() img_ = Variable(img_) if CUDA: img_ = img_.cuda() return img_ def prep_image(self,img, inp_dim): """ Prepare image for inputting to the neural network. Returns a Variable """ orig_im = img dim = orig_im.shape[1], orig_im.shape[0] img = cv2.resize(orig_im, (inp_dim, inp_dim)) img_ = img[:,:,::-1].transpose((2,0,1)).copy() img_ = torch.from_numpy(img_).float().div(255.0).unsqueeze(0) return img_, orig_im, dim def write(self,x, img): c1 = tuple(x[1:3].int()) c2 = tuple(x[3:5].int()) cls = int(x[-1]) label = "{0}".format(self.classes[cls]) print(label) if label == "person": cv2.imwrite('/home/limlab/pytorch-yolo-v3/imgs/img1.jpg',img) rospy.init_node('yolo_pub',anonymous=True) pub = rospy.Publisher('yolo_pub_topic', object_name, queue_size=10) r = rospy.Rate(10) msg = object_name() msg.object_message = label pub.publish(msg.object_message) r.sleep() color = random.choice(self.colors) cv2.rectangle(img, c1, c2,color, 1) t_size = cv2.getTextSize(label, cv2.FONT_HERSHEY_PLAIN, 1 , 1)[0] c2 = c1[0] + t_size[0] + 3, c1[1] + t_size[1] + 4 cv2.rectangle(img, c1, c2,color, -1) cv2.putText(img, label, (c1[0], c1[1] + t_size[1] + 4), cv2.FONT_HERSHEY_PLAIN, 1, [225,255,255], 1); return img def arg_parse(self): """ Parse arguements to the detect module """ parser = argparse.ArgumentParser(description='YOLO v3 Cam Demo') parser.add_argument("--confidence", dest = "confidence", help = "Object Confidence to filter predictions", default = 0.25) parser.add_argument("--nms_thresh", dest = "nms_thresh", help = "NMS Threshhold", default = 0.4) parser.add_argument("--reso", dest = 'reso', help = "Input resolution of the network. Increase to increase accuracy. Decrease to increase speed", default = "160", type = str) return parser.parse_args() def realsense(self): confidence = float(self.args.confidence) nms_thesh = float(self.args.nms_thresh) CUDA = torch.cuda.is_available() #num_classes = 80 #bbox_attrs = 5 + self.num_classes model = Darknet(self.cfgfile) model.load_weights(self.weightsfile) model.net_info["height"] = self.args.reso inp_dim = int(model.net_info["height"]) if CUDA: model.cuda() model.eval() try: while True: # フレーム待ち frames = self.pipeline.wait_for_frames() #RGB RGB_frame = frames.get_color_frame() RGB_image = np.asanyarray(RGB_frame.get_data()) #depyh depth_frame = frames.get_depth_frame() depth_image = np.asanyarray(depth_frame.get_data()) depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.08), cv2.COLORMAP_JET) if frames: img, orig_im, dim = self.prep_image(RGB_image, inp_dim) im_dim = torch.FloatTensor(dim).repeat(1,2) if CUDA: im_dim = im_dim.cuda() img = img.cuda() output = model(Variable(img), CUDA) output = write_results(output, confidence, self.num_classes, nms = True, nms_conf = nms_thesh) output[:,1:5] = torch.clamp(output[:,1:5], 0.0, float(inp_dim))/inp_dim # im_dim = im_dim.repeat(output.size(0), 1) output[:,[1,3]] *= RGB_image.shape[1] output[:,[2,4]] *= RGB_image.shape[0] list(map(lambda x: self.write(x, orig_im), output)) cv2.imshow("frame", orig_im) if cv2.waitKey(1) & 0xff == 27:#ESCで終了 cv2.destroyAllWindows() break finally: # ストリーミング停止 self.pipeline.stop() def main(): try: c = Cam() c.realsense() except rospy.ROSInterruptException: pass if __name__ == '__main__': main()

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問