Python教程网
--左手Python,右手AI!

如何在windows系统上使用Tensorflow Object Detection API训练自己的数据?

前言

之前写了一篇如何在windows系统上安装Tensorflow Object Detection API?(点击跳转)

然后就想着把数据集换成自己的数据集进行训练得到自己的目标检测模型。动手之前先学习了一波别人是如何实现的,看了大多数教程都有一个小问题:用VOC2012数据集进行训练当做用自己的数据集。

然而,初心想看的是自己的数据集啊!于是就自己来撸一篇教程,方便自己也给别人一些参考吧~

目录

基于自己数据集进行目标检测训练的整体步骤如下:
– 数据标注,制作VOC格式的数据集
– 将数据集制作成tfrecord格式
– 下载预使用的目标检测模型
– 配置文件和模型
– 模型训练

这里放一下小詹这个项目的整体截图,方便后边文件的对号入座。

数据标注,制作VOC格式的数据集

数据集当然是第一步,在收集好数据后需要进行数据的标注,考虑到VOC风格,这里推荐使用LabelImg工具进行标注。

至于工具具体怎么用,自己摸索下就好,小詹已经把关键点地方框选出来啦。(Tip: Ctrl+R选择标注文件存放路径)

将数据集制作成tfrecord格式

这一部需要将手动标注的xml文件进行处理,得到标注信息csv文件,之后和图像数据一起制作成tfrecord格式的数据,用于网络训练。

xml转换为csv文件

这一步需要对xml文件进行解析,提取出标注信息存入csv文件,这里直接把小詹的脚步文件(Xml2Csv.py)分享如下,当然文件路径你得换成自己的!

# 将xml文件读取关键信息转化为csv文件

import os
import glob
import pandas as pd
import xml.etree.ElementTree as ET


def xml_to_csv(path):
    xml_list = []
    for xml_file in glob.glob(path + '/*.xml'):
        tree = ET.parse(xml_file)
        root = tree.getroot()
        for member in root.findall('object'):
            value = (root.find('filename').text,
                     int(root.find('size')[0].text),
                     int(root.find('size')[1].text),
                     member[0].text,
                     int(member[4][0].text),
                     int(member[4][1].text),
                     int(member[4][2].text),
                     int(member[4][3].text)
                     )
            xml_list.append(value)
    column_name = ['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax']
    xml_df = pd.DataFrame(xml_list, columns=column_name)
    return xml_df


def main():
    image_path = r'E:\Jan_Project\Experiment_1\dataset\test_xml'
    xml_df = xml_to_csv(image_path)
    xml_df.to_csv(r'E:\Jan_Project\Experiment_1\dataset\cancer_test_labels.csv', index=None)
    print('Successfully converted xml to csv.')


if __name__ == '__main__':
    main()

生成tfrecord数据文件

之后在对应文件路径处就有了csv文件,再利用如下脚步自动生成tfrecord。(这是github上生成文件的修改版)

# 将CSV文件和图像数据整合为TFRecords

"""
name: generate_tfrecord.py

Usage:
  # From tensorflow/models/
  # Create train data:
  python generate_tfrecord.py --csv_input=data/train_labels.csv  --output_path=train.record

  # Create test data:
  python generate_tfrecord.py --csv_input=data/test_labels.csv  --output_path=test.record
"""
from __future__ import division
from __future__ import print_function
from __future__ import absolute_import

import os
import io
import pandas as pd
import tensorflow as tf

from PIL import Image
from object_detection.utils import dataset_util
from collections import namedtuple, OrderedDict

flags = tf.app.flags
flags.DEFINE_string('csv_input', '', 'Path to the CSV input')
flags.DEFINE_string('output_path', '', 'Path to output TFRecord')
FLAGS = flags.FLAGS


# TO-DO replace this with label map
def class_text_to_int(row_label):
    if row_label == 'yichang':
        return 1
    else:
        None


def split(df, group):
    data = namedtuple('data', ['filename', 'object'])
    gb = df.groupby(group)
    return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)]


