🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

1回答

956閲覧

物体検出の学習時0と1が大量に表示される

yuya_murakami

総合スコア12

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/11/27 03:55

編集2019/11/27 05:22

#エラー内容
物体検出プログラムの学習時、1と0が大量に表示されます。エラーは出ません。参考サイトのプログラムでは動作したため、データセットの中身がおかしい?とも考えられますが、データセット作成時中身を見ても学習できたため完全に行き詰っています。。まったくわからないため教えていただきたいです。よろしくお願いします。
#エラーコード(エラーではない)
0
0
0
0
1
1
0
0
・・・
#エラーの出たプログラム

import chainer import cupy import chainercv import matplotlib import os import xml.etree.ElementTree as ET import numpy as np from chainercv.datasets import VOCBboxDataset bccd_labels = ('rock', 'mountain') class BCCDDataset(VOCBboxDataset): def _get_annotations(self, i): id_ = self.ids[i] anno = ET.parse( os.path.join(self.data_dir, 'Annotations', id_ + '.xml')) bbox = [] label = [] difficult = [] for obj in anno.findall('object'): bndbox_anno = obj.find('bndbox') bbox.append([ int(bndbox_anno.find(tag).text) - 1 for tag in ('ymin', 'xmin', 'ymax', 'xmax')]) name = obj.find('name').text.lower().strip() label.append(bccd_labels.index(name)) print(bccd_labels.index(obj.find('name').text.lower().strip())) bbox = np.stack(bbox).astype(np.float32) label = np.stack(label).astype(np.int32) difficult = np.array(difficult, dtype=np.bool) return bbox, label, difficult train_dataset = BCCDDataset('rock_detect_dataset/BCCD', 'train') valid_dataset = BCCDDataset('rock_detect_dataset/BCCD', 'val') test_dataset = BCCDDataset('rock_detect_dataset/BCCD', 'test') import chainer from chainercv.links import SSD300 from chainercv.links.model.ssd import multibox_loss class MultiboxTrainChain(chainer.Chain): def __init__(self, model, alpha=1, k=3): super(MultiboxTrainChain, self).__init__() with self.init_scope(): self.model = model self.alpha = alpha self.k = k def forward(self, imgs, gt_mb_locs, gt_mb_labels): mb_locs, mb_confs = self.model(imgs) loc_loss, conf_loss = multibox_loss( mb_locs, mb_confs, gt_mb_locs, gt_mb_labels, self.k) loss = loc_loss * self.alpha + conf_loss chainer.reporter.report( {'loss': loss, 'loss/loc': loc_loss, 'loss/conf': conf_loss}, self) return loss model = SSD300(n_fg_class=len(bccd_labels), pretrained_model='imagenet') train_chain = MultiboxTrainChain(model) import copy import numpy as np from chainercv import transforms from chainercv.links.model.ssd import random_crop_with_bbox_constraints from chainercv.links.model.ssd import random_distort from chainercv.links.model.ssd import resize_with_random_interpolation class Transform(object): def __init__(self, coder, size, mean): self.coder = copy.copy(coder) self.coder.to_cpu() self.size = size self.mean = mean def __call__(self, in_data): img, bbox, label = in_data img = random_distort(img) if np.random.randint(2): img, param = transforms.random_expand( img, fill=self.mean, return_param=True) bbox = transforms.translate_bbox( bbox, y_offset=param['y_offset'], x_offset=param['x_offset']) img, param = random_crop_with_bbox_constraints( img, bbox, return_param=True) bbox, param = transforms.crop_bbox( bbox, y_slice=param['y_slice'], x_slice=param['x_slice'], allow_outside_center=False, return_param=True) label = label[param['index']] _, H, W = img.shape img = resize_with_random_interpolation(img, (self.size, self.size)) bbox = transforms.resize_bbox(bbox, (H, W), (self.size, self.size)) img, params = transforms.random_flip( img, x_random=True, return_param=True) bbox = transforms.flip_bbox( bbox, (self.size, self.size), x_flip=params['x_flip']) img -= self.mean mb_loc, mb_label = self.coder.encode(bbox, label) return img, mb_loc, mb_label from chainer.datasets import TransformDataset from chainer.optimizer_hooks import WeightDecay from chainer import serializers from chainer import training from chainer.training import extensions from chainer.training import triggers from chainercv.extensions import DetectionVOCEvaluator from chainercv.links.model.ssd import GradientScaling chainer.cuda.set_max_workspace_size(1024 * 1024 * 1024) chainer.config.autotune = True batchsize = 32 gpu_id = 0 out = 'results' initial_lr = 0.001 training_epoch = 300 log_interval = 10, 'epoch' lr_decay_rate = 0.1 lr_decay_timing = [200, 250] transformed_train_dataset = TransformDataset(train_dataset, Transform(model.coder, model.insize, model.mean)) train_iter = chainer.iterators.MultiprocessIterator(transformed_train_dataset, batchsize) valid_iter = chainer.iterators.SerialIterator(valid_dataset, batchsize, repeat=False, shuffle=False) optimizer = chainer.optimizers.MomentumSGD() optimizer.setup(train_chain) for param in train_chain.params(): if param.name == 'b': param.update_rule.add_hook(GradientScaling(2)) else: param.update_rule.add_hook(WeightDecay(0.0005)) updater = training.updaters.StandardUpdater( train_iter, optimizer, device=gpu_id) trainer = training.Trainer( updater, (training_epoch, 'epoch'), out) trainer.extend( extensions.ExponentialShift('lr', lr_decay_rate, init=initial_lr), trigger=triggers.ManualScheduleTrigger(lr_decay_timing, 'epoch')) trainer.extend( DetectionVOCEvaluator( valid_iter, model, use_07_metric=False, label_names=bccd_labels), trigger=(1, 'epoch')) trainer.extend(extensions.LogReport(trigger=log_interval)) trainer.extend(extensions.observe_lr(), trigger=log_interval) trainer.extend(extensions.PrintReport( ['epoch', 'iteration', 'lr', 'main/loss', 'main/loss/loc', 'main/loss/conf', 'validation/main/map', 'elapsed_time']), trigger=log_interval) if extensions.PlotReport.available(): trainer.extend( extensions.PlotReport( ['main/loss', 'main/loss/loc', 'main/loss/conf'], 'epoch', file_name='loss.png')) trainer.extend( extensions.PlotReport( ['validation/main/map'], 'epoch', file_name='accuracy.png')) trainer.extend(extensions.snapshot( filename='snapshot_epoch_{.updater.epoch}.npz'), trigger=(10, 'epoch')) trainer.run()

#参考サイト
https://japan-medical-ai.github.io/medical-ai-course-materials/notebooks/06_Blood_Cell_Detection.html

#参考サイト学習画面
学習がきれいに進んでいます

jupyter

1epoch iteration lr main/loss main/loss/loc main/loss/conf validation/main/map elapsed_time 210 65 0.001 7.70718 2.17807 5.52911 0.114415 51.3745 320 129 0.001 4.29963 1.64196 2.65768 0.110095 96.4896 430 193 0.001 3.86515 1.45706 2.40808

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

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

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

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

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

hayataka2049

2019/11/27 04:23

>1と0が大量に表示されます だけではわからないので、実際の結果をコピペして掲載してください。
guest

回答1

0

36行目のprint文を削除

投稿2019/11/27 05:29

Q71

総合スコア995

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問