def create_tf_example(group, path):
    with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid:
        encoded_jpg = fid.read()
    encoded_jpg_io = io.BytesIO(encoded_jpg)
    image = Image.open(encoded_jpg_io)
    width, height = image.size

    filename = group.filename.encode('utf8')
    image_format = b'jpg'
    xmins = []
    xmaxs = []
    ymins = []
    ymaxs = []
    classes_text = []
    classes = []

    for index, row in group.object.iterrows():
        xmins.append(row['xmin'] / width)
        xmaxs.append(row['xmax'] / width)
        ymins.append(row['ymin'] / height)
        ymaxs.append(row['ymax'] / height)
        classes_text.append(row['class'].encode('utf8'))
        classes.append(class_text_to_int(row['class']))

    tf_example = tf.train.Example(features=tf.train.Features(feature={
        'image/height': dataset_util.int64_feature(height),
        'image/width': dataset_util.int64_feature(width),
        'image/filename': dataset_util.bytes_feature(filename),
        'image/source_id': dataset_util.bytes_feature(filename),
        'image/encoded': dataset_util.bytes_feature(encoded_jpg),
        'image/format': dataset_util.bytes_feature(image_format),
        'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),
        'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),
        'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),
        'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),
        'image/object/class/text': dataset_util.bytes_list_feature(classes_text),
        'image/object/class/label': dataset_util.int64_list_feature(classes),
    }))
    return tf_example


def main(csv_input, output_path, image_path):
    writer = tf.python_io.TFRecordWriter(output_path)
    path = image_path
    examples = pd.read_csv(csv_input)
    grouped = split(examples, 'filename')
    for group in grouped:
        tf_example = create_tf_example(group, path)
        writer.write(tf_example.SerializeToString())

    writer.close()
    print('Successfully created the TFRecords: {}'.format(output_path))

if __name__ == '__main__':
#     csv_input = r'E:\Jan_Project\Experiment_1\dataset\cancer_train_labels.csv'
#     output_path = r'E:\Jan_Project\Experiment_1\dataset\train.tfrecord'
#     image_path = r'E:\Jan_Project\Experiment_1\dataset\train_img'
#     main(csv_input, output_path, image_path)

    csv_input = r'E:\Jan_Project\Experiment_1\dataset\cancer_test_labels.csv'
    output_path = r'E:\Jan_Project\Experiment_1\dataset\test.tfrecord'
    image_path = r'E:\Jan_Project\Experiment_1\dataset\test_img'
    main(csv_input, output_path, image_path)

利用上述脚步后便得到了想要的数据格式,小詹这里如图所示:

下载预使用的目标检测模型

准备好训练数据后,选择模型进行训练,下载官方预训练模型【Github】
对于目标检测,可以考虑选择几种最常用的模型:
– ssd_mobilenet_v1_coco
– ssd_mobilenet_v2_coco
– faster_rcnn_resnet50_coco
– faster_rcnn_resnet101_coco

小詹选择的是上方链接中对应下图的那个,自己视情况而定即可。

下载后解压到对应文件夹中(见小詹放的第一张项目整体图)

配置文件和模型

建立label_map.pbtxt

这里需要针对自己数据集进行修改,格式如下:

item{
id: 1
name: ‘object’
}

修改

进入tensorflow/models/research/object_detection/samples/config文件夹找到对应自己模型的config文件,针对自己的情况进行修改:

num_classes: 修改为你自己任务的类别数
batch size:2(GPU显存较小的,尽量设置成小数值)

fine_tune_checkpoint: "路径/model.ckpt" #指定“训练模型的检查点文件”

train_input_reader: {
  tf_record_input_reader {
    input_path: "路径/train.tfrecord"
  }
  label_map_path: "路径/label_map.pbtxt"
}

eval_input_reader: {
  tf_record_input_reader {
    input_path: "路径/test.tfrecord"
  }
  label_map_path: "路径/label_map.pbtxt"
  shuffle: false
  num_readers: 1

模型训练

关于训练,要注意batch size大小和网络模型复杂程度,注意显存是否够大?显存不够就OOM(out of memory)了。

训练模型只需要运行object_detection/legacy路径下的train.py程序即可。(当然object_detection API安装是大前提,具体看上一篇文章!)

本地电脑:

python object_detection//legacy//train.py --logtostderr --train_dir=E://Jan_Project//Experiment_1//model --pipeline_config_path=E://Jan_Project//Experiment_1//training//faster_rcnn_inception_v2_coco.config

如果配置不够,可以云服务器上跑。以下是训练过程截图。

训练后还可以导出模型,用于检测测试。

#From tensorflow/modles/research/object_detection/

python export_inference_graph.py 
--input_type image_tensor 
--pipeline_config_path 路径/***.config
--trained_checkpoint_prefix 路径/model.ckpt-numbers #选择最近的一个或确认收敛到最优的一个
--output_directory 路径/my_model/ #模型的输出路径

以上,2019-5-20,节日快乐!

赞(26)
未经允许不得转载:Python教程网 » 如何在windows系统上使用Tensorflow Object Detection API训练自己的数据?
分享到: 更多 (0)

评论 83

  1. #1

    Great work! That is the kind of information that should be shared around the net.
    Shame on Google for not positioning this put up upper!

    Come on over and talk over with my site . Thanks =)

    Review my website :: Royal CBD

    匿名2个月前 (08-01)回复
  2. #2
  3. #3

    I’m not that much of a internet reader to be honest but your sites really nice, keep it up!
    I’ll go ahead and bookmark your site to come back in the future.

    Many thanks

    Here is my site: Franklin

    匿名2个月前 (08-12)回复
  4. #4
  5. #5
  6. #6
  7. #7

    I just like the valuable information you provide on your articles.
    I will bookmark your blog and check once more here regularly.

    I’m rather certain I’ll be told a lot of new stuff right right here!
    Best of luck for the following!

    My homepage: bellevuestellenbosch.co.za

    匿名1个月前 (08-17)回复
  8. #8
  9. #9

    I was excited to discover this website. I wanted to thank you for your time just for
    this fantastic read!! I definitely loved every little bit of
    it and i also have you saved as a favorite to look at new things on your blog.

    Also visit my homepage :: free xbox live codes generator

    匿名1个月前 (08-19)回复
  10. #10
  11. #11

    Hey there! Someone in my Myspace group shared this site with us so I came to check it out.
    I’m definitely enjoying the information. I’m book-marking and will be tweeting this to my followers!

    Fantastic blog and superb style and design.

    Also visit my web site http://questioningmachine.co.uk

    匿名1个月前 (08-21)回复
  12. #12

    For latest news you have to visit world wide web and on the web I found this website as a best web page for most recent
    updates.

    Look at my blog post … free v bucks

    匿名1个月前 (08-22)回复
  13. #13

    Hello to every one, it’s genuinely a good for me to pay
    a quick visit this web site, it contains important Information.

    Feel free to surf to my web blog; free vbucks codes

    匿名1个月前 (08-22)回复
  14. #14

    I have been browsing on-line greater than 3 hours today, but I never
    found any interesting article like yours. It is lovely worth sufficient for me.
    Personally, if all web owners and bloggers made excellent content
    material as you did, the net will probably be much more useful than ever before.

    Here is my blog post: free vbucks

    匿名1个月前 (08-22)回复
  15. #15

    Whoa! This blog looks just like my old one! It’s on a totally different
    subject but it has pretty much the same layout and design.
    Great choice of colors!

    my blog post: vbucks free

    匿名1个月前 (08-22)回复
  16. #16
  17. #17

    Hello, just wanted to tell you, I loved this article.
    It was funny. Keep on posting!

    Also visit my homepage: free vbucks

    匿名1个月前 (08-22)回复
  18. #18

    This is my first time go to see at here and i am genuinely pleassant to read all at
    one place.

    Also visit my homepage – vbucks free

    匿名1个月前 (08-22)回复
  19. #19

    Thanks to my father who told me regarding this weblog, this webpage is actually awesome.

    my homepage – pescuit la feeder

    匿名1个月前 (08-24)回复
  20. #20

    Simply desire to say your article is as surprising.
    The clearness in your post is simply great and i can assume you are an expert on this subject.
    Fine with your permission let me to grab your feed to keep updated with
    forthcoming post. Thanks a million and please keep up the enjoyable work.

    my webpage; free vbucks

    匿名1个月前 (08-25)回复
  21. #21

    I’d like to find out more? I’d care to find out more details.

    My homepage – free vbucks generator

    匿名1个月前 (08-25)回复
  22. #22

    What’s up to every one, as I am genuinely eager of reading this website’s
    post to be updated regularly. It contains fastidious data.

    my homepage – free vbucks generator

    匿名1个月前 (08-25)回复
  23. #23

    An outstanding share! I have just forwarded this onto
    a coworker who was conducting a little research on this. And
    he actually ordered me breakfast simply because I found
    it for him… lol. So allow me to reword this….
    Thanks for the meal!! But yeah, thanx for spending some time to discuss this topic here
    on your internet site.

    My web-site; v bucks free

    匿名1个月前 (08-25)回复
  24. #24
  25. #25

    Hello Dear, are you truly visiting this web site regularly, if so afterward you
    will without doubt get good experience.

    Feel free to visit my website … free vbucks generator

    匿名1个月前 (08-25)回复
  26. #26

    Thanks very interesting blog!

    Have a look at my blog :: free vbucks

    匿名1个月前 (08-25)回复
  27. #27

    Wow, awesome weblog layout! How long have you been running a blog for?

    you made running a blog glance easy. The total look of your site is
    wonderful, let alone the content!

    Here is my web page; Eldon

    匿名1个月前 (08-25)回复
  28. #28

    We absolutely love your blog and find a lot of your post’s to be what
    precisely I’m looking for. Do you offer guest writers to write
    content for yourself? I wouldn’t mind writing a post or elaborating on a number of
    the subjects you write regarding here. Again, awesome web log!

    my webpage … click here

    匿名1个月前 (08-27)回复
  29. #29

    Thanks for sharing your thoughts on Tensorflow Object Detection API,目标检测.
    Regards

    My blog – hack for pokemon go

    匿名4周前 (08-29)回复
  30. #30

    在windows系统上用Tensorflow Object Detection API训练自己数据
    bjywvhppqn http://www.gkhom49yl87n6xv51v75i82c7263wxy3s.org/
    [url=http://www.gkhom49yl87n6xv51v75i82c7263wxy3s.org/]ubjywvhppqn[/url]
    abjywvhppqn

    匿名3周前 (09-06)回复
  31. #31

    I know this website presents quality depending posts and additional stuff, is there any other site which
    provides such information in quality?

    My web site; avast driver updater serial key

    匿名3周前 (09-07)回复
  32. #32

    I’ve been exploring for a bit for any high quality articles or
    blog posts on this kind of area . Exploring in Yahoo I finally stumbled upon this site.

    Studying this information So i am satisfied to convey that
    I’ve an incredibly good uncanny feeling I found out just what I needed.
    I most without a doubt will make certain to don?t fail to remember this website and give it a glance regularly.

    Here is my homepage: free avast internet security license key

    匿名3周前 (09-07)回复
  33. #33
  34. #34

    Hello there! This blog post couldn’t be written much better!
    Looking through this post reminds me of my previous roommate!
    He always kept talking about this. I’ll send this article to him.
    Fairly certain he will have a good read. Thank you for sharing!

    Also visit my website :: free spins coin master

    匿名2周前 (09-11)回复
  35. #35

    Hello outstanding blog! Does running a blog like this take
    a massive amount work? I’ve no knowledge of programming however
    I was hoping to start my own blog soon. Anyways, should you have any recommendations
    or techniques for new blog owners please share.
    I know this is off topic but I simply wanted to ask.

    Kudos!

    Also visit my blog coin master free spins

    匿名2周前 (09-11)回复
  36. #36

    Nice blog here! Also your website loads up very fast! What host are you using?
    Can I get your affiliate link to your host? I wish my site loaded up as fast as yours
    lol

    my web site – free coin master spins

    匿名2周前 (09-11)回复
  37. #37

    You should take part in a contest for one of the finest websites on the web.
    I am going to recommend this site!

    Also visit my blog post; free coin master spins

    匿名2周前 (09-11)回复
  38. #38

    Thanks on your marvelous posting! I really enjoyed reading
    it, you are a great author. I will be sure to bookmark your blog and will often come
    back at some point. I want to encourage you to ultimately continue
    your great job, have a nice morning!

    Look at my blog: coin master free spins

    匿名2周前 (09-11)回复
  39. #39

    Hello there! Quick question that’s entirely off topic.

    Do you know how to make your site mobile friendly?
    My site looks weird when browsing from my iphone. I’m trying to find a template or plugin that might be able to
    resolve this problem. If you have any recommendations, please share.
    Thanks!

    my blog; coin master free spins

    匿名2周前 (09-11)回复
  40. #40

    Hello there! I know this is kinda off topic nevertheless I’d figured
    I’d ask. Would you be interested in exchanging links or maybe guest authoring a blog article or vice-versa?
    My blog discusses a lot of the same subjects as yours and I feel we could greatly benefit from each other.
    If you might be interested feel free to send me an email.
    I look forward to hearing from you! Superb blog by the way!

    My web blog :: coin master free spins

    匿名2周前 (09-11)回复
  41. #41

    Wonderful beat ! I wish to apprentice while you amend your site, how could i subscribe for a blog site?
    The account aided me a acceptable deal. I had been tiny bit acquainted of this your broadcast offered bright clear idea

    my web page: free coinmaster spins

    匿名2周前 (09-11)回复
  42. #42

    What’s up everyone, it’s my first pay a quick visit at this web page, and post is really fruitful for me, keep up posting
    these types of articles or reviews.

    Visit my page – free coin master spins

    匿名2周前 (09-11)回复
  43. #43

    I am really pleased to glance at this weblog
    posts which consists of plenty of helpful data, thanks for
    providing these kinds of statistics.

    Here is my web blog free coin master spins

    匿名2周前 (09-11)回复
  44. #44

    This is my first time go to see at here and i am really happy to read everthing at one place.

    Feel free to surf to my web site … free coin master spins

    匿名2周前 (09-11)回复
  45. #45

    My developer is trying to convince me to move to .net from PHP.
    I have always disliked the idea because of the costs.
    But he’s tryiong none the less. I’ve been using Movable-type on various websites for about a year and
    am worried about switching to another platform.
    I have heard great things about blogengine.net. Is there a way I can transfer all my
    wordpress posts into it? Any help would be greatly appreciated!

    Feel free to visit my blog … coin master free spins

    匿名2周前 (09-11)回复
  46. #46

    I have read so many content on the topic of the blogger lovers but this
    piece of writing is truly a pleasant article, keep it up.

    Also visit my homepage coin master free spins

    匿名2周前 (09-11)回复
  47. #47

    Hi there, the whole thing is going perfectly here and
    ofcourse every one is sharing data, that’s in fact excellent, keep up writing.

    Here is my webpage; free coin master spins

    匿名2周前 (09-11)回复
  48. #48

    I’ve been surfing online more than 3 hours nowadays, yet I by no means found any interesting
    article like yours. It’s pretty worth enough for me.
    In my view, if all webmasters and bloggers made just right content as you
    did, the net will be a lot more helpful than ever before.

    Visit my page: free spins coin master

    匿名2周前 (09-11)回复
  49. #49
  50. #50

    在windows系统上用Tensorflow Object Detection API训练自己数据
    mytlxppjoj http://www.gf11xp9713xac0t9p49cig526db28i1ts.org/
    [url=http://www.gf11xp9713xac0t9p49cig526db28i1ts.org/]umytlxppjoj[/url]
    amytlxppjoj

    匿名2周前 (09-14)回复
  51. #51

    Woah! I’m really enjoying the template/theme of this website.
    It’s simple, yet effective. A lot of times it’s
    challenging to get that “perfect balance” between user friendliness and
    visual appearance. I must say you have done a awesome
    job with this. Also, the blog loads super quick for me on Internet explorer.
    Excellent blog, Jessie,!

    匿名2周前 (09-15)回复
  52. #52

    I was recommended this website via my cousin. I’m no longer sure whether or not this post is written through him as nobody else know such
    distinct approximately my trouble. You’re wonderful! Thanks!

    Here is my homepage free robux

    匿名2周前 (09-16)回复
  53. #53

    Incredible points. Sound arguments. Keep up the great effort.

    My web-site; free vbucks

    匿名2周前 (09-16)回复
  54. #54

    This post gives clear idea for the new viewers of blogging, that in fact how to do blogging.

    Also visit my blog post; bingo blitz cheats

    匿名2周前 (09-16)回复
  55. #55

    Hello Dear, are you actually visiting this website regularly, if so after that you will without doubt
    get nice know-how.

    Check out my web-site :: roy jones jr vs mike tyson full match online

    匿名1周前 (09-17)回复
  56. #56

    在windows系统上用Tensorflow Object Detection API训练自己数据
    [url=http://www.gi349rdr15qg7nvre5w8747t4gd944x0s.org/]uiisdrtozdx[/url]
    aiisdrtozdx
    iisdrtozdx http://www.gi349rdr15qg7nvre5w8747t4gd944x0s.org/

    匿名1周前 (09-20)回复
  57. #57

    在windows系统上用Tensorflow Object Detection API训练自己数据
    cjqfbxnmlo http://www.g0o0i5604wwkl84995xyhi4o36y6o9tvs.org/
    [url=http://www.g0o0i5604wwkl84995xyhi4o36y6o9tvs.org/]ucjqfbxnmlo[/url]
    acjqfbxnmlo

    匿名6天前回复
  58. #58

    What you wrote made a ton of sense. But, what about this?
    suppose you added a little content? I ain’t suggesting your content isn’t solid., but what if you added
    a title to maybe get people’s attention? I mean 在windows系统上用Tensorflow Object Detection API训练自己数据 is kinda
    vanilla. You should peek at Yahoo’s home page and see how
    they write post titles to grab viewers to open the links.
    You might try adding a video or a pic or two to grab people excited
    about what you’ve written. In my opinion, it could bring your website a
    little livelier.

    my web site; free robux website

    匿名6天前回复
  59. #59

    hello!,I like your writing very a lot! share we keep in touch extra about your
    article on AOL? I need a specialist on this house to unravel my problem.
    May be that’s you! Having a look ahead to look you.

    Also visit my website … free coin master spins

    匿名5天前回复
  60. #60

    在windows系统上用Tensorflow Object Detection API训练自己数据
    ansnlhpsz
    nsnlhpsz http://www.ga3794l59s14r1q7t2v79kggn7wz08iqs.org/
    [url=http://www.ga3794l59s14r1q7t2v79kggn7wz08iqs.org/]unsnlhpsz[/url]

    匿名5天前回复
  61. #61

    This post presents clear idea in support of the new visitors of blogging, that really how to do running
    a blog.

    Feel free to visit my homepage: mike tyson vs roy jones live stream

    匿名5天前回复
  62. #62

    interest rates for personal loans https://www.personalloans02.com discover personal loans customer service.
    best online casino nz https://onlinecasinonodeposit002.com online casino no deposit bonus keep winnings.

    匿名4天前回复
  63. #63

    the best personal loans https://personalloans02.com self employed personal loans.
    best online us casino http://www.onlinecasinonodeposit002.com latest online casino no deposit bonus.

    匿名4天前回复
  64. #64

    This is a merest refined post. Thankyou for posting this remarkable article.

    xbody dristor

    匿名4天前回复
  65. #65

    jg wentworth personal loans http://www.personalloans02.com personal loans to pay off credit cards.
    free casino games online https://onlinecasinonodeposit002.com free no deposit casino bonus codes usa.

    匿名3天前回复
  66. #66

    If you would like to obtain much from this piece of writing then you have
    to apply these techniques to your won weblog.

    Stop by my web page – netflix account generator

    匿名3天前回复
  67. #67

    I’ve been exploring for a little bit for any high quality
    articles or blog posts in this sort of space .
    Exploring in Yahoo I ultimately stumbled upon this
    website. Reading this information So i’m satisfied to convey that I’ve a very excellent uncanny feeling I came upon just what
    I needed. I most certainly will make sure to don?t overlook this website and provides it a glance on a continuing basis.

    Here is my web site – steam wallet codes generator

    匿名3天前回复
  68. #68

    Hi friends, its impressive article about tutoringand fully explained, keep it up all the time.

    Also visit my homepage: free itunes gift card generator

    匿名3天前回复
  69. #69

    If you are going for most excellent contents like me,
    simply pay a quick visit this website all the
    time for the reason that it presents feature contents, thanks

    Review my blog … robux generator

    匿名3天前回复
  70. #70

    Unquestionably believe that which you said. Your favorite reason appeared
    to be on the net the simplest thing to be aware
    of. I say to you, I definitely get annoyed while people consider worries that they plainly
    do not know about. You managed to hit the nail upon the top and also defined
    out the whole thing without having side effect , people could take a signal.
    Will likely be back to get more. Thanks

    Feel free to surf to my webpage – free spins coin master

    匿名3天前回复
  71. #71

    personal loans credit union personalloans02.com bankruptcy loans personal.
    real vegas online casino no deposit bonus codes http://www.onlinecasinonodeposit002.com online casino bonuses no deposit.

    匿名3天前回复
  72. #72

    I’m not positive the place you’re getting your information, but great topic.
    I must spend some time studying much more or working out more.
    Thank you for excellent information I was in search of this info for my mission.

    my site: free vbucks generator

    匿名3天前回复
  73. #73

    When someone writes an piece of writing he/she retains the
    plan of a user in his/her mind that how a user can be aware of it.
    Thus that’s why this post is outstdanding.
    Thanks!

    My website – free psn codes

    匿名3天前回复
  74. #74

    Good day! I could have sworn I’ve been to your blog before but after browsing through many
    of the posts I realized it’s new to me. Anyways, I’m definitely
    happy I came across it and I’ll be book-marking it and
    checking back frequently!

    Have a look at my webpage – fortnite account generator

    匿名3天前回复
  75. #75

    My programmer is trying to persuade me to move to .net from PHP.
    I have always disliked the idea because of the costs.
    But he’s tryiong none the less. I’ve been using WordPress on several websites for about a year and am concerned about switching to another platform.
    I have heard great things about blogengine.net.
    Is there a way I can transfer all my wordpress posts into it?
    Any help would be greatly appreciated!

    Also visit my site – free amazon gift card generator

    匿名3天前回复
  76. #76

    discover personal loans complaints https://www.personalloans02.com dcu personal loans.
    best online casino bonuses in the uk http://www.onlinecasinonodeposit002.com online casino real money no deposit usa.

    匿名2天前回复
  77. #77

    When I originally commented I clicked the “Notify me when new comments are added” checkbox and
    now each time a comment is added I get three emails with the same comment.

    Is there any way you can remove me from that service?
    Many thanks!

    Have a look at my blog post fortnite account generator

    匿名2天前回复
  78. #78

    I’m impressed, I must say. Rarely do I come across a blog that’s both educative and interesting, and let me tell you,
    you’ve hit the nail on the head. The issue is an issue that
    not enough folks are speaking intelligently about. I’m very
    happy that I stumbled across this in my hunt for something concerning this.

    Feel free to visit my web-site … free psn codes generator

    匿名1天前回复
  79. #79
  80. #80
  81. #81

    motrin pills

    匿名1天前回复
  82. #82
  83. #83