├── CBOW ├── CBOW.md └── TFCBOW.ipynb ├── DM ├── DM.md ├── Gensim_Doc2Vec.ipynb └── Tensorflow_DM.ipynb ├── RCNN ├── 2flowers.zip ├── RCNN.md ├── RCNN_output.py ├── fine_tune_RCNN.py ├── preprocessing_RCNN.py ├── refine_list.txt ├── svm_train │ ├── 1.txt │ └── 2.txt ├── train_alexnet.py └── train_list.txt └── README.md /CBOW/CBOW.md: -------------------------------------------------------------------------------- 1 | # CBOW 2 | The Tensorflow implementation of the CBOW model from Word2Vec 3 | 4 | **The Enviroment:** 5 | The file is working with Tensorflow version 0.7.1. Python version 2.7 and scikit-learn dev distribution package is needed as it has the TSNE algorithm implemented. The link to the scikit-learn dev can be find here: https://github.com/scikit-learn/scikit-learn.git . To run the code, you may want to install ipython notebook to your machine as well. 6 | 7 | **Training Input:** 8 | The work assumes the text8.zip corpus for training. The corpus can be download from http://mattmahoney.net/dc/text8.zip 9 | 10 | **The Code:** 11 | The code is modified from the Skip-Gram model provided by Tensorflow. The code is based off the word2vec_basic.py from here: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/word2vec/word2vec_basic.py . The code uses onlly the CBOW model with negative sampling techniques as training method. For testing the accuracy of the model, aside from the vector algebra method provided with the code, one can also use the TSNE plot. To use the TSNE plot, you need to have the dev version of the scikit-learn, and have the project inside the scikit-learn folder for tsne to be able to show. Before plotting the tsne, change the tsne_plot flag from False to True. 12 | -------------------------------------------------------------------------------- /CBOW/TFCBOW.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "" 4 | }, 5 | "nbformat": 3, 6 | "nbformat_minor": 0, 7 | "worksheets": [ 8 | { 9 | "cells": [ 10 | { 11 | "cell_type": "code", 12 | "collapsed": false, 13 | "input": [ 14 | "#CBOW model version\n", 15 | "import collections\n", 16 | "import math\n", 17 | "import os\n", 18 | "import random\n", 19 | "import zipfile\n", 20 | "\n", 21 | "import numpy as np\n", 22 | "from six.moves import urllib\n", 23 | "from six.moves import xrange # pylint: disable=redefined-builtin\n", 24 | "import tensorflow as tf\n", 25 | "\n", 26 | "filename = 'text8.zip'\n", 27 | "\n", 28 | "# Read the data into a list of strings.\n", 29 | "def read_data(filename):\n", 30 | " \"\"\"Extract the first file enclosed in a zip file as a list of words\"\"\"\n", 31 | " with zipfile.ZipFile(filename) as f:\n", 32 | " data = f.read(f.namelist()[0]).split()\n", 33 | " return data\n", 34 | "\n", 35 | "words = read_data(filename)\n", 36 | "\n", 37 | "# convert words to lower cases\n", 38 | "for item in words:\n", 39 | " item.lower()\n", 40 | " \n", 41 | "print('Data size', len(words))\n", 42 | "\n", 43 | "# Step 2: Build the dictionary and replace rare words with UNK token.\n", 44 | "def build_dataset(words, min_cut_freq):\n", 45 | " count_org = [['UNK', -1]]\n", 46 | " count_org.extend(collections.Counter(words).most_common())\n", 47 | " count = [['UNK', -1]]\n", 48 | " for word, c in count_org:\n", 49 | " word_tuple = [word, c]\n", 50 | " if word == 'UNK': \n", 51 | " count[0][1] = c\n", 52 | " continue\n", 53 | " if c > min_cut_freq:\n", 54 | " count.append(word_tuple)\n", 55 | " dictionary = dict()\n", 56 | " for word, _ in count:\n", 57 | " dictionary[word] = len(dictionary)\n", 58 | " data = list()\n", 59 | " unk_count = 0\n", 60 | " for word in words:\n", 61 | " if word in dictionary:\n", 62 | " index = dictionary[word]\n", 63 | " else:\n", 64 | " index = 0 # dictionary['UNK']\n", 65 | " unk_count += 1\n", 66 | " data.append(index)\n", 67 | " count[0][1] = unk_count\n", 68 | " reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys()))\n", 69 | " return data, count, dictionary, reverse_dictionary\n", 70 | "\n", 71 | "min_cut_freq = 3 #cut off frequence smaller then 3 words\n", 72 | "data, count, dictionary, reverse_dictionary = build_dataset(words, min_cut_freq)\n", 73 | "vocabulary_size = len(reverse_dictionary)\n", 74 | "del words # Hint to reduce memory.\n", 75 | "print('Most common words (+UNK)', count[:5])\n", 76 | "print('Sample data', data[:20], [reverse_dictionary[i] for i in data[:20]])\n", 77 | "print('Vocab size: ', vocabulary_size)\n", 78 | "\n", 79 | "data_index = 0\n", 80 | "\n", 81 | "def generate_cbow_batch(batch_size, num_skips, skip_window):\n", 82 | " global data_index\n", 83 | " assert batch_size % num_skips == 0\n", 84 | " assert num_skips <= 2 * skip_window\n", 85 | " batch = np.ndarray(shape=(batch_size, num_skips), dtype=np.int32)\n", 86 | " labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)\n", 87 | " span = 2 * skip_window + 1 # [ skip_window target skip_window ]\n", 88 | " buffer = collections.deque(maxlen=span)\n", 89 | " for _ in range(span):\n", 90 | " buffer.append(data[data_index])\n", 91 | " data_index = (data_index + 1) % len(data)\n", 92 | " for i in range(batch_size):\n", 93 | " target = skip_window # target label at the center of the buffer\n", 94 | " targets_to_avoid = [ skip_window ]\n", 95 | " batch_temp = np.ndarray(shape=(num_skips), dtype=np.int32)\n", 96 | " for j in range(num_skips):\n", 97 | " while target in targets_to_avoid:\n", 98 | " target = random.randint(0, span - 1)\n", 99 | " targets_to_avoid.append(target)\n", 100 | " batch_temp[j] = buffer[target]\n", 101 | " batch[i] = batch_temp\n", 102 | " labels[i,0] = buffer[skip_window]\n", 103 | " buffer.append(data[data_index])\n", 104 | " data_index = (data_index + 1) % len(data)\n", 105 | " return batch, labels\n", 106 | "\n", 107 | "# Step 4: Build and train a skip-gram model.\n", 108 | "batch_size = 128\n", 109 | "embedding_size = 128 # Dimension of the embedding vector.\n", 110 | "skip_window = 1 # How many words to consider left and right.\n", 111 | "num_skips = 2 # How many times to reuse an input to generate a label.\n", 112 | "\n", 113 | "# We pick a random validation set to sample nearest neighbors. Here we limit the\n", 114 | "# validation samples to the words that have a low numeric ID, which by\n", 115 | "# construction are also the most frequent.\n", 116 | "valid_size = 16 # Random set of words to evaluate similarity on.\n", 117 | "valid_window = 100 # Only pick dev samples in the head of the distribution.\n", 118 | "valid_examples = np.random.choice(valid_window, valid_size, replace=False)\n", 119 | "num_sampled = 64 # Number of negative examples to sample.\n", 120 | "\n", 121 | "print valid_examples\n", 122 | "\n", 123 | "graph = tf.Graph()\n", 124 | "\n", 125 | "with graph.as_default():\n", 126 | "\n", 127 | " # Input data.\n", 128 | " train_inputs = tf.placeholder(tf.int32,shape=[batch_size, skip_window * 2])\n", 129 | " train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])\n", 130 | " valid_dataset = tf.constant(valid_examples, dtype=tf.int32)\n", 131 | "\n", 132 | " # Ops and variables pinned to the CPU because of missing GPU implementation\n", 133 | " with tf.device('/cpu:0'):\n", 134 | " # Look up embeddings for inputs.\n", 135 | " embeddings = tf.Variable(\n", 136 | " tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))\n", 137 | " # Embedding size is calculated as shape(train_inputs) + shape(embeddings)[1:]\n", 138 | " embed = tf.nn.embedding_lookup(embeddings, train_inputs)\n", 139 | " reduced_embed = tf.div(tf.reduce_sum(embed, 1), skip_window*2)\n", 140 | " # Construct the variables for the NCE loss\n", 141 | " nce_weights = tf.Variable(\n", 142 | " tf.truncated_normal([vocabulary_size, embedding_size],\n", 143 | " stddev=1.0 / math.sqrt(embedding_size)))\n", 144 | " nce_biases = tf.Variable(tf.zeros([vocabulary_size]))\n", 145 | "\n", 146 | " # Compute the average NCE loss for the batch.\n", 147 | " # tf.nce_loss automatically draws a new sample of the negative labels each\n", 148 | " # time we evaluate the loss.\n", 149 | " loss = tf.reduce_mean(\n", 150 | " tf.nn.nce_loss(nce_weights, nce_biases, reduced_embed, train_labels,\n", 151 | " num_sampled, vocabulary_size))\n", 152 | "\n", 153 | " # Construct the SGD optimizer using a learning rate of 1.0.\n", 154 | " optimizer = tf.train.GradientDescentOptimizer(1.0).minimize(loss)\n", 155 | "\n", 156 | " # Compute the cosine similarity between minibatch examples and all embeddings.\n", 157 | " norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))\n", 158 | " normalized_embeddings = embeddings / norm\n", 159 | " valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings, valid_dataset)\n", 160 | " similarity = tf.matmul( valid_embeddings, normalized_embeddings, transpose_b=True)\n", 161 | "\n", 162 | " # Add variable initializer.\n", 163 | " init = tf.initialize_all_variables()\n", 164 | "\n", 165 | "# Step 5: Begin training.\n", 166 | "num_steps = 100001\n", 167 | "\n", 168 | "with tf.Session(graph=graph) as session:\n", 169 | " # We must initialize all variables before we use them.\n", 170 | " init.run()\n", 171 | " print(\"Initialized\")\n", 172 | "\n", 173 | " average_loss = 0\n", 174 | " for step in xrange(num_steps):\n", 175 | " batch_inputs, batch_labels = generate_cbow_batch(\n", 176 | " batch_size, num_skips, skip_window)\n", 177 | " feed_dict = {train_inputs : batch_inputs, train_labels : batch_labels}\n", 178 | "\n", 179 | " # We perform one update step by evaluating the optimizer op (including it\n", 180 | " # in the list of returned values for session.run()\n", 181 | " _, loss_val = session.run([optimizer, loss], feed_dict=feed_dict)\n", 182 | " average_loss += loss_val\n", 183 | "\n", 184 | " if step % 2000 == 0:\n", 185 | " if step > 0:\n", 186 | " average_loss /= 2000\n", 187 | " # The average loss is an estimate of the loss over the last 2000 batches.\n", 188 | " print(\"Average loss at step \", step, \": \", average_loss)\n", 189 | " average_loss = 0\n", 190 | " \n", 191 | " # Note that this is expensive (~20% slowdown if computed every 500 steps)\n", 192 | " if step % 100000 == 0:\n", 193 | " sim = similarity.eval()\n", 194 | " for i in xrange(valid_size):\n", 195 | " valid_word = reverse_dictionary[valid_examples[i]]\n", 196 | " top_k = 8 # number of nearest neighbors\n", 197 | " nearest = (-sim[i, :]).argsort()[1:top_k+1]\n", 198 | " log_str = \"Nearest to %s:\" % valid_word\n", 199 | " for k in xrange(top_k):\n", 200 | " close_word = reverse_dictionary[nearest[k]]\n", 201 | " log_str = \"%s %s,\" % (log_str, close_word)\n", 202 | " print(log_str)\n", 203 | " final_embeddings = normalized_embeddings.eval()\n", 204 | "\n", 205 | "tsne_plot = False # Change the false to true to invoke the tsne graph\n", 206 | "\n", 207 | "# Step 6: Visualize the embeddings.\n", 208 | "def plot_with_labels(low_dim_embs, labels, filename='tsne_CBOW.png'):\n", 209 | " assert low_dim_embs.shape[0] >= len(labels), \"More labels than embeddings\"\n", 210 | " plt.figure(figsize=(18, 18)) #in inches\n", 211 | " for i, label in enumerate(labels):\n", 212 | " x, y = low_dim_embs[i,:]\n", 213 | " plt.scatter(x, y)\n", 214 | " plt.annotate(label,\n", 215 | " xy=(x, y),\n", 216 | " xytext=(5, 2),\n", 217 | " textcoords='offset points',\n", 218 | " ha='right',\n", 219 | " va='bottom')\n", 220 | "\n", 221 | " plt.savefig(filename)\n", 222 | "\n", 223 | "try:\n", 224 | " from sklearn.manifold import TSNE\n", 225 | " import matplotlib.pyplot as plt\n", 226 | "\n", 227 | " if(tsne_plot):\n", 228 | " tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)\n", 229 | " plot_only = 300\n", 230 | " low_dim_embs = tsne.fit_transform(final_embeddings[:plot_only,:])\n", 231 | " labels = [reverse_dictionary[i] for i in xrange(plot_only)]\n", 232 | " plot_with_labels(low_dim_embs, labels)\n", 233 | "\n", 234 | "except ImportError:\n", 235 | " print(\"Please install sklearn and matplotlib to visualize embeddings.\")" 236 | ], 237 | "language": "python", 238 | "metadata": {}, 239 | "outputs": [] 240 | }, 241 | { 242 | "cell_type": "code", 243 | "collapsed": false, 244 | "input": [ 245 | "# Testing final embedding\n", 246 | "input_dictionary = dict([(v,k) for (k,v) in reverse_dictionary.iteritems()])\n", 247 | "\n", 248 | "test_word_idx_a = input_dictionary.get('france') # replace france with other testing words such as king\n", 249 | "test_word_idx_b = input_dictionary.get('paris') # replace paris with other testing words such as man\n", 250 | "test_word_idx_c = input_dictionary.get('rome') # replace rome with other testing words such as woman\n", 251 | "\n", 252 | "a = final_embeddings[test_word_idx_a,:]\n", 253 | "b = final_embeddings[test_word_idx_b,:]\n", 254 | "c = final_embeddings[test_word_idx_c,:]\n", 255 | "ans = c + (b - a)\n", 256 | "\n", 257 | "similarity = final_embeddings.dot(ans)\n", 258 | "top_k = 4\n", 259 | "nearest = (-similarity).argsort()[0:top_k+1]\n", 260 | "print nearest\n", 261 | "for k in xrange(top_k+1):\n", 262 | " close_word = reverse_dictionary[nearest[k]]\n", 263 | " print(close_word)\n" 264 | ], 265 | "language": "python", 266 | "metadata": {}, 267 | "outputs": [] 268 | }, 269 | { 270 | "cell_type": "code", 271 | "collapsed": false, 272 | "input": [], 273 | "language": "python", 274 | "metadata": {}, 275 | "outputs": [] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "collapsed": false, 280 | "input": [], 281 | "language": "python", 282 | "metadata": {}, 283 | "outputs": [] 284 | } 285 | ], 286 | "metadata": {} 287 | } 288 | ] 289 | } -------------------------------------------------------------------------------- /DM/DM.md: -------------------------------------------------------------------------------- 1 | # DM 2 | The Tensorflow implementation of the DM model from Word2Vec 3 | 4 | **The Enviroment:** 5 | The file is working with Tensorflow version 0.7.1. Python version 2.7 and scikit-learn dev distribution package is needed as it has the TSNE algorithm implemented. To run the code, you may want to install ipython notebook to your machine as well. Also, for the Gensim file, you need Gensim library installed 6 | 7 | **Training Input:** 8 | The work assumes the wikipedia corpus for training. The corpus can be download from https://blog.lateral.io/2015/06/the-unknown-perils-of-mining-wikipedia/ 9 | 10 | **The Code:** 11 | The code is modified from the CBOW model previously made using Tensorflow. The base code can be find under the CBOW folder . The code uses only the DM model with negative sampling techniques as training method. For testing the accuracy of the model, I randomly choose a sentence and find its similar ones to see if it make sense. 12 | For the Gensim code, it is used straight as a black box tool from Gensim. 13 | -------------------------------------------------------------------------------- /DM/Gensim_Doc2Vec.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "" 4 | }, 5 | "nbformat": 3, 6 | "nbformat_minor": 0, 7 | "worksheets": [ 8 | { 9 | "cells": [ 10 | { 11 | "cell_type": "code", 12 | "collapsed": false, 13 | "input": [ 14 | "from gensim.models import doc2vec\n", 15 | "from collections import namedtuple\n", 16 | "\n", 17 | "import csv\n", 18 | "import re\n", 19 | "import string\n", 20 | "\n", 21 | "reader = csv.reader(open(\"wikipedia.csv\"))\n", 22 | "count = 0\n", 23 | "data = ''\n", 24 | "for row in reader:\n", 25 | " count = count + 1\n", 26 | " if count > 301:\n", 27 | " break\n", 28 | " else:\n", 29 | " data += row[1]\n", 30 | " \n", 31 | "sentenceEnders = re.compile('[.?!]')\n", 32 | "data_list = sentenceEnders.split(data)\n", 33 | "\n", 34 | "LabelDoc = namedtuple('LabelDoc', 'words tags')\n", 35 | "exclude = set(string.punctuation)\n", 36 | "all_docs = []\n", 37 | "count = 0\n", 38 | "for sen in data_list:\n", 39 | " word_list = sen.split()\n", 40 | " if len(word_list) < 3:\n", 41 | " continue\n", 42 | " tag = ['SEN_' + str(count)]\n", 43 | " count += 1\n", 44 | " sen = ''.join(ch for ch in sen if ch not in exclude)\n", 45 | " all_docs.append(LabelDoc(sen.split(), tag))\n", 46 | " \n", 47 | "print all_docs[0:10]\n", 48 | " \n", 49 | "model = doc2vec.Doc2Vec(alpha=0.025, min_alpha=0.025) # use fixed learning rate\n", 50 | "model.build_vocab(all_docs)\n", 51 | "for epoch in range(10):\n", 52 | " model.train(all_docs)\n", 53 | " model.alpha -= 0.002 # decrease the learning rate\n", 54 | " model.min_alpha = model.alpha # fix the learning rate, no decay \n", 55 | "\n", 56 | "model.save('my_model.doc2vec')" 57 | ], 58 | "language": "python", 59 | "metadata": {}, 60 | "outputs": [ 61 | { 62 | "output_type": "stream", 63 | "stream": "stdout", 64 | "text": [ 65 | "[LabelDoc(words=['Research', 'Design', 'and', 'Standards', 'Organization', 'The', 'Research', 'Design', 'and', 'Standards', 'Organisation', 'RDSO', 'is', 'an', 'ISO', '9001', 'research', 'and', 'development', 'organisation', 'under', 'the', 'Ministry', 'of', 'Railways', 'of', 'India', 'which', 'functions', 'as', 'a', 'technical', 'adviser', 'and', 'consultant', 'to', 'the', 'Railway', 'Board', 'the', 'Zonal', 'Railways', 'the', 'Railway', 'Production', 'Units', 'RITES', 'and', 'IRCON', 'International', 'in', 'respect', 'of', 'design', 'and', 'standardisation', 'of', 'railway', 'equipment', 'and', 'problems', 'related', 'to', 'railway', 'construction', 'operation', 'and', 'maintenance'], tags=['SEN_0']), LabelDoc(words=['To', 'enforce', 'standardisation', 'and', 'coordination', 'between', 'various', 'railway', 'systems', 'in', 'British', 'India', 'the', 'Indian', 'Railway', 'Conference', 'Association', 'IRCA', 'was', 'set', 'up', 'in', '1903'], tags=['SEN_1']), LabelDoc(words=['It', 'was', 'followed', 'by', 'the', 'establishment', 'of', 'the', 'Central', 'Standards', 'Office', 'CSO', 'in', '1930', 'for', 'preparation', 'of', 'designs', 'standards', 'and', 'specifications'], tags=['SEN_2']), LabelDoc(words=['However', 'till', 'independence', 'in', '1947', 'most', 'of', 'the', 'designs', 'and', 'manufacture', 'of', 'railway', 'equipments', 'was', 'entrusted', 'to', 'foreign', 'consultants'], tags=['SEN_3']), LabelDoc(words=['After', 'independence', 'a', 'new', 'organisation', 'called', 'Railway', 'Testing', 'and', 'Research', 'Centre', 'RTRC', 'was', 'set', 'up', 'in', '1952', 'at', 'Lucknow', 'for', 'undertaking', 'intensive', 'investigation', 'of', 'railway', 'problems', 'providing', 'basic', 'criteria', 'and', 'new', 'concepts', 'for', 'design', 'purposes', 'for', 'testing', 'prototypes', 'and', 'generally', 'assisting', 'in', 'finding', 'solutions', 'for', 'specific', 'problems'], tags=['SEN_4']), LabelDoc(words=['In', '1957', 'the', 'Central', 'Standards', 'Office', 'CSO', 'and', 'the', 'Railway', 'Testing', 'and', 'Research', 'Centre', 'RTRC', 'were', 'integrated', 'into', 'a', 'single', 'unit', 'named', 'Research', 'Designs', 'and', 'Standards', 'Organisation', 'RDSO', 'under', 'the', 'Ministry', 'of', 'Railways', 'with', 'its', 'headquarters', 'at', 'Manaknagar', 'Lucknow'], tags=['SEN_5']), LabelDoc(words=['The', 'status', 'of', 'RDSO', 'was', 'changed', 'from', 'an', 'Attached', 'Office', 'to', 'a', 'Zonal', 'Railway', 'on', 'April', '1', '2003', 'to', 'give', 'it', 'greater', 'flexibility', 'and', 'a', 'boost', 'to', 'the', 'research', 'and', 'development', 'activities'], tags=['SEN_6']), LabelDoc(words=['The', 'RDSO', 'is', 'headed', 'by', 'a', 'Director', 'General', 'who', 'ranks', 'with', 'a', 'General', 'Manager', 'of', 'a', 'Zonal', 'Railway'], tags=['SEN_7']), LabelDoc(words=['The', 'Director', 'General', 'is', 'assisted', 'by', 'an', 'Additional', 'Director', 'General', 'and', '23', 'Sr'], tags=['SEN_8']), LabelDoc(words=['Executive', 'Directors', 'and', 'Executive', 'Directors', 'who', 'are', 'in', 'charge', 'of', 'the', '27', 'directorates', 'Bridges', 'and', 'Structures', 'the', 'Centre', 'for', 'Advanced', 'Maintenance', 'Techlogy', 'AMTECH', 'Carriage', 'Geotechnical', 'Engineering', 'Testing', 'Track', 'Design', 'Medical', 'EMU', 'Power', 'Supply', 'Engine', 'Development', 'Finance', 'Accounts', 'Telecommunication', 'Quality', 'Assurance', 'Personnel', 'Works', 'PsychoTechnical', 'Research', 'Signal', 'Wagon', 'Design', 'Electric', 'Locomotive', 'Stores', 'Track', 'Machines', 'Monitoring', 'Traction', 'Installation', 'Energy', 'Management', 'Traffic', 'Metallurgical', 'Chemical', 'Motive', 'Power', 'and', 'Library', 'Publications'], tags=['SEN_9'])]\n" 66 | ] 67 | } 68 | ], 69 | "prompt_number": 1 70 | }, 71 | { 72 | "cell_type": "code", 73 | "collapsed": false, 74 | "input": [ 75 | "import random\n", 76 | "import numpy as np\n", 77 | "import string\n", 78 | "\n", 79 | "\n", 80 | "doc_id = np.random.randint(model.docvecs.count) \n", 81 | "print doc_id\n", 82 | "\n", 83 | "sims = model.docvecs.most_similar(doc_id, topn=model.docvecs.count)\n", 84 | "print('TARGET' , all_docs[doc_id].words)\n", 85 | "\n", 86 | "count = 0\n", 87 | "for i in sims:\n", 88 | " if count > 8:\n", 89 | " break\n", 90 | " pid = int(string.replace(i[0], \"SEN_\", \"\"))\n", 91 | " print(i[0],\": \", all_docs[pid].words)\n", 92 | " count += 1" 93 | ], 94 | "language": "python", 95 | "metadata": {}, 96 | "outputs": [ 97 | { 98 | "output_type": "stream", 99 | "stream": "stdout", 100 | "text": [ 101 | "11542\n", 102 | "('TARGET', ['Maldonado', 'holds', 'two', 'notable', 'knockout', 'victories', 'over', 'Maiquel', 'Falc\\xc3\\xa3o'])" 103 | ] 104 | }, 105 | { 106 | "output_type": "stream", 107 | "stream": "stdout", 108 | "text": [ 109 | "\n", 110 | "('SEN_8152', ': ', ['Maldonado', 'was', 'expected', 'to', 'face', 'Aaron', 'Rosa', 'at'])\n", 111 | "('SEN_8147', ': ', ['Notable', 'victories', 'from', 'this', 'period', 'include', 'Jessie', 'Gibbs', 'Vitor', 'Miranda', 'and', 'two', 'TKO', 'victories', 'over', 'Maiquel', 'Falc\\xc3\\xa3o'])\n", 112 | "('SEN_3945', ': ', ['Wright', 'Zoological', 'Museum', 'Emily', 'Graslie'])\n", 113 | "('SEN_10040', ': ', ['Green', 'Professor', 'John', 'B'])\n", 114 | "('SEN_6144', ': ', ['British', 'blues', 'boom'])\n", 115 | "('SEN_6045', ': ', ['Ohio', 'State', 'went', '6\\xe2\\x80\\x933', 'during', 'this', 'period'])\n", 116 | "('SEN_10981', ': ', ['Morrison', 'was', 'knocked', 'out', 'in', 'the', 'sixth', 'round'])\n", 117 | "('SEN_6295', ': ', ['Australia', 'and', 'New', 'Zealand'])\n", 118 | "('SEN_7465', ': ', ['1434', 'CE', 'called', 'QutbulMadar', 'and', 'is', 'centered', 'around', 'his', 'shrine', 'dargah', 'at', 'Makanpur', 'Kanpur', 'district', 'Uttar', 'Pradesh'])\n" 119 | ] 120 | } 121 | ], 122 | "prompt_number": 2 123 | }, 124 | { 125 | "cell_type": "code", 126 | "collapsed": false, 127 | "input": [], 128 | "language": "python", 129 | "metadata": {}, 130 | "outputs": [] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "collapsed": false, 135 | "input": [], 136 | "language": "python", 137 | "metadata": {}, 138 | "outputs": [] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "collapsed": false, 143 | "input": [], 144 | "language": "python", 145 | "metadata": {}, 146 | "outputs": [] 147 | } 148 | ], 149 | "metadata": {} 150 | } 151 | ] 152 | } -------------------------------------------------------------------------------- /DM/Tensorflow_DM.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "" 4 | }, 5 | "nbformat": 3, 6 | "nbformat_minor": 0, 7 | "worksheets": [ 8 | { 9 | "cells": [ 10 | { 11 | "cell_type": "code", 12 | "collapsed": false, 13 | "input": [ 14 | "from collections import namedtuple\n", 15 | "import csv\n", 16 | "import re\n", 17 | "import string\n", 18 | "\n", 19 | "import collections\n", 20 | "import math\n", 21 | "import os\n", 22 | "import random\n", 23 | "import zipfile\n", 24 | "\n", 25 | "import numpy as np\n", 26 | "from six.moves import urllib\n", 27 | "from six.moves import xrange # pylint: disable=redefined-builtin\n", 28 | "import tensorflow as tf\n", 29 | "\n", 30 | "reader = csv.reader(open(\"wikipedia.csv\"))\n", 31 | "count = 0\n", 32 | "data = ''\n", 33 | "for row in reader:\n", 34 | " count = count + 1\n", 35 | " if count > 301:\n", 36 | " break\n", 37 | " else:\n", 38 | " data += row[1].lower()\n", 39 | " \n", 40 | "sentenceEnders = re.compile('[.?!]')\n", 41 | "data_list = sentenceEnders.split(data)\n", 42 | "\n", 43 | "LabelDoc = namedtuple('LabelDoc', 'words tags')\n", 44 | "exclude = set(string.punctuation)\n", 45 | "all_docs = []\n", 46 | "count = 0\n", 47 | "for sen in data_list:\n", 48 | " word_list = sen.split()\n", 49 | " if len(word_list) < 3:\n", 50 | " continue\n", 51 | " tag = ['SEN_' + str(count)]\n", 52 | " count += 1\n", 53 | " sen = ''.join(ch for ch in sen if ch not in exclude)\n", 54 | " all_docs.append(LabelDoc(sen.split(), tag))\n", 55 | " \n", 56 | "# Step 2: Build the dictionary and replace rare words with UNK token.\n", 57 | "def build_dataset(input_data, min_cut_freq):\n", 58 | " words = []\n", 59 | " for i in input_data:\n", 60 | " for j in i.words:\n", 61 | " words.append(j)\n", 62 | " count_org = [['UNK', -1]]\n", 63 | " count_org.extend(collections.Counter(words).most_common())\n", 64 | " count = [['UNK', -1]]\n", 65 | " for word, c in count_org:\n", 66 | " word_tuple = [word, c]\n", 67 | " if word == 'UNK': \n", 68 | " count[0][1] = c\n", 69 | " continue\n", 70 | " if c > min_cut_freq:\n", 71 | " count.append(word_tuple)\n", 72 | " dictionary = dict()\n", 73 | " for word, _ in count:\n", 74 | " dictionary[word] = len(dictionary)\n", 75 | " data = []\n", 76 | " unk_count = 0\n", 77 | " for tup in input_data:\n", 78 | " word_data = []\n", 79 | " for word in tup.words:\n", 80 | " if word in dictionary:\n", 81 | " index = dictionary[word]\n", 82 | " else:\n", 83 | " index = 0\n", 84 | " unk_count += 1\n", 85 | " word_data.append(index)\n", 86 | " data.append(LabelDoc(word_data, tup.tags)) \n", 87 | " count[0][1] = unk_count\n", 88 | " reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys()))\n", 89 | " return data, count, dictionary, reverse_dictionary\n", 90 | "\n", 91 | "min_cut_freq = 3 #cut off frequence smaller then 3 words\n", 92 | "data, count, dictionary, reverse_dictionary = build_dataset(all_docs, min_cut_freq)\n", 93 | "vocabulary_size = len(reverse_dictionary)\n", 94 | "paragraph_size = len(all_docs)\n", 95 | "print('paragraph_size: ', paragraph_size)\n", 96 | "\n", 97 | "word_index = 0\n", 98 | "sentence_index = 0\n", 99 | "\n", 100 | "def generate_DM_batch(batch_size, num_skips, skip_window):\n", 101 | " global word_index\n", 102 | " global sentence_index\n", 103 | " assert batch_size % num_skips == 0\n", 104 | " assert num_skips <= 2 * skip_window\n", 105 | " batch = np.ndarray(shape=(batch_size, num_skips), dtype=np.int32)\n", 106 | " labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)\n", 107 | " para_labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32) # Paragraph Labels\n", 108 | " span = 2 * skip_window + 1 # [ skip_window target skip_window ]\n", 109 | " buffer = collections.deque(maxlen=span)\n", 110 | " for _ in range(span):\n", 111 | " buffer.append(data[sentence_index].words[word_index])\n", 112 | " sen_len = len(data[sentence_index].words)\n", 113 | " if sen_len - 1 == word_index: # reaching the end of a sentence\n", 114 | " word_index = 0\n", 115 | " sentence_index = (sentence_index + 1) % len(data)\n", 116 | " else: # increase the word_index by 1\n", 117 | " word_index += 1 \n", 118 | " for i in range(batch_size):\n", 119 | " target = skip_window # target label at the center of the buffer\n", 120 | " targets_to_avoid = [ skip_window ]\n", 121 | " batch_temp = np.ndarray(shape=(num_skips), dtype=np.int32)\n", 122 | " for j in range(num_skips):\n", 123 | " while target in targets_to_avoid:\n", 124 | " target = random.randint(0, span - 1)\n", 125 | " targets_to_avoid.append(target)\n", 126 | " batch_temp[j] = buffer[target]\n", 127 | " batch[i] = batch_temp\n", 128 | " labels[i,0] = buffer[skip_window]\n", 129 | " para_labels[i, 0] = sentence_index\n", 130 | " buffer.append(data[sentence_index].words[word_index])\n", 131 | " sen_len = len(data[sentence_index].words)\n", 132 | " if sen_len - 1 == word_index: # reaching the end of a sentence\n", 133 | " word_index = 0\n", 134 | " sentence_index = (sentence_index + 1) % len(data)\n", 135 | " else: # increase the word_index by 1\n", 136 | " word_index += 1 \n", 137 | " return batch, labels, para_labels\n", 138 | "\n", 139 | "# Step 4: Build and train a skip-gram model.\n", 140 | "\n", 141 | "batch_size = 128\n", 142 | "embedding_size = 128 # Dimension of the embedding vector.\n", 143 | "skip_window = 1 # How many words to consider left and right.\n", 144 | "num_skips = 2 # How many times to reuse an input to generate a label.\n", 145 | "\n", 146 | "# We pick a random validation set to sample nearest neighbors. Here we limit the\n", 147 | "# validation samples to the words that have a low numeric ID, which by\n", 148 | "# construction are also the most frequent.\n", 149 | "valid_size = 16 # Random set of words to evaluate similarity on.\n", 150 | "valid_window = 100 # Only pick dev samples in the head of the distribution.\n", 151 | "valid_examples = np.random.choice(valid_window, valid_size, replace=False)\n", 152 | "num_sampled = 64 # Number of negative examples to sample.\n", 153 | "\n", 154 | "print valid_examples\n", 155 | "\n", 156 | "graph = tf.Graph()\n", 157 | "\n", 158 | "with graph.as_default():\n", 159 | "\n", 160 | " # Input data.\n", 161 | " train_inputs = tf.placeholder(tf.int32,shape=[batch_size, skip_window * 2])\n", 162 | " train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])\n", 163 | " #paragraph vector place holder\n", 164 | " train_para_labels = tf.placeholder(tf.int32,shape=[batch_size, 1])\n", 165 | " valid_dataset = tf.constant(valid_examples, dtype=tf.int32)\n", 166 | "\n", 167 | " # Ops and variables pinned to the CPU because of missing GPU implementation\n", 168 | " with tf.device('/cpu:0'):\n", 169 | " # Look up embeddings for inputs.\n", 170 | " embeddings = tf.Variable(\n", 171 | " tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))\n", 172 | " # Embedding size is calculated as shape(train_inputs) + shape(embeddings)[1:]: [200, 4] + [vocab_size - 1, embedding_size]\n", 173 | " embed_word = tf.nn.embedding_lookup(embeddings, train_inputs)\n", 174 | " \n", 175 | " para_embeddings = tf.Variable(\n", 176 | " tf.random_uniform([paragraph_size, embedding_size], -1.0, 1.0))\n", 177 | " embed_para = tf.nn.embedding_lookup(para_embeddings, train_para_labels)\n", 178 | " \n", 179 | " embed = tf.concat(1, [embed_word, embed_para])\n", 180 | " \n", 181 | " reduced_embed = tf.div(tf.reduce_sum(embed, 1), skip_window*2 + 1)\n", 182 | " \n", 183 | "\n", 184 | " # Construct the variables for the NCE loss\n", 185 | " nce_weights = tf.Variable(\n", 186 | " tf.truncated_normal([vocabulary_size, embedding_size],\n", 187 | " stddev=1.0 / math.sqrt(embedding_size)))\n", 188 | " nce_biases = tf.Variable(tf.zeros([vocabulary_size]))\n", 189 | "\n", 190 | " # Compute the average NCE loss for the batch.\n", 191 | " # tf.nce_loss automatically draws a new sample of the negative labels each\n", 192 | " # time we evaluate the loss.\n", 193 | " loss = tf.reduce_mean(\n", 194 | " tf.nn.nce_loss(nce_weights, nce_biases, reduced_embed, train_labels,\n", 195 | " num_sampled, vocabulary_size))\n", 196 | "\n", 197 | " # Construct the SGD optimizer using a learning rate of 1.0.\n", 198 | " \n", 199 | " global_step = tf.Variable(0, trainable=False)\n", 200 | " starter_learning_rate = 1.0\n", 201 | " learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step,\n", 202 | " 1000, 0.009, staircase=True)\n", 203 | " optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)\n", 204 | " #optimizer = tf.train.GradientDescentOptimizer(1.0).minimize(loss)\n", 205 | "\n", 206 | " # Compute the cosine similarity between minibatch examples and all embeddings.\n", 207 | " norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))\n", 208 | " normalized_embeddings = embeddings / norm\n", 209 | " para_norm = tf.sqrt(tf.reduce_sum(tf.square(para_embeddings), 1, keep_dims=True))\n", 210 | " normalized_para_embeddings = para_embeddings / para_norm\n", 211 | " valid_embeddings = tf.nn.embedding_lookup(\n", 212 | " normalized_embeddings, valid_dataset)\n", 213 | " similarity = tf.matmul(\n", 214 | " valid_embeddings, normalized_embeddings, transpose_b=True)\n", 215 | "\n", 216 | " # Add variable initializer.\n", 217 | " init = tf.initialize_all_variables()\n", 218 | "\n", 219 | "# Step 5: Begin training.\n", 220 | "num_steps = 100001\n", 221 | "\n", 222 | "with tf.Session(graph=graph) as session:\n", 223 | " # We must initialize all variables before we use them.\n", 224 | " init.run()\n", 225 | " print(\"Initialized\")\n", 226 | "\n", 227 | " average_loss = 0\n", 228 | " for step in xrange(num_steps):\n", 229 | " batch_inputs, batch_labels, batch_para_labels = generate_DM_batch(\n", 230 | " batch_size, num_skips, skip_window)\n", 231 | " feed_dict = {train_inputs : batch_inputs, train_labels : batch_labels, train_para_labels: batch_para_labels}\n", 232 | "\n", 233 | " # We perform one update step by evaluating the optimizer op (including it\n", 234 | " # in the list of returned values for session.run()\n", 235 | " _, loss_val = session.run([optimizer, loss], feed_dict=feed_dict)\n", 236 | " average_loss += loss_val\n", 237 | "\n", 238 | " if step % 2000 == 0:\n", 239 | " if step > 0:\n", 240 | " average_loss /= 2000\n", 241 | " # The average loss is an estimate of the loss over the last 2000 batches.\n", 242 | " print(\"Average loss at step \", step, \": \", average_loss)\n", 243 | " average_loss = 0\n", 244 | " \n", 245 | " # Note that this is expensive (~20% slowdown if computed every 500 steps)\n", 246 | " if step % 100000 == 0:\n", 247 | " sim = similarity.eval()\n", 248 | " for i in xrange(valid_size):\n", 249 | " valid_word = reverse_dictionary[valid_examples[i]]\n", 250 | " top_k = 8 # number of nearest neighbors\n", 251 | " nearest = (-sim[i, :]).argsort()[1:top_k+1]\n", 252 | " log_str = \"Nearest to %s:\" % valid_word\n", 253 | " for k in xrange(top_k):\n", 254 | " close_word = reverse_dictionary[nearest[k]]\n", 255 | " log_str = \"%s %s,\" % (log_str, close_word)\n", 256 | " print(log_str)\n", 257 | " final_embeddings = normalized_embeddings.eval()\n", 258 | " final_para_embeddings = normalized_para_embeddings.eval()\n" 259 | ], 260 | "language": "python", 261 | "metadata": {}, 262 | "outputs": [ 263 | { 264 | "output_type": "stream", 265 | "stream": "stdout", 266 | "text": [ 267 | "('paragraph_size: ', 18681)\n", 268 | "[85 88 9 23 55 77 75 22 41 45 58 27 65 7 20 95]\n", 269 | "Initialized" 270 | ] 271 | }, 272 | { 273 | "output_type": "stream", 274 | "stream": "stdout", 275 | "text": [ 276 | "\n", 277 | "('Average loss at step ', 0, ': ', 201.97166442871094)\n", 278 | "Nearest to under: corporations, finals, ahmad, margin, survivors, holidays, intelligentsia, ghk,\n", 279 | "Nearest to them: sky, grandmother, dozen, dylans, dreams, resource, generation, rafferty,\n", 280 | "Nearest to as: 5000, make, success, situated, latin, violating, exposures, sizes,\n", 281 | "Nearest to are: describing, menu, elimination, meanings, save, 7\u00a0mm, rereleased, itself,\n", 282 | "Nearest to music: speculated, relationship, fazal, ti, circuit, jackson, disclosure, coolies,\n", 283 | "Nearest to no: valid, boziz\u00e9, setting, estate, f, descriptive, airborne, franchise,\n", 284 | "Nearest to being: video, strategies, expeditionary, 1957, million, policyholders, hedgehog, perfect,\n", 285 | "Nearest to were: advanced, targeting, electric, acknowledging, editorial, hazard, found, election,\n", 286 | "Nearest to been: basque, finance, southwestern, soundtracks, neighbors, kiddgilchrist, lattre, audiences,\n", 287 | "Nearest to two: missions, 62\u00a0mm, victim, dating, republic, douglas, another, expelled,\n", 288 | "Nearest to into: album, tired, wind, trial, hebrew, hospital, gamesradar, el,\n", 289 | "Nearest to had: channel, endorsement, actual, shipments, shift, innocents, wmv, ansett,\n", 290 | "Nearest to over: recipient, freyja, generated, et, helm, spirit, signalled, institution,\n", 291 | "Nearest to was: armies, arises, gahutu, worldwide, commissioner, shopping, supposedly, hejaz,\n", 292 | "Nearest to an: lifestyle, magnitude, fruit, hejaz, moscow, tusk, eurasian, defensive,\n", 293 | "Nearest to national: abuses, scope, stiefvater, defeating, firth, switzerland, denmarknorway, owl,\n", 294 | "('Average loss at step ', 2000, ': ', 41.711844046592709)" 295 | ] 296 | }, 297 | { 298 | "output_type": "stream", 299 | "stream": "stdout", 300 | "text": [ 301 | "\n", 302 | "('Average loss at step ', 4000, ': ', 8.9432319018840793)" 303 | ] 304 | }, 305 | { 306 | "output_type": "stream", 307 | "stream": "stdout", 308 | "text": [ 309 | "\n", 310 | "('Average loss at step ', 6000, ': ', 6.0333830397129056)" 311 | ] 312 | }, 313 | { 314 | "output_type": "stream", 315 | "stream": "stdout", 316 | "text": [ 317 | "\n", 318 | "('Average loss at step ', 8000, ': ', 5.1415713019371037)" 319 | ] 320 | }, 321 | { 322 | "output_type": "stream", 323 | "stream": "stdout", 324 | "text": [ 325 | "\n", 326 | "('Average loss at step ', 10000, ': ', 4.9031829937696454)" 327 | ] 328 | }, 329 | { 330 | "output_type": "stream", 331 | "stream": "stdout", 332 | "text": [ 333 | "\n", 334 | "('Average loss at step ', 12000, ': ', 4.7128568677902223)" 335 | ] 336 | }, 337 | { 338 | "output_type": "stream", 339 | "stream": "stdout", 340 | "text": [ 341 | "\n", 342 | "('Average loss at step ', 14000, ': ', 4.5480673760175705)" 343 | ] 344 | }, 345 | { 346 | "output_type": "stream", 347 | "stream": "stdout", 348 | "text": [ 349 | "\n", 350 | "('Average loss at step ', 16000, ': ', 4.458307715535164)" 351 | ] 352 | }, 353 | { 354 | "output_type": "stream", 355 | "stream": "stdout", 356 | "text": [ 357 | "\n", 358 | "('Average loss at step ', 18000, ': ', 4.3834808651208874)" 359 | ] 360 | }, 361 | { 362 | "output_type": "stream", 363 | "stream": "stdout", 364 | "text": [ 365 | "\n", 366 | "('Average loss at step ', 20000, ': ', 4.2765810445547103)" 367 | ] 368 | }, 369 | { 370 | "output_type": "stream", 371 | "stream": "stdout", 372 | "text": [ 373 | "\n", 374 | "('Average loss at step ', 22000, ': ', 4.2320210508108138)" 375 | ] 376 | }, 377 | { 378 | "output_type": "stream", 379 | "stream": "stdout", 380 | "text": [ 381 | "\n", 382 | "('Average loss at step ', 24000, ': ', 4.1741518561840056)" 383 | ] 384 | }, 385 | { 386 | "output_type": "stream", 387 | "stream": "stdout", 388 | "text": [ 389 | "\n", 390 | "('Average loss at step ', 26000, ': ', 4.1001323657035824)" 391 | ] 392 | }, 393 | { 394 | "output_type": "stream", 395 | "stream": "stdout", 396 | "text": [ 397 | "\n", 398 | "('Average loss at step ', 28000, ': ', 4.0654780670404431)" 399 | ] 400 | }, 401 | { 402 | "output_type": "stream", 403 | "stream": "stdout", 404 | "text": [ 405 | "\n", 406 | "('Average loss at step ', 30000, ': ', 4.0245166748762129)" 407 | ] 408 | }, 409 | { 410 | "output_type": "stream", 411 | "stream": "stdout", 412 | "text": [ 413 | "\n", 414 | "('Average loss at step ', 32000, ': ', 3.9608777524232863)" 415 | ] 416 | }, 417 | { 418 | "output_type": "stream", 419 | "stream": "stdout", 420 | "text": [ 421 | "\n", 422 | "('Average loss at step ', 34000, ': ', 3.9320812761783599)" 423 | ] 424 | }, 425 | { 426 | "output_type": "stream", 427 | "stream": "stdout", 428 | "text": [ 429 | "\n", 430 | "('Average loss at step ', 36000, ': ', 3.899176519393921)" 431 | ] 432 | }, 433 | { 434 | "output_type": "stream", 435 | "stream": "stdout", 436 | "text": [ 437 | "\n", 438 | "('Average loss at step ', 38000, ': ', 3.8463603563308717)" 439 | ] 440 | }, 441 | { 442 | "output_type": "stream", 443 | "stream": "stdout", 444 | "text": [ 445 | "\n", 446 | "('Average loss at step ', 40000, ': ', 3.8174253811836243)" 447 | ] 448 | }, 449 | { 450 | "output_type": "stream", 451 | "stream": "stdout", 452 | "text": [ 453 | "\n", 454 | "('Average loss at step ', 42000, ': ', 3.7981517140865324)" 455 | ] 456 | }, 457 | { 458 | "output_type": "stream", 459 | "stream": "stdout", 460 | "text": [ 461 | "\n", 462 | "('Average loss at step ', 44000, ': ', 3.7393631111383439)" 463 | ] 464 | }, 465 | { 466 | "output_type": "stream", 467 | "stream": "stdout", 468 | "text": [ 469 | "\n", 470 | "('Average loss at step ', 46000, ': ', 3.7229966558814049)" 471 | ] 472 | }, 473 | { 474 | "output_type": "stream", 475 | "stream": "stdout", 476 | "text": [ 477 | "\n", 478 | "('Average loss at step ', 48000, ': ', 3.7046754992008211)" 479 | ] 480 | }, 481 | { 482 | "output_type": "stream", 483 | "stream": "stdout", 484 | "text": [ 485 | "\n", 486 | "('Average loss at step ', 50000, ': ', 3.646863640129566)" 487 | ] 488 | }, 489 | { 490 | "output_type": "stream", 491 | "stream": "stdout", 492 | "text": [ 493 | "\n", 494 | "('Average loss at step ', 52000, ': ', 3.6413631702065468)" 495 | ] 496 | }, 497 | { 498 | "output_type": "stream", 499 | "stream": "stdout", 500 | "text": [ 501 | "\n", 502 | "('Average loss at step ', 54000, ': ', 3.6209043350815775)" 503 | ] 504 | }, 505 | { 506 | "output_type": "stream", 507 | "stream": "stdout", 508 | "text": [ 509 | "\n", 510 | "('Average loss at step ', 56000, ': ', 3.569687003850937)" 511 | ] 512 | }, 513 | { 514 | "output_type": "stream", 515 | "stream": "stdout", 516 | "text": [ 517 | "\n", 518 | "('Average loss at step ', 58000, ': ', 3.553534373819828)" 519 | ] 520 | }, 521 | { 522 | "output_type": "stream", 523 | "stream": "stdout", 524 | "text": [ 525 | "\n", 526 | "('Average loss at step ', 60000, ': ', 3.5446372628211975)" 527 | ] 528 | }, 529 | { 530 | "output_type": "stream", 531 | "stream": "stdout", 532 | "text": [ 533 | "\n", 534 | "('Average loss at step ', 62000, ': ', 3.5031969383358956)" 535 | ] 536 | }, 537 | { 538 | "output_type": "stream", 539 | "stream": "stdout", 540 | "text": [ 541 | "\n", 542 | "('Average loss at step ', 64000, ': ', 3.4825612263083459)" 543 | ] 544 | }, 545 | { 546 | "output_type": "stream", 547 | "stream": "stdout", 548 | "text": [ 549 | "\n", 550 | "('Average loss at step ', 66000, ': ', 3.4744566411972047)" 551 | ] 552 | }, 553 | { 554 | "output_type": "stream", 555 | "stream": "stdout", 556 | "text": [ 557 | "\n", 558 | "('Average loss at step ', 68000, ': ', 3.4289468609094618)" 559 | ] 560 | }, 561 | { 562 | "output_type": "stream", 563 | "stream": "stdout", 564 | "text": [ 565 | "\n", 566 | "('Average loss at step ', 70000, ': ', 3.4168871909379961)" 567 | ] 568 | }, 569 | { 570 | "output_type": "stream", 571 | "stream": "stdout", 572 | "text": [ 573 | "\n", 574 | "('Average loss at step ', 72000, ': ', 3.401187175989151)" 575 | ] 576 | }, 577 | { 578 | "output_type": "stream", 579 | "stream": "stdout", 580 | "text": [ 581 | "\n", 582 | "('Average loss at step ', 74000, ': ', 3.3689084451794624)" 583 | ] 584 | }, 585 | { 586 | "output_type": "stream", 587 | "stream": "stdout", 588 | "text": [ 589 | "\n", 590 | "('Average loss at step ', 76000, ': ', 3.353499243438244)" 591 | ] 592 | }, 593 | { 594 | "output_type": "stream", 595 | "stream": "stdout", 596 | "text": [ 597 | "\n", 598 | "('Average loss at step ', 78000, ': ', 3.3294198623895643)" 599 | ] 600 | }, 601 | { 602 | "output_type": "stream", 603 | "stream": "stdout", 604 | "text": [ 605 | "\n", 606 | "('Average loss at step ', 80000, ': ', 3.3177369711399076)" 607 | ] 608 | }, 609 | { 610 | "output_type": "stream", 611 | "stream": "stdout", 612 | "text": [ 613 | "\n", 614 | "('Average loss at step ', 82000, ': ', 3.2866159972548483)" 615 | ] 616 | }, 617 | { 618 | "output_type": "stream", 619 | "stream": "stdout", 620 | "text": [ 621 | "\n", 622 | "('Average loss at step ', 84000, ': ', 3.2780201415419579)" 623 | ] 624 | }, 625 | { 626 | "output_type": "stream", 627 | "stream": "stdout", 628 | "text": [ 629 | "\n", 630 | "('Average loss at step ', 86000, ': ', 3.2592564346790316)" 631 | ] 632 | }, 633 | { 634 | "output_type": "stream", 635 | "stream": "stdout", 636 | "text": [ 637 | "\n", 638 | "('Average loss at step ', 88000, ': ', 3.2311905499100684)" 639 | ] 640 | }, 641 | { 642 | "output_type": "stream", 643 | "stream": "stdout", 644 | "text": [ 645 | "\n", 646 | "('Average loss at step ', 90000, ': ', 3.2194142993688581)" 647 | ] 648 | }, 649 | { 650 | "output_type": "stream", 651 | "stream": "stdout", 652 | "text": [ 653 | "\n", 654 | "('Average loss at step ', 92000, ': ', 3.2090786912441254)" 655 | ] 656 | }, 657 | { 658 | "output_type": "stream", 659 | "stream": "stdout", 660 | "text": [ 661 | "\n", 662 | "('Average loss at step ', 94000, ': ', 3.1804380759000779)" 663 | ] 664 | }, 665 | { 666 | "output_type": "stream", 667 | "stream": "stdout", 668 | "text": [ 669 | "\n", 670 | "('Average loss at step ', 96000, ': ', 3.1685028538107871)" 671 | ] 672 | }, 673 | { 674 | "output_type": "stream", 675 | "stream": "stdout", 676 | "text": [ 677 | "\n", 678 | "('Average loss at step ', 98000, ': ', 3.1540236313343049)" 679 | ] 680 | }, 681 | { 682 | "output_type": "stream", 683 | "stream": "stdout", 684 | "text": [ 685 | "\n", 686 | "('Average loss at step ', 100000, ': ', 3.123783304512501)" 687 | ] 688 | }, 689 | { 690 | "output_type": "stream", 691 | "stream": "stdout", 692 | "text": [ 693 | "\n", 694 | "Nearest to under: against, in, onto, transformed, rolled, recognize, ahmad, vocal,\n", 695 | "Nearest to them: him, facilitate, agents, bioshock, rich, fins, conservatism, things,\n", 696 | "Nearest to as: uses, 5000, allegedly, virtually, coin, rds, carol, identifies,\n", 697 | "Nearest to are: were, have, daytime, processes, been, photographic, is, be,\n", 698 | "Nearest to music: obligatory, salt, design, sufficiently, application, susan, reform, mecca,\n", 699 | "Nearest to no: any, problematic, franchise, studies, colleges, primes, gun, protective,\n", 700 | "Nearest to being: neutropenia, steadily, named, soon, contest, resided, ceremony, difficult,\n", 701 | "Nearest to were: are, been, be, advanced, marion, acknowledging, assert, authoritative,\n", 702 | "Nearest to been: become, always, be, stole, were, starship, zealands, often,\n", 703 | "Nearest to two: three, several, converges, six, four, dating, few, following,\n", 704 | "Nearest to into: through, lisbon, trial, collaborative, el, amidst, sheung, steamship,\n", 705 | "Nearest to had: has, agreed, have, racing, enormous, was, looks, began,\n", 706 | "Nearest to over: generated, freyja, graduate, contest, inmates, recipient, lawyer, fanny,\n", 707 | "Nearest to was: became, is, arises, had, been, supposedly, be, did,\n", 708 | "Nearest to an: jackie, lifestyle, roller, disturbing, fond, well, grape, fruit,\n", 709 | "Nearest to national: particle, abuses, guidance, sure, tennessee, subaru, furthermore, dated,\n" 710 | ] 711 | } 712 | ], 713 | "prompt_number": 2 714 | }, 715 | { 716 | "cell_type": "code", 717 | "collapsed": false, 718 | "input": [ 719 | "import random\n", 720 | "# Testing final embedding\n", 721 | "input_dictionary = dict([(v,k) for (k,v) in reverse_dictionary.iteritems()])\n", 722 | "\n", 723 | "test_word_idx_a = np.random.randint(0, len(input_dictionary) - 1)\n", 724 | "\n", 725 | "a = final_embeddings[test_word_idx_a,:]\n", 726 | "\n", 727 | "similarity = final_embeddings.dot(a)\n", 728 | "\n", 729 | "top_k = 9\n", 730 | "nearest = (-similarity).argsort()[0:top_k]\n", 731 | "\n", 732 | "for k in range(top_k):\n", 733 | " close_word = reverse_dictionary[nearest[k]]\n", 734 | " print(close_word)\n", 735 | "\n", 736 | "doc_id = 8136\n", 737 | "\n", 738 | "para_embedding = final_para_embeddings[doc_id, :]\n", 739 | "print doc_id\n", 740 | "similarity_para = final_para_embeddings.dot(para_embedding)\n", 741 | "nearest_para = (-similarity_para).argsort()[0:top_k]\n", 742 | "for k in range(top_k):\n", 743 | " close_sen = all_docs[nearest_para[k]]\n", 744 | " print(close_sen)" 745 | ], 746 | "language": "python", 747 | "metadata": {}, 748 | "outputs": [ 749 | { 750 | "output_type": "stream", 751 | "stream": "stdout", 752 | "text": [ 753 | "offers\n", 754 | "doubt\n", 755 | "found\n", 756 | "contain\n", 757 | "pedlar\n", 758 | "suggested\n", 759 | "brother\n", 760 | "session\n", 761 | "innocents\n", 762 | "8136\n", 763 | "LabelDoc(words=['maldonado', 'holds', 'two', 'notable', 'knockout', 'victories', 'over', 'maiquel', 'falc\\xc3\\xa3o'], tags=['SEN_8136'])\n", 764 | "LabelDoc(words=['malinowski', 'emphasized', 'the', 'importance', 'of', 'detailed', 'participant', 'observation', 'and', 'argued', 'that', 'anthropologists', 'must', 'have', 'daily', 'contact', 'with', 'their', 'informants', 'if', 'they', 'are', 'to', 'adequately', 'record', 'the', 'imponderabilia', 'of', 'everyday', 'life', 'that', 'are', 'so', 'important', 'to', 'understanding', 'a', 'different', 'culture'], tags=['SEN_13976'])\n", 765 | "LabelDoc(words=['arjuna', 'and', 'the', 'kir\\xc4\\x81ta', 'simultaneously', 'shoot', 'an', 'arrow', 'at', 'the', 'boar', 'and', 'kill', 'it'], tags=['SEN_8491'])\n", 766 | "LabelDoc(words=['the', 'united', 'states', '1935', '\\xe2\\x80\\x93', 'nira', 'is', 'unconstitutional'], tags=['SEN_2768'])\n", 767 | "LabelDoc(words=['as', 'an', 'axiom', 'of', 'probability'], tags=['SEN_3555'])\n", 768 | "LabelDoc(words=['the', 'studio', 'believed', 'it', 'held', 'the', 'rights', 'to', 'produce', 'the', 'film', 'or', 'at', 'least', 'distribute', 'it', 'no', 'matter', 'how', 'many', 'studios', 'watchmen', 'passed', 'through', 'and', 'sought', 'to', 'block', 'its', 'release'], tags=['SEN_1207'])\n", 769 | "LabelDoc(words=['the', 'albums', 'first', 'track', 'light', 'of', 'the', 'morning', 'was', 'featured', 'in', 'a', 'television', 'ad', 'for', 'the', '2011', 'ford', 'mustang'], tags=['SEN_5349'])\n", 770 | "LabelDoc(words=['they', 'represented', 'themselves', 'with', 'the', 'color', 'green', 'and', 'many', 'members', 'wore', 'dreadlocks', 'as', 'a', 'symbol', 'of', 'freedom'], tags=['SEN_3851'])\n", 771 | "LabelDoc(words=['they', 'occur', 'between', 'sea', 'level', 'and', '2000m', 'in', 'humid', 'regions'], tags=['SEN_10052'])\n" 772 | ] 773 | } 774 | ], 775 | "prompt_number": 3 776 | }, 777 | { 778 | "cell_type": "code", 779 | "collapsed": false, 780 | "input": [], 781 | "language": "python", 782 | "metadata": {}, 783 | "outputs": [] 784 | }, 785 | { 786 | "cell_type": "code", 787 | "collapsed": false, 788 | "input": [], 789 | "language": "python", 790 | "metadata": {}, 791 | "outputs": [] 792 | } 793 | ], 794 | "metadata": {} 795 | } 796 | ] 797 | } -------------------------------------------------------------------------------- /RCNN/2flowers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edwardbi/DeepLearningModels/4e0c5e055f9ce3f17bb9290e7523d567e901d984/RCNN/2flowers.zip -------------------------------------------------------------------------------- /RCNN/RCNN.md: -------------------------------------------------------------------------------- 1 | # RCNN 2 | The Tensorflow with tflearn implementation of the RCNN model 3 | 4 | **The Enviroment:** 5 | The file is working with Tensorflow version 0.7.1. Python version 2.7 and scikit-learn dev distribution package. Also need to install the tflearn project from github at https://github.com/tflearn/tflearn. Notice that the tflearn requires Tensorflow version at least 0.7.0. For better compatiblity, you may want to install Tensorflow 0.8.0 or above. Finally, you need the 6 | selective search project from python. You may get it by pip install selectivesearch. 7 | 8 | **Training Input:** 9 | The work trains with the 17 flowers dataset. The data can be obtained here: https://github.com/ck196/tensorflow-alexnet. Download the project and use the 17flowers.tar.gz file's data as the training data. 10 | 11 | **The Code:** 12 | There are four files in the code. The train_alexnet.py uses the 17flowers image folder with the train_list.txt file to perform the pre-training of the Alexnet. This is the file that need to be run first. After it generates the model_save.model file, you can run the fine_tune_RCNN.py file, which fine-tunes the model with the 2flowers dataset as well as the two txt files in 13 | the svm_train folder. Up on its completion, a file named fine_tune_model_save.model is created as the fine-tuned model result. Finally, you may run the RCNN_output.py file to classify images. In the main part of the file, change the image name to test on different images. Now, I fine-tuned the image with only two categories of flowers, namely, the pansy and the tulip. 14 | -------------------------------------------------------------------------------- /RCNN/RCNN_output.py: -------------------------------------------------------------------------------- 1 | from __future__ import division, print_function, absolute_import 2 | import pickle 3 | import numpy as np 4 | import selectivesearch 5 | from PIL import Image 6 | import matplotlib.pyplot as plt 7 | import matplotlib.patches as mpatches 8 | import os.path 9 | import skimage 10 | from sklearn import svm 11 | import preprocessing_RCNN as prep 12 | import os 13 | 14 | import tflearn 15 | from tflearn.layers.core import input_data, dropout, fully_connected 16 | from tflearn.layers.conv import conv_2d, max_pool_2d 17 | from tflearn.layers.normalization import local_response_normalization 18 | from tflearn.layers.estimator import regression 19 | 20 | # Load testing images 21 | def resize_image(in_image, new_width, new_height, out_image=None, 22 | resize_mode=Image.ANTIALIAS): 23 | img = in_image.resize((new_width, new_height), resize_mode) 24 | if out_image: 25 | img.save(out_image) 26 | return img 27 | 28 | def pil_to_nparray(pil_image): 29 | pil_image.load() 30 | return np.asarray(pil_image, dtype="float32") 31 | 32 | def image_proposal(img_path): 33 | img = skimage.io.imread(img_path) 34 | img_lbl, regions = selectivesearch.selective_search( 35 | img, scale=500, sigma=0.9, min_size=10) 36 | candidates = set() 37 | images = [] 38 | vertices = [] 39 | for r in regions: 40 | # excluding same rectangle (with different segments) 41 | if r['rect'] in candidates: 42 | continue 43 | if r['size'] < 220: 44 | continue 45 | # resize to 224 * 224 for input 46 | proposal_img, proposal_vertice = prep.clip_pic(img, r['rect']) 47 | # Delete Empty array 48 | if len(proposal_img) == 0: 49 | continue 50 | # Ignore things contain 0 or not C contiguous array 51 | x, y, w, h = r['rect'] 52 | if w == 0 or h == 0: 53 | continue 54 | # Check if any 0-dimension exist 55 | [a, b, c] = np.shape(proposal_img) 56 | if a == 0 or b == 0 or c == 0: 57 | continue 58 | im = Image.fromarray(proposal_img) 59 | resized_proposal_img = resize_image(im, 224, 224) 60 | candidates.add(r['rect']) 61 | img_float = pil_to_nparray(resized_proposal_img) 62 | images.append(img_float) 63 | vertices.append(r['rect']) 64 | return images, vertices 65 | 66 | # Load training images 67 | def generate_single_svm_train(one_class_train_file): 68 | trainfile = one_class_train_file 69 | savepath = one_class_train_file.replace('txt', 'pkl') 70 | images = [] 71 | Y = [] 72 | if os.path.isfile(savepath): 73 | print("restoring svm dataset " + savepath) 74 | images, Y = prep.load_from_pkl(savepath) 75 | else: 76 | print("loading svm dataset " + savepath) 77 | images, Y = prep.load_train_proposals(trainfile, 2, threshold=0.3, svm=True, save=True, save_path=savepath) 78 | return images, Y 79 | 80 | # Use a already trained alexnet with the last layer redesigned 81 | def create_alexnet(num_classes, restore=False): 82 | # Building 'AlexNet' 83 | network = input_data(shape=[None, 224, 224, 3]) 84 | network = conv_2d(network, 96, 11, strides=4, activation='relu') 85 | network = max_pool_2d(network, 3, strides=2) 86 | network = local_response_normalization(network) 87 | network = conv_2d(network, 256, 5, activation='relu') 88 | network = max_pool_2d(network, 3, strides=2) 89 | network = local_response_normalization(network) 90 | network = conv_2d(network, 384, 3, activation='relu') 91 | network = conv_2d(network, 384, 3, activation='relu') 92 | network = conv_2d(network, 256, 3, activation='relu') 93 | network = max_pool_2d(network, 3, strides=2) 94 | network = local_response_normalization(network) 95 | network = fully_connected(network, 4096, activation='tanh') 96 | network = dropout(network, 0.5) 97 | network = fully_connected(network, 4096, activation='tanh') 98 | network = regression(network, optimizer='momentum', 99 | loss='categorical_crossentropy', 100 | learning_rate=0.001) 101 | return network 102 | 103 | # Construct cascade svms 104 | 105 | def train_svms(train_file_folder, model): 106 | listings = os.listdir(train_file_folder) 107 | svms = [] 108 | for train_file in listings: 109 | if "pkl" in train_file: 110 | continue 111 | X, Y = generate_single_svm_train(train_file_folder+train_file) 112 | train_features = [] 113 | for i in X: 114 | feats = model.predict([i]) 115 | train_features.append(feats[0]) 116 | print("feature dimension") 117 | print(np.shape(train_features)) 118 | clf = svm.LinearSVC() 119 | print("fit svm") 120 | clf.fit(train_features, Y) 121 | svms.append(clf) 122 | return svms 123 | 124 | if __name__ == '__main__': 125 | train_file_folder = 'svm_train/' 126 | img_path = 'testimg7.jpg' 127 | imgs, verts = image_proposal(img_path) 128 | net = create_alexnet(3) 129 | model = tflearn.DNN(net) 130 | model.load('fine_tune_model_save.model') 131 | svms = train_svms(train_file_folder, model) 132 | print("Done fitting svms") 133 | features = model.predict(imgs) 134 | print("predict image:") 135 | print(np.shape(features)) 136 | results = [] 137 | results_label = [] 138 | count = 0 139 | for f in features: 140 | for i in svms: 141 | pred = i.predict(f) 142 | print(pred) 143 | if pred[0] != 0: 144 | results.append(verts[count]) 145 | results_label.append(pred[0]) 146 | count += 1 147 | print("result:") 148 | print(results) 149 | print("result label:") 150 | print(results_label) 151 | img = skimage.io.imread(img_path) 152 | fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(6, 6)) 153 | ax.imshow(img) 154 | for x, y, w, h in results: 155 | rect = mpatches.Rectangle( 156 | (x, y), w, h, fill=False, edgecolor='red', linewidth=1) 157 | ax.add_patch(rect) 158 | 159 | plt.show() 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | -------------------------------------------------------------------------------- /RCNN/fine_tune_RCNN.py: -------------------------------------------------------------------------------- 1 | from __future__ import division, print_function, absolute_import 2 | import pickle 3 | import numpy as np 4 | import selectivesearch 5 | from PIL import Image 6 | import os.path 7 | import skimage 8 | import preprocessing_RCNN as prep 9 | 10 | import tflearn 11 | from tflearn.layers.core import input_data, dropout, fully_connected 12 | from tflearn.layers.conv import conv_2d, max_pool_2d 13 | from tflearn.layers.normalization import local_response_normalization 14 | from tflearn.layers.estimator import regression 15 | 16 | # Use a already trained alexnet with the last layer redesigned 17 | def create_alexnet(num_classes, restore=False): 18 | # Building 'AlexNet' 19 | network = input_data(shape=[None, 224, 224, 3]) 20 | network = conv_2d(network, 96, 11, strides=4, activation='relu') 21 | network = max_pool_2d(network, 3, strides=2) 22 | network = local_response_normalization(network) 23 | network = conv_2d(network, 256, 5, activation='relu') 24 | network = max_pool_2d(network, 3, strides=2) 25 | network = local_response_normalization(network) 26 | network = conv_2d(network, 384, 3, activation='relu') 27 | network = conv_2d(network, 384, 3, activation='relu') 28 | network = conv_2d(network, 256, 3, activation='relu') 29 | network = max_pool_2d(network, 3, strides=2) 30 | network = local_response_normalization(network) 31 | network = fully_connected(network, 4096, activation='tanh') 32 | network = dropout(network, 0.5) 33 | network = fully_connected(network, 4096, activation='tanh') 34 | network = dropout(network, 0.5) 35 | network = fully_connected(network, num_classes, activation='softmax', restore=restore) 36 | network = regression(network, optimizer='momentum', 37 | loss='categorical_crossentropy', 38 | learning_rate=0.001) 39 | return network 40 | 41 | def fine_tune_Alexnet(network, X, Y): 42 | # Training 43 | model = tflearn.DNN(network, checkpoint_path='rcnn_model_alexnet', 44 | max_checkpoints=1, tensorboard_verbose=2, tensorboard_dir='output_RCNN') 45 | if os.path.isfile('fine_tune_model_save.model'): 46 | print("Loading the fine tuned model") 47 | model.load('fine_tune_model_save.model') 48 | elif os.path.isfile('model_save.model'): 49 | print("Loading the alexnet") 50 | model.load('model_save.model') 51 | else: 52 | print("No file to load, error") 53 | return False 54 | model.fit(X, Y, n_epoch=10, validation_set=0.1, shuffle=True, 55 | show_metric=True, batch_size=64, snapshot_step=200, 56 | snapshot_epoch=False, run_id='alexnet_rcnnflowers2') # epoch = 1000 57 | # Save the model 58 | model.save('fine_tune_model_save.model') 59 | 60 | if __name__ == '__main__': 61 | if os.path.isfile('dataset.pkl'): 62 | print("Loading Data") 63 | X, Y = prep.load_from_pkl('dataset.pkl') 64 | else: 65 | print("Reading Data") 66 | X, Y = prep.load_train_proposals('refine_list.txt', 2, save=True) 67 | print("DONE") 68 | restore = False 69 | if os.path.isfile('fine_tune_model_save.model'): 70 | restore = True 71 | print("Continue training") 72 | net = create_alexnet(3, restore) 73 | fine_tune_Alexnet(net,X,Y) 74 | 75 | 76 | -------------------------------------------------------------------------------- /RCNN/preprocessing_RCNN.py: -------------------------------------------------------------------------------- 1 | from __future__ import division, print_function, absolute_import 2 | import pickle 3 | import numpy as np 4 | import selectivesearch 5 | from PIL import Image 6 | import os.path 7 | import skimage 8 | 9 | def pil_to_nparray(pil_image): 10 | pil_image.load() 11 | return np.asarray(pil_image, dtype="float32") 12 | 13 | def resize_image(in_image, new_width, new_height, out_image=None, 14 | resize_mode=Image.ANTIALIAS): 15 | img = in_image.resize((new_width, new_height), resize_mode) 16 | if out_image: 17 | img.save(out_image) 18 | return img 19 | 20 | # IOU Part 1 21 | def if_intersection(xmin_a, xmax_a, ymin_a, ymax_a, xmin_b, xmax_b, ymin_b, ymax_b): 22 | if_intersect = False 23 | if xmin_a < xmax_b <= xmax_a and (ymin_a < ymax_b <= ymax_a or ymin_a <= ymin_b < ymax_a): 24 | if_intersect = True 25 | elif xmin_a <= xmin_b < xmax_a and (ymin_a < ymax_b <= ymax_a or ymin_a <= ymin_b < ymax_a): 26 | if_intersect = True 27 | elif xmin_b < xmax_a <= xmax_b and (ymin_b < ymax_a <= ymax_b or ymin_b <= ymin_a < ymax_b): 28 | if_intersect = True 29 | elif xmin_b <= xmin_a < xmax_b and (ymin_b < ymax_a <= ymax_b or ymin_b <= ymin_a < ymax_b): 30 | if_intersect = True 31 | else: 32 | return False 33 | if if_intersect == True: 34 | x_sorted_list = sorted([xmin_a, xmax_a, xmin_b, xmax_b]) 35 | y_sorted_list = sorted([ymin_a, ymax_a, ymin_b, ymax_b]) 36 | x_intersect_w = x_sorted_list[2] - x_sorted_list[1] 37 | y_intersect_h = y_sorted_list[2] - y_sorted_list[1] 38 | area_inter = x_intersect_w * y_intersect_h 39 | return area_inter 40 | 41 | # IOU Part 2 42 | def IOU(ver1, vertice2): 43 | # vertices in four points 44 | vertice1 = [ver1[0], ver1[1], ver1[0]+ver1[2], ver1[1]+ver1[3]] 45 | area_inter = if_intersection(vertice1[0], vertice1[2], vertice1[1], vertice1[3], vertice2[0], vertice2[2], vertice2[1], vertice2[3]) 46 | if area_inter: 47 | area_1 = ver1[2] * ver1[3] 48 | area_2 = vertice2[4] * vertice2[5] 49 | iou = float(area_inter) / (area_1 + area_2 - area_inter) 50 | return iou 51 | return False 52 | 53 | # Clip Image 54 | def clip_pic(img, rect): 55 | x = rect[0] 56 | y = rect[1] 57 | w = rect[2] 58 | h = rect[3] 59 | x_1 = x + w 60 | y_1 = y + h 61 | return img[x:x_1, y:y_1, :], [x, y, x_1, y_1, w, h] 62 | 63 | # Read in data and save data for Alexnet 64 | def load_train_proposals(datafile, num_clss, threshold = 0.5, svm = False, save=False, save_path='dataset.pkl'): 65 | train_list = open(datafile,'r') 66 | labels = [] 67 | images = [] 68 | for line in train_list: 69 | tmp = line.strip().split(' ') 70 | # tmp0 = image address 71 | # tmp1 = label 72 | # tmp2 = rectangle vertices 73 | img = skimage.io.imread(tmp[0]) 74 | img_lbl, regions = selectivesearch.selective_search( 75 | img, scale=500, sigma=0.9, min_size=10) 76 | candidates = set() 77 | print(tmp[0]) 78 | for r in regions: 79 | # excluding same rectangle (with different segments) 80 | if r['rect'] in candidates: 81 | continue 82 | if r['size'] < 220: 83 | continue 84 | # resize to 224 * 224 for input 85 | proposal_img, proposal_vertice = clip_pic(img, r['rect']) 86 | # Delete Empty array 87 | if len(proposal_img) == 0: 88 | continue 89 | # Ignore things contain 0 or not C contiguous array 90 | x, y, w, h = r['rect'] 91 | if w == 0 or h == 0: 92 | continue 93 | # Check if any 0-dimension exist 94 | [a, b, c] = np.shape(proposal_img) 95 | if a == 0 or b == 0 or c == 0: 96 | continue 97 | im = Image.fromarray(proposal_img) 98 | resized_proposal_img = resize_image(im, 224, 224) 99 | candidates.add(r['rect']) 100 | img_float = pil_to_nparray(resized_proposal_img) 101 | images.append(img_float) 102 | # IOU 103 | ref_rect = tmp[2].split(',') 104 | ref_rect_int = [int(i) for i in ref_rect] 105 | iou_val = IOU(ref_rect_int, proposal_vertice) 106 | # labels, let 0 represent default class, which is background 107 | index = int(tmp[1]) 108 | if svm == False: 109 | label = np.zeros(num_clss+1) 110 | if iou_val < threshold: 111 | label[0] = 1 112 | else: 113 | label[index] = 1 114 | labels.append(label) 115 | else: 116 | if iou_val < threshold: 117 | labels.append(0) 118 | else: 119 | labels.append(index) 120 | if save: 121 | pickle.dump((images, labels), open(save_path, 'wb')) 122 | return images, labels 123 | 124 | def load_from_pkl(dataset_file): 125 | X, Y = pickle.load(open(dataset_file, 'rb')) 126 | return X,Y 127 | -------------------------------------------------------------------------------- /RCNN/refine_list.txt: -------------------------------------------------------------------------------- 1 | 2flowers/jpg/0/image_0561.jpg 2 90,126,350,434 2 | 2flowers/jpg/0/image_0562.jpg 2 160,15,340,415 3 | 2flowers/jpg/0/image_0563.jpg 2 42,25,408,405 4 | 2flowers/jpg/0/image_0564.jpg 2 66,48,384,318 5 | 2flowers/jpg/0/image_0565.jpg 2 17,208,363,354 6 | 2flowers/jpg/0/image_0566.jpg 2 42,20,398,310 7 | 2flowers/jpg/0/image_0567.jpg 2 40,60,410,290 8 | 2flowers/jpg/0/image_0568.jpg 2 40,60,360,380 9 | 2flowers/jpg/0/image_0573.jpg 2 140,80,360,360 10 | 2flowers/jpg/0/image_0574.jpg 2 50,80,360,360 11 | 2flowers/jpg/0/image_0575.jpg 2 140,80,400,350 12 | 2flowers/jpg/0/image_0576.jpg 2 140,80,400,350 13 | 2flowers/jpg/0/image_0577.jpg 2 100,200,400,200 14 | 2flowers/jpg/0/image_0578.jpg 2 200,100,380,160 15 | 2flowers/jpg/0/image_0579.jpg 2 20,180,520,180 16 | 2flowers/jpg/0/image_0580.jpg 2 20,10,420,450 17 | 2flowers/jpg/0/image_0581.jpg 2 60,100,400,300 18 | 2flowers/jpg/0/image_0582.jpg 2 152,35,398,435 19 | 2flowers/jpg/0/image_0583.jpg 2 40,45,380,315 20 | 2flowers/jpg/0/image_0584.jpg 2 40,45,410,395 21 | 2flowers/jpg/0/image_0608.jpg 2 200,40,200,250 22 | 2flowers/jpg/0/image_0610.jpg 2 180,105,300,300 23 | 2flowers/jpg/0/image_0613.jpg 2 180,105,150,150 24 | 2flowers/jpg/0/image_0617.jpg 2 70,120,210,280 25 | 2flowers/jpg/0/image_0627.jpg 2 90,80,230,150 26 | 2flowers/jpg/0/image_0630.jpg 2 270,140,165,108 27 | 2flowers/jpg/0/image_0633.jpg 2 140,200,120,120 28 | 2flowers/jpg/0/image_0634.jpg 2 220,180,220,150 29 | 2flowers/jpg/0/image_0636.jpg 2 220,88,200,232 30 | 2flowers/jpg/0/image_0637.jpg 2 290,42,110,158 31 | 2flowers/jpg/1/image_1281.jpg 1 90,66,330,374 32 | 2flowers/jpg/1/image_1282.jpg 1 90,35,330,425 33 | 2flowers/jpg/1/image_1283.jpg 1 90,45,316,435 34 | 2flowers/jpg/1/image_1284.jpg 1 26,16,408,574 35 | 2flowers/jpg/1/image_1285.jpg 1 50,55,375,420 36 | 2flowers/jpg/1/image_1286.jpg 1 40,63,347,487 37 | 2flowers/jpg/1/image_1287.jpg 1 60,80,340,360 38 | 2flowers/jpg/1/image_1288.jpg 1 34,27,403,535 39 | 2flowers/jpg/1/image_1289.jpg 1 40,60,360,380 40 | 2flowers/jpg/1/image_1290.jpg 1 36,5,399,525 41 | 2flowers/jpg/1/image_1291.jpg 1 40,105,298,371 42 | 2flowers/jpg/1/image_1292.jpg 1 40,60,362,460 43 | 2flowers/jpg/1/image_1293.jpg 1 40,20,394,512 44 | 2flowers/jpg/1/image_1294.jpg 1 84,30,329,470 45 | 2flowers/jpg/1/image_1295.jpg 1 93,92,330,420 46 | 2flowers/jpg/1/image_1296.jpg 1 64,250,379,466 47 | 2flowers/jpg/1/image_1297.jpg 1 106,40,277,392 48 | 2flowers/jpg/1/image_1298.jpg 1 72,60,348,540 49 | 2flowers/jpg/1/image_1305.jpg 1 50,17,350,543 50 | 2flowers/jpg/1/image_1306.jpg 1 103,100,308,379 51 | 2flowers/jpg/1/image_1307.jpg 1 27,28,403,572 52 | 2flowers/jpg/1/image_1314.jpg 1 30,14,420,516 53 | 2flowers/jpg/1/image_1315.jpg 1 38,80,332,426 54 | 2flowers/jpg/1/image_1316.jpg 1 72,32,354,568 55 | 2flowers/jpg/1/image_1317.jpg 1 86,70,264,421 56 | 2flowers/jpg/1/image_1318.jpg 1 95,110,285,430 57 | 2flowers/jpg/1/image_1319.jpg 1 111,50,273,405 58 | 2flowers/jpg/1/image_1323.jpg 1 16,122,465,502 59 | 2flowers/jpg/1/image_1324.jpg 1 40,60,380,440 60 | 2flowers/jpg/1/image_1325.jpg 1 114,37,242,356 61 | -------------------------------------------------------------------------------- /RCNN/svm_train/1.txt: -------------------------------------------------------------------------------- 1 | 2flowers/jpg/1/image_1281.jpg 1 90,66,330,374 2 | 2flowers/jpg/1/image_1282.jpg 1 90,35,330,425 3 | 2flowers/jpg/1/image_1283.jpg 1 90,45,316,435 4 | 2flowers/jpg/1/image_1284.jpg 1 26,16,408,574 5 | 2flowers/jpg/1/image_1285.jpg 1 50,55,375,420 6 | 2flowers/jpg/1/image_1286.jpg 1 40,63,347,487 7 | 2flowers/jpg/1/image_1287.jpg 1 60,80,340,360 8 | 2flowers/jpg/1/image_1288.jpg 1 34,27,403,535 9 | 2flowers/jpg/1/image_1289.jpg 1 40,60,360,380 10 | 2flowers/jpg/1/image_1290.jpg 1 36,5,399,525 11 | 2flowers/jpg/1/image_1291.jpg 1 40,105,298,371 12 | 2flowers/jpg/1/image_1292.jpg 1 40,60,362,460 13 | 2flowers/jpg/1/image_1293.jpg 1 40,20,394,512 14 | 2flowers/jpg/1/image_1294.jpg 1 84,30,329,470 15 | 2flowers/jpg/1/image_1295.jpg 1 93,92,330,420 16 | 2flowers/jpg/1/image_1296.jpg 1 64,250,379,466 17 | 2flowers/jpg/1/image_1297.jpg 1 106,40,277,392 18 | 2flowers/jpg/1/image_1298.jpg 1 72,60,348,540 19 | 2flowers/jpg/1/image_1305.jpg 1 50,17,350,543 20 | 2flowers/jpg/1/image_1306.jpg 1 103,100,308,379 21 | 2flowers/jpg/1/image_1307.jpg 1 27,28,403,572 22 | 2flowers/jpg/1/image_1314.jpg 1 30,14,420,516 23 | 2flowers/jpg/1/image_1315.jpg 1 38,80,332,426 24 | 2flowers/jpg/1/image_1316.jpg 1 72,32,354,568 25 | 2flowers/jpg/1/image_1317.jpg 1 86,70,264,421 26 | 2flowers/jpg/1/image_1318.jpg 1 95,110,285,430 27 | 2flowers/jpg/1/image_1319.jpg 1 111,50,273,405 28 | 2flowers/jpg/1/image_1323.jpg 1 16,122,465,502 29 | 2flowers/jpg/1/image_1324.jpg 1 40,60,380,440 30 | 2flowers/jpg/1/image_1325.jpg 1 114,37,242,356 31 | -------------------------------------------------------------------------------- /RCNN/svm_train/2.txt: -------------------------------------------------------------------------------- 1 | 2flowers/jpg/0/image_0561.jpg 2 90,126,350,434 2 | 2flowers/jpg/0/image_0562.jpg 2 160,15,340,415 3 | 2flowers/jpg/0/image_0563.jpg 2 42,25,408,405 4 | 2flowers/jpg/0/image_0564.jpg 2 66,48,384,318 5 | 2flowers/jpg/0/image_0565.jpg 2 17,208,363,354 6 | 2flowers/jpg/0/image_0566.jpg 2 42,20,398,310 7 | 2flowers/jpg/0/image_0567.jpg 2 40,60,410,290 8 | 2flowers/jpg/0/image_0568.jpg 2 40,60,360,380 9 | 2flowers/jpg/0/image_0573.jpg 2 140,80,360,360 10 | 2flowers/jpg/0/image_0574.jpg 2 50,80,360,360 11 | 2flowers/jpg/0/image_0575.jpg 2 140,80,400,350 12 | 2flowers/jpg/0/image_0576.jpg 2 140,80,400,350 13 | 2flowers/jpg/0/image_0577.jpg 2 100,200,400,200 14 | 2flowers/jpg/0/image_0578.jpg 2 200,100,380,160 15 | 2flowers/jpg/0/image_0579.jpg 2 20,180,520,180 16 | 2flowers/jpg/0/image_0580.jpg 2 20,10,420,450 17 | 2flowers/jpg/0/image_0581.jpg 2 60,100,400,300 18 | 2flowers/jpg/0/image_0582.jpg 2 152,35,398,435 19 | 2flowers/jpg/0/image_0583.jpg 2 40,45,380,315 20 | 2flowers/jpg/0/image_0584.jpg 2 40,45,410,395 21 | 2flowers/jpg/0/image_0608.jpg 2 200,40,200,250 22 | 2flowers/jpg/0/image_0610.jpg 2 180,105,300,300 23 | 2flowers/jpg/0/image_0613.jpg 2 180,105,150,150 24 | 2flowers/jpg/0/image_0617.jpg 2 70,120,210,280 25 | 2flowers/jpg/0/image_0627.jpg 2 90,80,230,150 26 | 2flowers/jpg/0/image_0630.jpg 2 270,140,165,108 27 | 2flowers/jpg/0/image_0633.jpg 2 140,200,120,120 28 | 2flowers/jpg/0/image_0634.jpg 2 220,180,220,150 29 | 2flowers/jpg/0/image_0636.jpg 2 220,88,200,232 30 | 2flowers/jpg/0/image_0637.jpg 2 290,42,110,158 31 | -------------------------------------------------------------------------------- /RCNN/train_alexnet.py: -------------------------------------------------------------------------------- 1 | from __future__ import division, print_function, absolute_import 2 | import pickle 3 | import numpy as np 4 | from PIL import Image 5 | import os.path 6 | 7 | import tflearn 8 | from tflearn.layers.core import input_data, dropout, fully_connected 9 | from tflearn.layers.conv import conv_2d, max_pool_2d 10 | from tflearn.layers.normalization import local_response_normalization 11 | from tflearn.layers.estimator import regression 12 | 13 | 14 | def load_image(img_path): 15 | img = Image.open(img_path) 16 | return img 17 | 18 | 19 | def resize_image(in_image, new_width, new_height, out_image=None, 20 | resize_mode=Image.ANTIALIAS): 21 | img = in_image.resize((new_width, new_height), resize_mode) 22 | if out_image: 23 | img.save(out_image) 24 | return img 25 | 26 | 27 | def pil_to_nparray(pil_image): 28 | pil_image.load() 29 | return np.asarray(pil_image, dtype="float32") 30 | 31 | 32 | def load_data(datafile, num_clss, save=False, save_path='dataset.pkl'): 33 | train_list = open(datafile,'r') 34 | labels = [] 35 | images = [] 36 | for line in train_list: 37 | tmp = line.strip().split(' ') 38 | fpath = tmp[0] 39 | print(fpath) 40 | img = load_image(fpath) 41 | img = resize_image(img,224,224) 42 | np_img = pil_to_nparray(img) 43 | images.append(np_img) 44 | 45 | index = int(tmp[1]) 46 | label = np.zeros(num_clss) 47 | label[index] = 1 48 | labels.append(label) 49 | if save: 50 | pickle.dump((images, labels), open(save_path, 'wb')) 51 | return images, labels 52 | 53 | 54 | def load_from_pkl(dataset_file): 55 | X, Y = pickle.load(open(dataset_file, 'rb')) 56 | return X,Y 57 | 58 | 59 | def create_alexnet(num_classes): 60 | # Building 'AlexNet' 61 | network = input_data(shape=[None, 224, 224, 3]) 62 | network = conv_2d(network, 96, 11, strides=4, activation='relu') 63 | network = max_pool_2d(network, 3, strides=2) 64 | network = local_response_normalization(network) 65 | network = conv_2d(network, 256, 5, activation='relu') 66 | network = max_pool_2d(network, 3, strides=2) 67 | network = local_response_normalization(network) 68 | network = conv_2d(network, 384, 3, activation='relu') 69 | network = conv_2d(network, 384, 3, activation='relu') 70 | network = conv_2d(network, 256, 3, activation='relu') 71 | network = max_pool_2d(network, 3, strides=2) 72 | network = local_response_normalization(network) 73 | network = fully_connected(network, 4096, activation='tanh') 74 | network = dropout(network, 0.5) 75 | network = fully_connected(network, 4096, activation='tanh') 76 | network = dropout(network, 0.5) 77 | network = fully_connected(network, num_classes, activation='softmax') 78 | network = regression(network, optimizer='momentum', 79 | loss='categorical_crossentropy', 80 | learning_rate=0.001) 81 | return network 82 | 83 | 84 | def train(network, X, Y): 85 | # Training 86 | model = tflearn.DNN(network, checkpoint_path='model_alexnet', 87 | max_checkpoints=1, tensorboard_verbose=2, tensorboard_dir='output') 88 | if os.path.isfile('model_save.model'): 89 | model.load('model_save.model') 90 | model.fit(X, Y, n_epoch=100, validation_set=0.1, shuffle=True, 91 | show_metric=True, batch_size=64, snapshot_step=200, 92 | snapshot_epoch=False, run_id='alexnet_oxflowers17') # epoch = 1000 93 | # Save the model 94 | model.save('model_save.model') 95 | 96 | def predict(network, modelfile,images): 97 | model = tflearn.DNN(network) 98 | model.load(modelfile) 99 | return model.predict(images) 100 | 101 | if __name__ == '__main__': 102 | X, Y = load_data('train_list.txt', 17) 103 | #X, Y = load_from_pkl('dataset.pkl') 104 | net = create_alexnet(17) 105 | train(net,X,Y) 106 | 107 | -------------------------------------------------------------------------------- /RCNN/train_list.txt: -------------------------------------------------------------------------------- 1 | 17flowers/jpg/13/image_1093.jpg 13 2 | 17flowers/jpg/13/image_1094.jpg 13 3 | 17flowers/jpg/13/image_1098.jpg 13 4 | 17flowers/jpg/13/image_1104.jpg 13 5 | 17flowers/jpg/13/image_1100.jpg 13 6 | 17flowers/jpg/13/image_1110.jpg 13 7 | 17flowers/jpg/13/image_1080.jpg 13 8 | 17flowers/jpg/13/image_1092.jpg 13 9 | 17flowers/jpg/13/image_1084.jpg 13 10 | 17flowers/jpg/13/image_1103.jpg 13 11 | 17flowers/jpg/13/image_1064.jpg 13 12 | 17flowers/jpg/13/image_1089.jpg 13 13 | 17flowers/jpg/13/image_1055.jpg 13 14 | 17flowers/jpg/13/image_1085.jpg 13 15 | 17flowers/jpg/13/image_1095.jpg 13 16 | 17flowers/jpg/13/image_1048.jpg 13 17 | 17flowers/jpg/13/image_1120.jpg 13 18 | 17flowers/jpg/13/image_1061.jpg 13 19 | 17flowers/jpg/13/image_1074.jpg 13 20 | 17flowers/jpg/13/image_1045.jpg 13 21 | 17flowers/jpg/13/image_1063.jpg 13 22 | 17flowers/jpg/13/image_1076.jpg 13 23 | 17flowers/jpg/13/image_1097.jpg 13 24 | 17flowers/jpg/13/image_1072.jpg 13 25 | 17flowers/jpg/13/image_1102.jpg 13 26 | 17flowers/jpg/13/image_1115.jpg 13 27 | 17flowers/jpg/13/image_1049.jpg 13 28 | 17flowers/jpg/13/image_1088.jpg 13 29 | 17flowers/jpg/13/image_1062.jpg 13 30 | 17flowers/jpg/13/image_1091.jpg 13 31 | 17flowers/jpg/13/image_1046.jpg 13 32 | 17flowers/jpg/13/image_1077.jpg 13 33 | 17flowers/jpg/13/image_1119.jpg 13 34 | 17flowers/jpg/13/image_1087.jpg 13 35 | 17flowers/jpg/13/image_1071.jpg 13 36 | 17flowers/jpg/13/image_1106.jpg 13 37 | 17flowers/jpg/13/image_1052.jpg 13 38 | 17flowers/jpg/13/image_1079.jpg 13 39 | 17flowers/jpg/13/image_1041.jpg 13 40 | 17flowers/jpg/13/image_1107.jpg 13 41 | 17flowers/jpg/13/image_1069.jpg 13 42 | 17flowers/jpg/13/image_1068.jpg 13 43 | 17flowers/jpg/13/image_1047.jpg 13 44 | 17flowers/jpg/13/image_1053.jpg 13 45 | 17flowers/jpg/13/image_1070.jpg 13 46 | 17flowers/jpg/13/image_1109.jpg 13 47 | 17flowers/jpg/13/image_1058.jpg 13 48 | 17flowers/jpg/13/image_1059.jpg 13 49 | 17flowers/jpg/13/image_1113.jpg 13 50 | 17flowers/jpg/13/image_1082.jpg 13 51 | 17flowers/jpg/13/image_1105.jpg 13 52 | 17flowers/jpg/13/image_1067.jpg 13 53 | 17flowers/jpg/13/image_1066.jpg 13 54 | 17flowers/jpg/13/image_1118.jpg 13 55 | 17flowers/jpg/13/image_1051.jpg 13 56 | 17flowers/jpg/13/image_1116.jpg 13 57 | 17flowers/jpg/13/image_1075.jpg 13 58 | 17flowers/jpg/13/image_1096.jpg 13 59 | 17flowers/jpg/13/image_1057.jpg 13 60 | 17flowers/jpg/13/image_1108.jpg 13 61 | 17flowers/jpg/13/image_1111.jpg 13 62 | 17flowers/jpg/13/image_1042.jpg 13 63 | 17flowers/jpg/13/image_1065.jpg 13 64 | 17flowers/jpg/13/image_1054.jpg 13 65 | 17flowers/jpg/13/image_1101.jpg 13 66 | 17flowers/jpg/13/image_1086.jpg 13 67 | 17flowers/jpg/13/image_1112.jpg 13 68 | 17flowers/jpg/13/image_1056.jpg 13 69 | 17flowers/jpg/13/image_1099.jpg 13 70 | 17flowers/jpg/13/image_1073.jpg 13 71 | 17flowers/jpg/13/image_1083.jpg 13 72 | 17flowers/jpg/13/image_1078.jpg 13 73 | 17flowers/jpg/13/image_1050.jpg 13 74 | 17flowers/jpg/13/image_1044.jpg 13 75 | 17flowers/jpg/13/image_1043.jpg 13 76 | 17flowers/jpg/13/image_1060.jpg 13 77 | 17flowers/jpg/13/image_1081.jpg 13 78 | 17flowers/jpg/13/image_1090.jpg 13 79 | 17flowers/jpg/13/image_1117.jpg 13 80 | 17flowers/jpg/13/image_1114.jpg 13 81 | 17flowers/jpg/10/image_0836.jpg 10 82 | 17flowers/jpg/10/image_0825.jpg 10 83 | 17flowers/jpg/10/image_0864.jpg 10 84 | 17flowers/jpg/10/image_0848.jpg 10 85 | 17flowers/jpg/10/image_0833.jpg 10 86 | 17flowers/jpg/10/image_0839.jpg 10 87 | 17flowers/jpg/10/image_0878.jpg 10 88 | 17flowers/jpg/10/image_0821.jpg 10 89 | 17flowers/jpg/10/image_0847.jpg 10 90 | 17flowers/jpg/10/image_0834.jpg 10 91 | 17flowers/jpg/10/image_0849.jpg 10 92 | 17flowers/jpg/10/image_0829.jpg 10 93 | 17flowers/jpg/10/image_0872.jpg 10 94 | 17flowers/jpg/10/image_0805.jpg 10 95 | 17flowers/jpg/10/image_0823.jpg 10 96 | 17flowers/jpg/10/image_0871.jpg 10 97 | 17flowers/jpg/10/image_0809.jpg 10 98 | 17flowers/jpg/10/image_0852.jpg 10 99 | 17flowers/jpg/10/image_0853.jpg 10 100 | 17flowers/jpg/10/image_0874.jpg 10 101 | 17flowers/jpg/10/image_0843.jpg 10 102 | 17flowers/jpg/10/image_0830.jpg 10 103 | 17flowers/jpg/10/image_0840.jpg 10 104 | 17flowers/jpg/10/image_0876.jpg 10 105 | 17flowers/jpg/10/image_0879.jpg 10 106 | 17flowers/jpg/10/image_0867.jpg 10 107 | 17flowers/jpg/10/image_0858.jpg 10 108 | 17flowers/jpg/10/image_0841.jpg 10 109 | 17flowers/jpg/10/image_0818.jpg 10 110 | 17flowers/jpg/10/image_0803.jpg 10 111 | 17flowers/jpg/10/image_0869.jpg 10 112 | 17flowers/jpg/10/image_0838.jpg 10 113 | 17flowers/jpg/10/image_0807.jpg 10 114 | 17flowers/jpg/10/image_0851.jpg 10 115 | 17flowers/jpg/10/image_0817.jpg 10 116 | 17flowers/jpg/10/image_0856.jpg 10 117 | 17flowers/jpg/10/image_0857.jpg 10 118 | 17flowers/jpg/10/image_0845.jpg 10 119 | 17flowers/jpg/10/image_0804.jpg 10 120 | 17flowers/jpg/10/image_0844.jpg 10 121 | 17flowers/jpg/10/image_0820.jpg 10 122 | 17flowers/jpg/10/image_0826.jpg 10 123 | 17flowers/jpg/10/image_0816.jpg 10 124 | 17flowers/jpg/10/image_0861.jpg 10 125 | 17flowers/jpg/10/image_0866.jpg 10 126 | 17flowers/jpg/10/image_0812.jpg 10 127 | 17flowers/jpg/10/image_0863.jpg 10 128 | 17flowers/jpg/10/image_0862.jpg 10 129 | 17flowers/jpg/10/image_0850.jpg 10 130 | 17flowers/jpg/10/image_0860.jpg 10 131 | 17flowers/jpg/10/image_0859.jpg 10 132 | 17flowers/jpg/10/image_0837.jpg 10 133 | 17flowers/jpg/10/image_0819.jpg 10 134 | 17flowers/jpg/10/image_0870.jpg 10 135 | 17flowers/jpg/10/image_0806.jpg 10 136 | 17flowers/jpg/10/image_0835.jpg 10 137 | 17flowers/jpg/10/image_0822.jpg 10 138 | 17flowers/jpg/10/image_0832.jpg 10 139 | 17flowers/jpg/10/image_0854.jpg 10 140 | 17flowers/jpg/10/image_0880.jpg 10 141 | 17flowers/jpg/10/image_0801.jpg 10 142 | 17flowers/jpg/10/image_0828.jpg 10 143 | 17flowers/jpg/10/image_0875.jpg 10 144 | 17flowers/jpg/10/image_0813.jpg 10 145 | 17flowers/jpg/10/image_0815.jpg 10 146 | 17flowers/jpg/10/image_0855.jpg 10 147 | 17flowers/jpg/10/image_0824.jpg 10 148 | 17flowers/jpg/10/image_0814.jpg 10 149 | 17flowers/jpg/10/image_0868.jpg 10 150 | 17flowers/jpg/10/image_0877.jpg 10 151 | 17flowers/jpg/10/image_0811.jpg 10 152 | 17flowers/jpg/10/image_0810.jpg 10 153 | 17flowers/jpg/10/image_0802.jpg 10 154 | 17flowers/jpg/10/image_0846.jpg 10 155 | 17flowers/jpg/10/image_0865.jpg 10 156 | 17flowers/jpg/10/image_0808.jpg 10 157 | 17flowers/jpg/10/image_0842.jpg 10 158 | 17flowers/jpg/10/image_0831.jpg 10 159 | 17flowers/jpg/10/image_0827.jpg 10 160 | 17flowers/jpg/10/image_0873.jpg 10 161 | 17flowers/jpg/2/image_0167.jpg 2 162 | 17flowers/jpg/2/image_0162.jpg 2 163 | 17flowers/jpg/2/image_0213.jpg 2 164 | 17flowers/jpg/2/image_0166.jpg 2 165 | 17flowers/jpg/2/image_0205.jpg 2 166 | 17flowers/jpg/2/image_0173.jpg 2 167 | 17flowers/jpg/2/image_0199.jpg 2 168 | 17flowers/jpg/2/image_0200.jpg 2 169 | 17flowers/jpg/2/image_0180.jpg 2 170 | 17flowers/jpg/2/image_0235.jpg 2 171 | 17flowers/jpg/2/image_0223.jpg 2 172 | 17flowers/jpg/2/image_0170.jpg 2 173 | 17flowers/jpg/2/image_0164.jpg 2 174 | 17flowers/jpg/2/image_0211.jpg 2 175 | 17flowers/jpg/2/image_0201.jpg 2 176 | 17flowers/jpg/2/image_0227.jpg 2 177 | 17flowers/jpg/2/image_0240.jpg 2 178 | 17flowers/jpg/2/image_0165.jpg 2 179 | 17flowers/jpg/2/image_0236.jpg 2 180 | 17flowers/jpg/2/image_0183.jpg 2 181 | 17flowers/jpg/2/image_0191.jpg 2 182 | 17flowers/jpg/2/image_0204.jpg 2 183 | 17flowers/jpg/2/image_0216.jpg 2 184 | 17flowers/jpg/2/image_0171.jpg 2 185 | 17flowers/jpg/2/image_0195.jpg 2 186 | 17flowers/jpg/2/image_0208.jpg 2 187 | 17flowers/jpg/2/image_0228.jpg 2 188 | 17flowers/jpg/2/image_0218.jpg 2 189 | 17flowers/jpg/2/image_0168.jpg 2 190 | 17flowers/jpg/2/image_0192.jpg 2 191 | 17flowers/jpg/2/image_0190.jpg 2 192 | 17flowers/jpg/2/image_0238.jpg 2 193 | 17flowers/jpg/2/image_0169.jpg 2 194 | 17flowers/jpg/2/image_0219.jpg 2 195 | 17flowers/jpg/2/image_0224.jpg 2 196 | 17flowers/jpg/2/image_0212.jpg 2 197 | 17flowers/jpg/2/image_0239.jpg 2 198 | 17flowers/jpg/2/image_0179.jpg 2 199 | 17flowers/jpg/2/image_0234.jpg 2 200 | 17flowers/jpg/2/image_0189.jpg 2 201 | 17flowers/jpg/2/image_0231.jpg 2 202 | 17flowers/jpg/2/image_0206.jpg 2 203 | 17flowers/jpg/2/image_0184.jpg 2 204 | 17flowers/jpg/2/image_0222.jpg 2 205 | 17flowers/jpg/2/image_0197.jpg 2 206 | 17flowers/jpg/2/image_0198.jpg 2 207 | 17flowers/jpg/2/image_0194.jpg 2 208 | 17flowers/jpg/2/image_0215.jpg 2 209 | 17flowers/jpg/2/image_0176.jpg 2 210 | 17flowers/jpg/2/image_0225.jpg 2 211 | 17flowers/jpg/2/image_0181.jpg 2 212 | 17flowers/jpg/2/image_0232.jpg 2 213 | 17flowers/jpg/2/image_0187.jpg 2 214 | 17flowers/jpg/2/image_0172.jpg 2 215 | 17flowers/jpg/2/image_0233.jpg 2 216 | 17flowers/jpg/2/image_0230.jpg 2 217 | 17flowers/jpg/2/image_0182.jpg 2 218 | 17flowers/jpg/2/image_0229.jpg 2 219 | 17flowers/jpg/2/image_0196.jpg 2 220 | 17flowers/jpg/2/image_0214.jpg 2 221 | 17flowers/jpg/2/image_0163.jpg 2 222 | 17flowers/jpg/2/image_0177.jpg 2 223 | 17flowers/jpg/2/image_0185.jpg 2 224 | 17flowers/jpg/2/image_0203.jpg 2 225 | 17flowers/jpg/2/image_0174.jpg 2 226 | 17flowers/jpg/2/image_0175.jpg 2 227 | 17flowers/jpg/2/image_0226.jpg 2 228 | 17flowers/jpg/2/image_0161.jpg 2 229 | 17flowers/jpg/2/image_0178.jpg 2 230 | 17flowers/jpg/2/image_0221.jpg 2 231 | 17flowers/jpg/2/image_0210.jpg 2 232 | 17flowers/jpg/2/image_0237.jpg 2 233 | 17flowers/jpg/2/image_0202.jpg 2 234 | 17flowers/jpg/2/image_0193.jpg 2 235 | 17flowers/jpg/2/image_0188.jpg 2 236 | 17flowers/jpg/2/image_0220.jpg 2 237 | 17flowers/jpg/2/image_0186.jpg 2 238 | 17flowers/jpg/2/image_0207.jpg 2 239 | 17flowers/jpg/2/image_0209.jpg 2 240 | 17flowers/jpg/2/image_0217.jpg 2 241 | 17flowers/jpg/3/image_0257.jpg 3 242 | 17flowers/jpg/3/image_0252.jpg 3 243 | 17flowers/jpg/3/image_0281.jpg 3 244 | 17flowers/jpg/3/image_0254.jpg 3 245 | 17flowers/jpg/3/image_0289.jpg 3 246 | 17flowers/jpg/3/image_0249.jpg 3 247 | 17flowers/jpg/3/image_0297.jpg 3 248 | 17flowers/jpg/3/image_0309.jpg 3 249 | 17flowers/jpg/3/image_0299.jpg 3 250 | 17flowers/jpg/3/image_0266.jpg 3 251 | 17flowers/jpg/3/image_0301.jpg 3 252 | 17flowers/jpg/3/image_0304.jpg 3 253 | 17flowers/jpg/3/image_0311.jpg 3 254 | 17flowers/jpg/3/image_0268.jpg 3 255 | 17flowers/jpg/3/image_0285.jpg 3 256 | 17flowers/jpg/3/image_0253.jpg 3 257 | 17flowers/jpg/3/image_0244.jpg 3 258 | 17flowers/jpg/3/image_0307.jpg 3 259 | 17flowers/jpg/3/image_0274.jpg 3 260 | 17flowers/jpg/3/image_0255.jpg 3 261 | 17flowers/jpg/3/image_0247.jpg 3 262 | 17flowers/jpg/3/image_0263.jpg 3 263 | 17flowers/jpg/3/image_0287.jpg 3 264 | 17flowers/jpg/3/image_0273.jpg 3 265 | 17flowers/jpg/3/image_0278.jpg 3 266 | 17flowers/jpg/3/image_0286.jpg 3 267 | 17flowers/jpg/3/image_0312.jpg 3 268 | 17flowers/jpg/3/image_0243.jpg 3 269 | 17flowers/jpg/3/image_0319.jpg 3 270 | 17flowers/jpg/3/image_0282.jpg 3 271 | 17flowers/jpg/3/image_0251.jpg 3 272 | 17flowers/jpg/3/image_0272.jpg 3 273 | 17flowers/jpg/3/image_0245.jpg 3 274 | 17flowers/jpg/3/image_0271.jpg 3 275 | 17flowers/jpg/3/image_0242.jpg 3 276 | 17flowers/jpg/3/image_0261.jpg 3 277 | 17flowers/jpg/3/image_0280.jpg 3 278 | 17flowers/jpg/3/image_0291.jpg 3 279 | 17flowers/jpg/3/image_0279.jpg 3 280 | 17flowers/jpg/3/image_0248.jpg 3 281 | 17flowers/jpg/3/image_0246.jpg 3 282 | 17flowers/jpg/3/image_0306.jpg 3 283 | 17flowers/jpg/3/image_0318.jpg 3 284 | 17flowers/jpg/3/image_0270.jpg 3 285 | 17flowers/jpg/3/image_0269.jpg 3 286 | 17flowers/jpg/3/image_0250.jpg 3 287 | 17flowers/jpg/3/image_0308.jpg 3 288 | 17flowers/jpg/3/image_0300.jpg 3 289 | 17flowers/jpg/3/image_0298.jpg 3 290 | 17flowers/jpg/3/image_0320.jpg 3 291 | 17flowers/jpg/3/image_0316.jpg 3 292 | 17flowers/jpg/3/image_0296.jpg 3 293 | 17flowers/jpg/3/image_0317.jpg 3 294 | 17flowers/jpg/3/image_0310.jpg 3 295 | 17flowers/jpg/3/image_0275.jpg 3 296 | 17flowers/jpg/3/image_0288.jpg 3 297 | 17flowers/jpg/3/image_0259.jpg 3 298 | 17flowers/jpg/3/image_0294.jpg 3 299 | 17flowers/jpg/3/image_0267.jpg 3 300 | 17flowers/jpg/3/image_0283.jpg 3 301 | 17flowers/jpg/3/image_0276.jpg 3 302 | 17flowers/jpg/3/image_0315.jpg 3 303 | 17flowers/jpg/3/image_0302.jpg 3 304 | 17flowers/jpg/3/image_0264.jpg 3 305 | 17flowers/jpg/3/image_0303.jpg 3 306 | 17flowers/jpg/3/image_0277.jpg 3 307 | 17flowers/jpg/3/image_0260.jpg 3 308 | 17flowers/jpg/3/image_0305.jpg 3 309 | 17flowers/jpg/3/image_0314.jpg 3 310 | 17flowers/jpg/3/image_0258.jpg 3 311 | 17flowers/jpg/3/image_0265.jpg 3 312 | 17flowers/jpg/3/image_0290.jpg 3 313 | 17flowers/jpg/3/image_0262.jpg 3 314 | 17flowers/jpg/3/image_0292.jpg 3 315 | 17flowers/jpg/3/image_0284.jpg 3 316 | 17flowers/jpg/3/image_0313.jpg 3 317 | 17flowers/jpg/3/image_0256.jpg 3 318 | 17flowers/jpg/3/image_0293.jpg 3 319 | 17flowers/jpg/3/image_0295.jpg 3 320 | 17flowers/jpg/3/image_0241.jpg 3 321 | 17flowers/jpg/0/image_0020.jpg 0 322 | 17flowers/jpg/0/image_0062.jpg 0 323 | 17flowers/jpg/0/image_0064.jpg 0 324 | 17flowers/jpg/0/image_0022.jpg 0 325 | 17flowers/jpg/0/image_0068.jpg 0 326 | 17flowers/jpg/0/image_0007.jpg 0 327 | 17flowers/jpg/0/image_0067.jpg 0 328 | 17flowers/jpg/0/image_0045.jpg 0 329 | 17flowers/jpg/0/image_0010.jpg 0 330 | 17flowers/jpg/0/image_0039.jpg 0 331 | 17flowers/jpg/0/image_0076.jpg 0 332 | 17flowers/jpg/0/image_0059.jpg 0 333 | 17flowers/jpg/0/image_0017.jpg 0 334 | 17flowers/jpg/0/image_0005.jpg 0 335 | 17flowers/jpg/0/image_0001.jpg 0 336 | 17flowers/jpg/0/image_0075.jpg 0 337 | 17flowers/jpg/0/image_0070.jpg 0 338 | 17flowers/jpg/0/image_0004.jpg 0 339 | 17flowers/jpg/0/image_0008.jpg 0 340 | 17flowers/jpg/0/image_0042.jpg 0 341 | 17flowers/jpg/0/image_0049.jpg 0 342 | 17flowers/jpg/0/image_0052.jpg 0 343 | 17flowers/jpg/0/image_0053.jpg 0 344 | 17flowers/jpg/0/image_0046.jpg 0 345 | 17flowers/jpg/0/image_0077.jpg 0 346 | 17flowers/jpg/0/image_0034.jpg 0 347 | 17flowers/jpg/0/image_0057.jpg 0 348 | 17flowers/jpg/0/image_0035.jpg 0 349 | 17flowers/jpg/0/image_0015.jpg 0 350 | 17flowers/jpg/0/image_0043.jpg 0 351 | 17flowers/jpg/0/image_0033.jpg 0 352 | 17flowers/jpg/0/image_0044.jpg 0 353 | 17flowers/jpg/0/image_0030.jpg 0 354 | 17flowers/jpg/0/image_0028.jpg 0 355 | 17flowers/jpg/0/image_0009.jpg 0 356 | 17flowers/jpg/0/image_0040.jpg 0 357 | 17flowers/jpg/0/image_0056.jpg 0 358 | 17flowers/jpg/0/image_0013.jpg 0 359 | 17flowers/jpg/0/image_0073.jpg 0 360 | 17flowers/jpg/0/image_0014.jpg 0 361 | 17flowers/jpg/0/image_0037.jpg 0 362 | 17flowers/jpg/0/image_0072.jpg 0 363 | 17flowers/jpg/0/image_0021.jpg 0 364 | 17flowers/jpg/0/image_0041.jpg 0 365 | 17flowers/jpg/0/image_0011.jpg 0 366 | 17flowers/jpg/0/image_0047.jpg 0 367 | 17flowers/jpg/0/image_0060.jpg 0 368 | 17flowers/jpg/0/image_0065.jpg 0 369 | 17flowers/jpg/0/image_0048.jpg 0 370 | 17flowers/jpg/0/image_0018.jpg 0 371 | 17flowers/jpg/0/image_0024.jpg 0 372 | 17flowers/jpg/0/image_0061.jpg 0 373 | 17flowers/jpg/0/image_0079.jpg 0 374 | 17flowers/jpg/0/image_0054.jpg 0 375 | 17flowers/jpg/0/image_0027.jpg 0 376 | 17flowers/jpg/0/image_0074.jpg 0 377 | 17flowers/jpg/0/image_0066.jpg 0 378 | 17flowers/jpg/0/image_0029.jpg 0 379 | 17flowers/jpg/0/image_0069.jpg 0 380 | 17flowers/jpg/0/image_0080.jpg 0 381 | 17flowers/jpg/0/image_0051.jpg 0 382 | 17flowers/jpg/0/image_0003.jpg 0 383 | 17flowers/jpg/0/image_0016.jpg 0 384 | 17flowers/jpg/0/image_0038.jpg 0 385 | 17flowers/jpg/0/image_0055.jpg 0 386 | 17flowers/jpg/0/image_0050.jpg 0 387 | 17flowers/jpg/0/image_0006.jpg 0 388 | 17flowers/jpg/0/image_0058.jpg 0 389 | 17flowers/jpg/0/image_0063.jpg 0 390 | 17flowers/jpg/0/image_0012.jpg 0 391 | 17flowers/jpg/0/image_0031.jpg 0 392 | 17flowers/jpg/0/image_0023.jpg 0 393 | 17flowers/jpg/0/image_0032.jpg 0 394 | 17flowers/jpg/0/image_0019.jpg 0 395 | 17flowers/jpg/0/image_0002.jpg 0 396 | 17flowers/jpg/0/image_0071.jpg 0 397 | 17flowers/jpg/0/image_0078.jpg 0 398 | 17flowers/jpg/0/image_0036.jpg 0 399 | 17flowers/jpg/0/image_0025.jpg 0 400 | 17flowers/jpg/0/image_0026.jpg 0 401 | 17flowers/jpg/6/image_0508.jpg 6 402 | 17flowers/jpg/6/image_0503.jpg 6 403 | 17flowers/jpg/6/image_0533.jpg 6 404 | 17flowers/jpg/6/image_0498.jpg 6 405 | 17flowers/jpg/6/image_0544.jpg 6 406 | 17flowers/jpg/6/image_0486.jpg 6 407 | 17flowers/jpg/6/image_0536.jpg 6 408 | 17flowers/jpg/6/image_0532.jpg 6 409 | 17flowers/jpg/6/image_0535.jpg 6 410 | 17flowers/jpg/6/image_0507.jpg 6 411 | 17flowers/jpg/6/image_0529.jpg 6 412 | 17flowers/jpg/6/image_0494.jpg 6 413 | 17flowers/jpg/6/image_0523.jpg 6 414 | 17flowers/jpg/6/image_0521.jpg 6 415 | 17flowers/jpg/6/image_0510.jpg 6 416 | 17flowers/jpg/6/image_0489.jpg 6 417 | 17flowers/jpg/6/image_0542.jpg 6 418 | 17flowers/jpg/6/image_0541.jpg 6 419 | 17flowers/jpg/6/image_0528.jpg 6 420 | 17flowers/jpg/6/image_0519.jpg 6 421 | 17flowers/jpg/6/image_0525.jpg 6 422 | 17flowers/jpg/6/image_0547.jpg 6 423 | 17flowers/jpg/6/image_0524.jpg 6 424 | 17flowers/jpg/6/image_0522.jpg 6 425 | 17flowers/jpg/6/image_0511.jpg 6 426 | 17flowers/jpg/6/image_0493.jpg 6 427 | 17flowers/jpg/6/image_0531.jpg 6 428 | 17flowers/jpg/6/image_0540.jpg 6 429 | 17flowers/jpg/6/image_0527.jpg 6 430 | 17flowers/jpg/6/image_0518.jpg 6 431 | 17flowers/jpg/6/image_0560.jpg 6 432 | 17flowers/jpg/6/image_0556.jpg 6 433 | 17flowers/jpg/6/image_0513.jpg 6 434 | 17flowers/jpg/6/image_0516.jpg 6 435 | 17flowers/jpg/6/image_0553.jpg 6 436 | 17flowers/jpg/6/image_0554.jpg 6 437 | 17flowers/jpg/6/image_0552.jpg 6 438 | 17flowers/jpg/6/image_0505.jpg 6 439 | 17flowers/jpg/6/image_0534.jpg 6 440 | 17flowers/jpg/6/image_0495.jpg 6 441 | 17flowers/jpg/6/image_0557.jpg 6 442 | 17flowers/jpg/6/image_0558.jpg 6 443 | 17flowers/jpg/6/image_0485.jpg 6 444 | 17flowers/jpg/6/image_0515.jpg 6 445 | 17flowers/jpg/6/image_0509.jpg 6 446 | 17flowers/jpg/6/image_0491.jpg 6 447 | 17flowers/jpg/6/image_0487.jpg 6 448 | 17flowers/jpg/6/image_0506.jpg 6 449 | 17flowers/jpg/6/image_0538.jpg 6 450 | 17flowers/jpg/6/image_0484.jpg 6 451 | 17flowers/jpg/6/image_0502.jpg 6 452 | 17flowers/jpg/6/image_0499.jpg 6 453 | 17flowers/jpg/6/image_0550.jpg 6 454 | 17flowers/jpg/6/image_0526.jpg 6 455 | 17flowers/jpg/6/image_0488.jpg 6 456 | 17flowers/jpg/6/image_0546.jpg 6 457 | 17flowers/jpg/6/image_0517.jpg 6 458 | 17flowers/jpg/6/image_0501.jpg 6 459 | 17flowers/jpg/6/image_0483.jpg 6 460 | 17flowers/jpg/6/image_0481.jpg 6 461 | 17flowers/jpg/6/image_0537.jpg 6 462 | 17flowers/jpg/6/image_0549.jpg 6 463 | 17flowers/jpg/6/image_0559.jpg 6 464 | 17flowers/jpg/6/image_0490.jpg 6 465 | 17flowers/jpg/6/image_0543.jpg 6 466 | 17flowers/jpg/6/image_0492.jpg 6 467 | 17flowers/jpg/6/image_0555.jpg 6 468 | 17flowers/jpg/6/image_0514.jpg 6 469 | 17flowers/jpg/6/image_0500.jpg 6 470 | 17flowers/jpg/6/image_0539.jpg 6 471 | 17flowers/jpg/6/image_0545.jpg 6 472 | 17flowers/jpg/6/image_0504.jpg 6 473 | 17flowers/jpg/6/image_0482.jpg 6 474 | 17flowers/jpg/6/image_0551.jpg 6 475 | 17flowers/jpg/6/image_0497.jpg 6 476 | 17flowers/jpg/6/image_0496.jpg 6 477 | 17flowers/jpg/6/image_0520.jpg 6 478 | 17flowers/jpg/6/image_0512.jpg 6 479 | 17flowers/jpg/6/image_0530.jpg 6 480 | 17flowers/jpg/6/image_0548.jpg 6 481 | 17flowers/jpg/8/image_0682.jpg 8 482 | 17flowers/jpg/8/image_0678.jpg 8 483 | 17flowers/jpg/8/image_0666.jpg 8 484 | 17flowers/jpg/8/image_0684.jpg 8 485 | 17flowers/jpg/8/image_0665.jpg 8 486 | 17flowers/jpg/8/image_0645.jpg 8 487 | 17flowers/jpg/8/image_0693.jpg 8 488 | 17flowers/jpg/8/image_0716.jpg 8 489 | 17flowers/jpg/8/image_0660.jpg 8 490 | 17flowers/jpg/8/image_0698.jpg 8 491 | 17flowers/jpg/8/image_0713.jpg 8 492 | 17flowers/jpg/8/image_0681.jpg 8 493 | 17flowers/jpg/8/image_0664.jpg 8 494 | 17flowers/jpg/8/image_0643.jpg 8 495 | 17flowers/jpg/8/image_0717.jpg 8 496 | 17flowers/jpg/8/image_0655.jpg 8 497 | 17flowers/jpg/8/image_0689.jpg 8 498 | 17flowers/jpg/8/image_0718.jpg 8 499 | 17flowers/jpg/8/image_0667.jpg 8 500 | 17flowers/jpg/8/image_0686.jpg 8 501 | 17flowers/jpg/8/image_0680.jpg 8 502 | 17flowers/jpg/8/image_0647.jpg 8 503 | 17flowers/jpg/8/image_0703.jpg 8 504 | 17flowers/jpg/8/image_0688.jpg 8 505 | 17flowers/jpg/8/image_0720.jpg 8 506 | 17flowers/jpg/8/image_0687.jpg 8 507 | 17flowers/jpg/8/image_0652.jpg 8 508 | 17flowers/jpg/8/image_0672.jpg 8 509 | 17flowers/jpg/8/image_0697.jpg 8 510 | 17flowers/jpg/8/image_0669.jpg 8 511 | 17flowers/jpg/8/image_0651.jpg 8 512 | 17flowers/jpg/8/image_0683.jpg 8 513 | 17flowers/jpg/8/image_0685.jpg 8 514 | 17flowers/jpg/8/image_0663.jpg 8 515 | 17flowers/jpg/8/image_0705.jpg 8 516 | 17flowers/jpg/8/image_0691.jpg 8 517 | 17flowers/jpg/8/image_0674.jpg 8 518 | 17flowers/jpg/8/image_0658.jpg 8 519 | 17flowers/jpg/8/image_0659.jpg 8 520 | 17flowers/jpg/8/image_0711.jpg 8 521 | 17flowers/jpg/8/image_0677.jpg 8 522 | 17flowers/jpg/8/image_0709.jpg 8 523 | 17flowers/jpg/8/image_0671.jpg 8 524 | 17flowers/jpg/8/image_0706.jpg 8 525 | 17flowers/jpg/8/image_0646.jpg 8 526 | 17flowers/jpg/8/image_0704.jpg 8 527 | 17flowers/jpg/8/image_0654.jpg 8 528 | 17flowers/jpg/8/image_0695.jpg 8 529 | 17flowers/jpg/8/image_0673.jpg 8 530 | 17flowers/jpg/8/image_0715.jpg 8 531 | 17flowers/jpg/8/image_0692.jpg 8 532 | 17flowers/jpg/8/image_0719.jpg 8 533 | 17flowers/jpg/8/image_0696.jpg 8 534 | 17flowers/jpg/8/image_0653.jpg 8 535 | 17flowers/jpg/8/image_0670.jpg 8 536 | 17flowers/jpg/8/image_0690.jpg 8 537 | 17flowers/jpg/8/image_0641.jpg 8 538 | 17flowers/jpg/8/image_0701.jpg 8 539 | 17flowers/jpg/8/image_0700.jpg 8 540 | 17flowers/jpg/8/image_0650.jpg 8 541 | 17flowers/jpg/8/image_0662.jpg 8 542 | 17flowers/jpg/8/image_0649.jpg 8 543 | 17flowers/jpg/8/image_0708.jpg 8 544 | 17flowers/jpg/8/image_0712.jpg 8 545 | 17flowers/jpg/8/image_0707.jpg 8 546 | 17flowers/jpg/8/image_0676.jpg 8 547 | 17flowers/jpg/8/image_0675.jpg 8 548 | 17flowers/jpg/8/image_0642.jpg 8 549 | 17flowers/jpg/8/image_0694.jpg 8 550 | 17flowers/jpg/8/image_0657.jpg 8 551 | 17flowers/jpg/8/image_0710.jpg 8 552 | 17flowers/jpg/8/image_0714.jpg 8 553 | 17flowers/jpg/8/image_0668.jpg 8 554 | 17flowers/jpg/8/image_0661.jpg 8 555 | 17flowers/jpg/8/image_0699.jpg 8 556 | 17flowers/jpg/8/image_0656.jpg 8 557 | 17flowers/jpg/8/image_0702.jpg 8 558 | 17flowers/jpg/8/image_0679.jpg 8 559 | 17flowers/jpg/8/image_0644.jpg 8 560 | 17flowers/jpg/8/image_0648.jpg 8 561 | 17flowers/jpg/4/image_0399.jpg 4 562 | 17flowers/jpg/4/image_0368.jpg 4 563 | 17flowers/jpg/4/image_0362.jpg 4 564 | 17flowers/jpg/4/image_0390.jpg 4 565 | 17flowers/jpg/4/image_0361.jpg 4 566 | 17flowers/jpg/4/image_0365.jpg 4 567 | 17flowers/jpg/4/image_0375.jpg 4 568 | 17flowers/jpg/4/image_0331.jpg 4 569 | 17flowers/jpg/4/image_0382.jpg 4 570 | 17flowers/jpg/4/image_0396.jpg 4 571 | 17flowers/jpg/4/image_0338.jpg 4 572 | 17flowers/jpg/4/image_0325.jpg 4 573 | 17flowers/jpg/4/image_0334.jpg 4 574 | 17flowers/jpg/4/image_0367.jpg 4 575 | 17flowers/jpg/4/image_0383.jpg 4 576 | 17flowers/jpg/4/image_0364.jpg 4 577 | 17flowers/jpg/4/image_0347.jpg 4 578 | 17flowers/jpg/4/image_0388.jpg 4 579 | 17flowers/jpg/4/image_0346.jpg 4 580 | 17flowers/jpg/4/image_0376.jpg 4 581 | 17flowers/jpg/4/image_0371.jpg 4 582 | 17flowers/jpg/4/image_0348.jpg 4 583 | 17flowers/jpg/4/image_0359.jpg 4 584 | 17flowers/jpg/4/image_0349.jpg 4 585 | 17flowers/jpg/4/image_0341.jpg 4 586 | 17flowers/jpg/4/image_0380.jpg 4 587 | 17flowers/jpg/4/image_0387.jpg 4 588 | 17flowers/jpg/4/image_0350.jpg 4 589 | 17flowers/jpg/4/image_0370.jpg 4 590 | 17flowers/jpg/4/image_0400.jpg 4 591 | 17flowers/jpg/4/image_0389.jpg 4 592 | 17flowers/jpg/4/image_0355.jpg 4 593 | 17flowers/jpg/4/image_0397.jpg 4 594 | 17flowers/jpg/4/image_0395.jpg 4 595 | 17flowers/jpg/4/image_0378.jpg 4 596 | 17flowers/jpg/4/image_0381.jpg 4 597 | 17flowers/jpg/4/image_0354.jpg 4 598 | 17flowers/jpg/4/image_0356.jpg 4 599 | 17flowers/jpg/4/image_0384.jpg 4 600 | 17flowers/jpg/4/image_0342.jpg 4 601 | 17flowers/jpg/4/image_0339.jpg 4 602 | 17flowers/jpg/4/image_0373.jpg 4 603 | 17flowers/jpg/4/image_0372.jpg 4 604 | 17flowers/jpg/4/image_0335.jpg 4 605 | 17flowers/jpg/4/image_0340.jpg 4 606 | 17flowers/jpg/4/image_0321.jpg 4 607 | 17flowers/jpg/4/image_0337.jpg 4 608 | 17flowers/jpg/4/image_0336.jpg 4 609 | 17flowers/jpg/4/image_0344.jpg 4 610 | 17flowers/jpg/4/image_0366.jpg 4 611 | 17flowers/jpg/4/image_0345.jpg 4 612 | 17flowers/jpg/4/image_0352.jpg 4 613 | 17flowers/jpg/4/image_0394.jpg 4 614 | 17flowers/jpg/4/image_0343.jpg 4 615 | 17flowers/jpg/4/image_0369.jpg 4 616 | 17flowers/jpg/4/image_0398.jpg 4 617 | 17flowers/jpg/4/image_0391.jpg 4 618 | 17flowers/jpg/4/image_0351.jpg 4 619 | 17flowers/jpg/4/image_0392.jpg 4 620 | 17flowers/jpg/4/image_0363.jpg 4 621 | 17flowers/jpg/4/image_0393.jpg 4 622 | 17flowers/jpg/4/image_0326.jpg 4 623 | 17flowers/jpg/4/image_0328.jpg 4 624 | 17flowers/jpg/4/image_0358.jpg 4 625 | 17flowers/jpg/4/image_0385.jpg 4 626 | 17flowers/jpg/4/image_0327.jpg 4 627 | 17flowers/jpg/4/image_0322.jpg 4 628 | 17flowers/jpg/4/image_0330.jpg 4 629 | 17flowers/jpg/4/image_0374.jpg 4 630 | 17flowers/jpg/4/image_0360.jpg 4 631 | 17flowers/jpg/4/image_0329.jpg 4 632 | 17flowers/jpg/4/image_0324.jpg 4 633 | 17flowers/jpg/4/image_0379.jpg 4 634 | 17flowers/jpg/4/image_0386.jpg 4 635 | 17flowers/jpg/4/image_0332.jpg 4 636 | 17flowers/jpg/4/image_0377.jpg 4 637 | 17flowers/jpg/4/image_0357.jpg 4 638 | 17flowers/jpg/4/image_0353.jpg 4 639 | 17flowers/jpg/4/image_0323.jpg 4 640 | 17flowers/jpg/4/image_0333.jpg 4 641 | 17flowers/jpg/9/image_0750.jpg 9 642 | 17flowers/jpg/9/image_0785.jpg 9 643 | 17flowers/jpg/9/image_0746.jpg 9 644 | 17flowers/jpg/9/image_0792.jpg 9 645 | 17flowers/jpg/9/image_0778.jpg 9 646 | 17flowers/jpg/9/image_0748.jpg 9 647 | 17flowers/jpg/9/image_0783.jpg 9 648 | 17flowers/jpg/9/image_0752.jpg 9 649 | 17flowers/jpg/9/image_0793.jpg 9 650 | 17flowers/jpg/9/image_0726.jpg 9 651 | 17flowers/jpg/9/image_0794.jpg 9 652 | 17flowers/jpg/9/image_0737.jpg 9 653 | 17flowers/jpg/9/image_0732.jpg 9 654 | 17flowers/jpg/9/image_0756.jpg 9 655 | 17flowers/jpg/9/image_0758.jpg 9 656 | 17flowers/jpg/9/image_0755.jpg 9 657 | 17flowers/jpg/9/image_0734.jpg 9 658 | 17flowers/jpg/9/image_0749.jpg 9 659 | 17flowers/jpg/9/image_0767.jpg 9 660 | 17flowers/jpg/9/image_0796.jpg 9 661 | 17flowers/jpg/9/image_0763.jpg 9 662 | 17flowers/jpg/9/image_0739.jpg 9 663 | 17flowers/jpg/9/image_0735.jpg 9 664 | 17flowers/jpg/9/image_0742.jpg 9 665 | 17flowers/jpg/9/image_0731.jpg 9 666 | 17flowers/jpg/9/image_0784.jpg 9 667 | 17flowers/jpg/9/image_0789.jpg 9 668 | 17flowers/jpg/9/image_0771.jpg 9 669 | 17flowers/jpg/9/image_0757.jpg 9 670 | 17flowers/jpg/9/image_0762.jpg 9 671 | 17flowers/jpg/9/image_0727.jpg 9 672 | 17flowers/jpg/9/image_0729.jpg 9 673 | 17flowers/jpg/9/image_0774.jpg 9 674 | 17flowers/jpg/9/image_0787.jpg 9 675 | 17flowers/jpg/9/image_0790.jpg 9 676 | 17flowers/jpg/9/image_0799.jpg 9 677 | 17flowers/jpg/9/image_0754.jpg 9 678 | 17flowers/jpg/9/image_0733.jpg 9 679 | 17flowers/jpg/9/image_0721.jpg 9 680 | 17flowers/jpg/9/image_0723.jpg 9 681 | 17flowers/jpg/9/image_0791.jpg 9 682 | 17flowers/jpg/9/image_0788.jpg 9 683 | 17flowers/jpg/9/image_0728.jpg 9 684 | 17flowers/jpg/9/image_0795.jpg 9 685 | 17flowers/jpg/9/image_0722.jpg 9 686 | 17flowers/jpg/9/image_0764.jpg 9 687 | 17flowers/jpg/9/image_0781.jpg 9 688 | 17flowers/jpg/9/image_0760.jpg 9 689 | 17flowers/jpg/9/image_0738.jpg 9 690 | 17flowers/jpg/9/image_0776.jpg 9 691 | 17flowers/jpg/9/image_0747.jpg 9 692 | 17flowers/jpg/9/image_0800.jpg 9 693 | 17flowers/jpg/9/image_0798.jpg 9 694 | 17flowers/jpg/9/image_0779.jpg 9 695 | 17flowers/jpg/9/image_0740.jpg 9 696 | 17flowers/jpg/9/image_0769.jpg 9 697 | 17flowers/jpg/9/image_0777.jpg 9 698 | 17flowers/jpg/9/image_0761.jpg 9 699 | 17flowers/jpg/9/image_0797.jpg 9 700 | 17flowers/jpg/9/image_0753.jpg 9 701 | 17flowers/jpg/9/image_0741.jpg 9 702 | 17flowers/jpg/9/image_0780.jpg 9 703 | 17flowers/jpg/9/image_0775.jpg 9 704 | 17flowers/jpg/9/image_0736.jpg 9 705 | 17flowers/jpg/9/image_0743.jpg 9 706 | 17flowers/jpg/9/image_0770.jpg 9 707 | 17flowers/jpg/9/image_0773.jpg 9 708 | 17flowers/jpg/9/image_0772.jpg 9 709 | 17flowers/jpg/9/image_0751.jpg 9 710 | 17flowers/jpg/9/image_0730.jpg 9 711 | 17flowers/jpg/9/image_0786.jpg 9 712 | 17flowers/jpg/9/image_0765.jpg 9 713 | 17flowers/jpg/9/image_0724.jpg 9 714 | 17flowers/jpg/9/image_0744.jpg 9 715 | 17flowers/jpg/9/image_0782.jpg 9 716 | 17flowers/jpg/9/image_0745.jpg 9 717 | 17flowers/jpg/9/image_0768.jpg 9 718 | 17flowers/jpg/9/image_0759.jpg 9 719 | 17flowers/jpg/9/image_0725.jpg 9 720 | 17flowers/jpg/9/image_0766.jpg 9 721 | 17flowers/jpg/7/image_0583.jpg 7 722 | 17flowers/jpg/7/image_0587.jpg 7 723 | 17flowers/jpg/7/image_0638.jpg 7 724 | 17flowers/jpg/7/image_0564.jpg 7 725 | 17flowers/jpg/7/image_0632.jpg 7 726 | 17flowers/jpg/7/image_0598.jpg 7 727 | 17flowers/jpg/7/image_0599.jpg 7 728 | 17flowers/jpg/7/image_0574.jpg 7 729 | 17flowers/jpg/7/image_0607.jpg 7 730 | 17flowers/jpg/7/image_0600.jpg 7 731 | 17flowers/jpg/7/image_0610.jpg 7 732 | 17flowers/jpg/7/image_0626.jpg 7 733 | 17flowers/jpg/7/image_0605.jpg 7 734 | 17flowers/jpg/7/image_0561.jpg 7 735 | 17flowers/jpg/7/image_0611.jpg 7 736 | 17flowers/jpg/7/image_0569.jpg 7 737 | 17flowers/jpg/7/image_0563.jpg 7 738 | 17flowers/jpg/7/image_0604.jpg 7 739 | 17flowers/jpg/7/image_0613.jpg 7 740 | 17flowers/jpg/7/image_0639.jpg 7 741 | 17flowers/jpg/7/image_0615.jpg 7 742 | 17flowers/jpg/7/image_0623.jpg 7 743 | 17flowers/jpg/7/image_0576.jpg 7 744 | 17flowers/jpg/7/image_0567.jpg 7 745 | 17flowers/jpg/7/image_0621.jpg 7 746 | 17flowers/jpg/7/image_0620.jpg 7 747 | 17flowers/jpg/7/image_0624.jpg 7 748 | 17flowers/jpg/7/image_0592.jpg 7 749 | 17flowers/jpg/7/image_0622.jpg 7 750 | 17flowers/jpg/7/image_0628.jpg 7 751 | 17flowers/jpg/7/image_0573.jpg 7 752 | 17flowers/jpg/7/image_0608.jpg 7 753 | 17flowers/jpg/7/image_0568.jpg 7 754 | 17flowers/jpg/7/image_0614.jpg 7 755 | 17flowers/jpg/7/image_0571.jpg 7 756 | 17flowers/jpg/7/image_0588.jpg 7 757 | 17flowers/jpg/7/image_0634.jpg 7 758 | 17flowers/jpg/7/image_0570.jpg 7 759 | 17flowers/jpg/7/image_0586.jpg 7 760 | 17flowers/jpg/7/image_0635.jpg 7 761 | 17flowers/jpg/7/image_0606.jpg 7 762 | 17flowers/jpg/7/image_0565.jpg 7 763 | 17flowers/jpg/7/image_0636.jpg 7 764 | 17flowers/jpg/7/image_0593.jpg 7 765 | 17flowers/jpg/7/image_0640.jpg 7 766 | 17flowers/jpg/7/image_0595.jpg 7 767 | 17flowers/jpg/7/image_0629.jpg 7 768 | 17flowers/jpg/7/image_0630.jpg 7 769 | 17flowers/jpg/7/image_0603.jpg 7 770 | 17flowers/jpg/7/image_0590.jpg 7 771 | 17flowers/jpg/7/image_0618.jpg 7 772 | 17flowers/jpg/7/image_0616.jpg 7 773 | 17flowers/jpg/7/image_0582.jpg 7 774 | 17flowers/jpg/7/image_0601.jpg 7 775 | 17flowers/jpg/7/image_0596.jpg 7 776 | 17flowers/jpg/7/image_0580.jpg 7 777 | 17flowers/jpg/7/image_0609.jpg 7 778 | 17flowers/jpg/7/image_0578.jpg 7 779 | 17flowers/jpg/7/image_0572.jpg 7 780 | 17flowers/jpg/7/image_0631.jpg 7 781 | 17flowers/jpg/7/image_0585.jpg 7 782 | 17flowers/jpg/7/image_0589.jpg 7 783 | 17flowers/jpg/7/image_0591.jpg 7 784 | 17flowers/jpg/7/image_0594.jpg 7 785 | 17flowers/jpg/7/image_0612.jpg 7 786 | 17flowers/jpg/7/image_0566.jpg 7 787 | 17flowers/jpg/7/image_0602.jpg 7 788 | 17flowers/jpg/7/image_0577.jpg 7 789 | 17flowers/jpg/7/image_0579.jpg 7 790 | 17flowers/jpg/7/image_0597.jpg 7 791 | 17flowers/jpg/7/image_0627.jpg 7 792 | 17flowers/jpg/7/image_0617.jpg 7 793 | 17flowers/jpg/7/image_0619.jpg 7 794 | 17flowers/jpg/7/image_0575.jpg 7 795 | 17flowers/jpg/7/image_0637.jpg 7 796 | 17flowers/jpg/7/image_0581.jpg 7 797 | 17flowers/jpg/7/image_0625.jpg 7 798 | 17flowers/jpg/7/image_0633.jpg 7 799 | 17flowers/jpg/7/image_0562.jpg 7 800 | 17flowers/jpg/7/image_0584.jpg 7 801 | 17flowers/jpg/16/image_1322.jpg 16 802 | 17flowers/jpg/16/image_1282.jpg 16 803 | 17flowers/jpg/16/image_1293.jpg 16 804 | 17flowers/jpg/16/image_1309.jpg 16 805 | 17flowers/jpg/16/image_1310.jpg 16 806 | 17flowers/jpg/16/image_1312.jpg 16 807 | 17flowers/jpg/16/image_1351.jpg 16 808 | 17flowers/jpg/16/image_1314.jpg 16 809 | 17flowers/jpg/16/image_1357.jpg 16 810 | 17flowers/jpg/16/image_1325.jpg 16 811 | 17flowers/jpg/16/image_1286.jpg 16 812 | 17flowers/jpg/16/image_1285.jpg 16 813 | 17flowers/jpg/16/image_1352.jpg 16 814 | 17flowers/jpg/16/image_1297.jpg 16 815 | 17flowers/jpg/16/image_1329.jpg 16 816 | 17flowers/jpg/16/image_1349.jpg 16 817 | 17flowers/jpg/16/image_1289.jpg 16 818 | 17flowers/jpg/16/image_1360.jpg 16 819 | 17flowers/jpg/16/image_1298.jpg 16 820 | 17flowers/jpg/16/image_1331.jpg 16 821 | 17flowers/jpg/16/image_1347.jpg 16 822 | 17flowers/jpg/16/image_1353.jpg 16 823 | 17flowers/jpg/16/image_1304.jpg 16 824 | 17flowers/jpg/16/image_1284.jpg 16 825 | 17flowers/jpg/16/image_1355.jpg 16 826 | 17flowers/jpg/16/image_1300.jpg 16 827 | 17flowers/jpg/16/image_1295.jpg 16 828 | 17flowers/jpg/16/image_1356.jpg 16 829 | 17flowers/jpg/16/image_1318.jpg 16 830 | 17flowers/jpg/16/image_1292.jpg 16 831 | 17flowers/jpg/16/image_1333.jpg 16 832 | 17flowers/jpg/16/image_1327.jpg 16 833 | 17flowers/jpg/16/image_1305.jpg 16 834 | 17flowers/jpg/16/image_1323.jpg 16 835 | 17flowers/jpg/16/image_1346.jpg 16 836 | 17flowers/jpg/16/image_1354.jpg 16 837 | 17flowers/jpg/16/image_1344.jpg 16 838 | 17flowers/jpg/16/image_1317.jpg 16 839 | 17flowers/jpg/16/image_1345.jpg 16 840 | 17flowers/jpg/16/image_1303.jpg 16 841 | 17flowers/jpg/16/image_1359.jpg 16 842 | 17flowers/jpg/16/image_1288.jpg 16 843 | 17flowers/jpg/16/image_1316.jpg 16 844 | 17flowers/jpg/16/image_1283.jpg 16 845 | 17flowers/jpg/16/image_1311.jpg 16 846 | 17flowers/jpg/16/image_1343.jpg 16 847 | 17flowers/jpg/16/image_1320.jpg 16 848 | 17flowers/jpg/16/image_1306.jpg 16 849 | 17flowers/jpg/16/image_1315.jpg 16 850 | 17flowers/jpg/16/image_1287.jpg 16 851 | 17flowers/jpg/16/image_1348.jpg 16 852 | 17flowers/jpg/16/image_1290.jpg 16 853 | 17flowers/jpg/16/image_1313.jpg 16 854 | 17flowers/jpg/16/image_1341.jpg 16 855 | 17flowers/jpg/16/image_1326.jpg 16 856 | 17flowers/jpg/16/image_1350.jpg 16 857 | 17flowers/jpg/16/image_1281.jpg 16 858 | 17flowers/jpg/16/image_1301.jpg 16 859 | 17flowers/jpg/16/image_1339.jpg 16 860 | 17flowers/jpg/16/image_1336.jpg 16 861 | 17flowers/jpg/16/image_1358.jpg 16 862 | 17flowers/jpg/16/image_1334.jpg 16 863 | 17flowers/jpg/16/image_1338.jpg 16 864 | 17flowers/jpg/16/image_1337.jpg 16 865 | 17flowers/jpg/16/image_1340.jpg 16 866 | 17flowers/jpg/16/image_1294.jpg 16 867 | 17flowers/jpg/16/image_1291.jpg 16 868 | 17flowers/jpg/16/image_1332.jpg 16 869 | 17flowers/jpg/16/image_1302.jpg 16 870 | 17flowers/jpg/16/image_1321.jpg 16 871 | 17flowers/jpg/16/image_1319.jpg 16 872 | 17flowers/jpg/16/image_1324.jpg 16 873 | 17flowers/jpg/16/image_1342.jpg 16 874 | 17flowers/jpg/16/image_1330.jpg 16 875 | 17flowers/jpg/16/image_1335.jpg 16 876 | 17flowers/jpg/16/image_1308.jpg 16 877 | 17flowers/jpg/16/image_1299.jpg 16 878 | 17flowers/jpg/16/image_1307.jpg 16 879 | 17flowers/jpg/16/image_1296.jpg 16 880 | 17flowers/jpg/16/image_1328.jpg 16 881 | 17flowers/jpg/11/image_0899.jpg 11 882 | 17flowers/jpg/11/image_0949.jpg 11 883 | 17flowers/jpg/11/image_0948.jpg 11 884 | 17flowers/jpg/11/image_0894.jpg 11 885 | 17flowers/jpg/11/image_0937.jpg 11 886 | 17flowers/jpg/11/image_0914.jpg 11 887 | 17flowers/jpg/11/image_0928.jpg 11 888 | 17flowers/jpg/11/image_0932.jpg 11 889 | 17flowers/jpg/11/image_0909.jpg 11 890 | 17flowers/jpg/11/image_0905.jpg 11 891 | 17flowers/jpg/11/image_0922.jpg 11 892 | 17flowers/jpg/11/image_0890.jpg 11 893 | 17flowers/jpg/11/image_0951.jpg 11 894 | 17flowers/jpg/11/image_0920.jpg 11 895 | 17flowers/jpg/11/image_0882.jpg 11 896 | 17flowers/jpg/11/image_0929.jpg 11 897 | 17flowers/jpg/11/image_0958.jpg 11 898 | 17flowers/jpg/11/image_0904.jpg 11 899 | 17flowers/jpg/11/image_0952.jpg 11 900 | 17flowers/jpg/11/image_0916.jpg 11 901 | 17flowers/jpg/11/image_0893.jpg 11 902 | 17flowers/jpg/11/image_0919.jpg 11 903 | 17flowers/jpg/11/image_0913.jpg 11 904 | 17flowers/jpg/11/image_0927.jpg 11 905 | 17flowers/jpg/11/image_0938.jpg 11 906 | 17flowers/jpg/11/image_0954.jpg 11 907 | 17flowers/jpg/11/image_0884.jpg 11 908 | 17flowers/jpg/11/image_0889.jpg 11 909 | 17flowers/jpg/11/image_0921.jpg 11 910 | 17flowers/jpg/11/image_0953.jpg 11 911 | 17flowers/jpg/11/image_0934.jpg 11 912 | 17flowers/jpg/11/image_0887.jpg 11 913 | 17flowers/jpg/11/image_0911.jpg 11 914 | 17flowers/jpg/11/image_0892.jpg 11 915 | 17flowers/jpg/11/image_0891.jpg 11 916 | 17flowers/jpg/11/image_0888.jpg 11 917 | 17flowers/jpg/11/image_0895.jpg 11 918 | 17flowers/jpg/11/image_0906.jpg 11 919 | 17flowers/jpg/11/image_0959.jpg 11 920 | 17flowers/jpg/11/image_0960.jpg 11 921 | 17flowers/jpg/11/image_0939.jpg 11 922 | 17flowers/jpg/11/image_0957.jpg 11 923 | 17flowers/jpg/11/image_0898.jpg 11 924 | 17flowers/jpg/11/image_0900.jpg 11 925 | 17flowers/jpg/11/image_0955.jpg 11 926 | 17flowers/jpg/11/image_0917.jpg 11 927 | 17flowers/jpg/11/image_0944.jpg 11 928 | 17flowers/jpg/11/image_0897.jpg 11 929 | 17flowers/jpg/11/image_0940.jpg 11 930 | 17flowers/jpg/11/image_0915.jpg 11 931 | 17flowers/jpg/11/image_0924.jpg 11 932 | 17flowers/jpg/11/image_0912.jpg 11 933 | 17flowers/jpg/11/image_0956.jpg 11 934 | 17flowers/jpg/11/image_0943.jpg 11 935 | 17flowers/jpg/11/image_0902.jpg 11 936 | 17flowers/jpg/11/image_0947.jpg 11 937 | 17flowers/jpg/11/image_0936.jpg 11 938 | 17flowers/jpg/11/image_0907.jpg 11 939 | 17flowers/jpg/11/image_0946.jpg 11 940 | 17flowers/jpg/11/image_0886.jpg 11 941 | 17flowers/jpg/11/image_0926.jpg 11 942 | 17flowers/jpg/11/image_0910.jpg 11 943 | 17flowers/jpg/11/image_0942.jpg 11 944 | 17flowers/jpg/11/image_0903.jpg 11 945 | 17flowers/jpg/11/image_0901.jpg 11 946 | 17flowers/jpg/11/image_0933.jpg 11 947 | 17flowers/jpg/11/image_0896.jpg 11 948 | 17flowers/jpg/11/image_0908.jpg 11 949 | 17flowers/jpg/11/image_0925.jpg 11 950 | 17flowers/jpg/11/image_0923.jpg 11 951 | 17flowers/jpg/11/image_0935.jpg 11 952 | 17flowers/jpg/11/image_0881.jpg 11 953 | 17flowers/jpg/11/image_0883.jpg 11 954 | 17flowers/jpg/11/image_0930.jpg 11 955 | 17flowers/jpg/11/image_0931.jpg 11 956 | 17flowers/jpg/11/image_0918.jpg 11 957 | 17flowers/jpg/11/image_0945.jpg 11 958 | 17flowers/jpg/11/image_0885.jpg 11 959 | 17flowers/jpg/11/image_0950.jpg 11 960 | 17flowers/jpg/11/image_0941.jpg 11 961 | 17flowers/jpg/5/image_0477.jpg 5 962 | 17flowers/jpg/5/image_0429.jpg 5 963 | 17flowers/jpg/5/image_0414.jpg 5 964 | 17flowers/jpg/5/image_0409.jpg 5 965 | 17flowers/jpg/5/image_0441.jpg 5 966 | 17flowers/jpg/5/image_0438.jpg 5 967 | 17flowers/jpg/5/image_0412.jpg 5 968 | 17flowers/jpg/5/image_0428.jpg 5 969 | 17flowers/jpg/5/image_0480.jpg 5 970 | 17flowers/jpg/5/image_0404.jpg 5 971 | 17flowers/jpg/5/image_0450.jpg 5 972 | 17flowers/jpg/5/image_0445.jpg 5 973 | 17flowers/jpg/5/image_0417.jpg 5 974 | 17flowers/jpg/5/image_0478.jpg 5 975 | 17flowers/jpg/5/image_0446.jpg 5 976 | 17flowers/jpg/5/image_0469.jpg 5 977 | 17flowers/jpg/5/image_0425.jpg 5 978 | 17flowers/jpg/5/image_0421.jpg 5 979 | 17flowers/jpg/5/image_0452.jpg 5 980 | 17flowers/jpg/5/image_0403.jpg 5 981 | 17flowers/jpg/5/image_0454.jpg 5 982 | 17flowers/jpg/5/image_0430.jpg 5 983 | 17flowers/jpg/5/image_0416.jpg 5 984 | 17flowers/jpg/5/image_0474.jpg 5 985 | 17flowers/jpg/5/image_0415.jpg 5 986 | 17flowers/jpg/5/image_0401.jpg 5 987 | 17flowers/jpg/5/image_0435.jpg 5 988 | 17flowers/jpg/5/image_0418.jpg 5 989 | 17flowers/jpg/5/image_0453.jpg 5 990 | 17flowers/jpg/5/image_0411.jpg 5 991 | 17flowers/jpg/5/image_0471.jpg 5 992 | 17flowers/jpg/5/image_0443.jpg 5 993 | 17flowers/jpg/5/image_0439.jpg 5 994 | 17flowers/jpg/5/image_0468.jpg 5 995 | 17flowers/jpg/5/image_0408.jpg 5 996 | 17flowers/jpg/5/image_0419.jpg 5 997 | 17flowers/jpg/5/image_0423.jpg 5 998 | 17flowers/jpg/5/image_0464.jpg 5 999 | 17flowers/jpg/5/image_0463.jpg 5 1000 | 17flowers/jpg/5/image_0459.jpg 5 1001 | 17flowers/jpg/5/image_0476.jpg 5 1002 | 17flowers/jpg/5/image_0479.jpg 5 1003 | 17flowers/jpg/5/image_0410.jpg 5 1004 | 17flowers/jpg/5/image_0437.jpg 5 1005 | 17flowers/jpg/5/image_0440.jpg 5 1006 | 17flowers/jpg/5/image_0406.jpg 5 1007 | 17flowers/jpg/5/image_0465.jpg 5 1008 | 17flowers/jpg/5/image_0434.jpg 5 1009 | 17flowers/jpg/5/image_0427.jpg 5 1010 | 17flowers/jpg/5/image_0433.jpg 5 1011 | 17flowers/jpg/5/image_0473.jpg 5 1012 | 17flowers/jpg/5/image_0456.jpg 5 1013 | 17flowers/jpg/5/image_0413.jpg 5 1014 | 17flowers/jpg/5/image_0444.jpg 5 1015 | 17flowers/jpg/5/image_0432.jpg 5 1016 | 17flowers/jpg/5/image_0442.jpg 5 1017 | 17flowers/jpg/5/image_0402.jpg 5 1018 | 17flowers/jpg/5/image_0475.jpg 5 1019 | 17flowers/jpg/5/image_0424.jpg 5 1020 | 17flowers/jpg/5/image_0451.jpg 5 1021 | 17flowers/jpg/5/image_0458.jpg 5 1022 | 17flowers/jpg/5/image_0405.jpg 5 1023 | 17flowers/jpg/5/image_0462.jpg 5 1024 | 17flowers/jpg/5/image_0448.jpg 5 1025 | 17flowers/jpg/5/image_0472.jpg 5 1026 | 17flowers/jpg/5/image_0457.jpg 5 1027 | 17flowers/jpg/5/image_0461.jpg 5 1028 | 17flowers/jpg/5/image_0455.jpg 5 1029 | 17flowers/jpg/5/image_0431.jpg 5 1030 | 17flowers/jpg/5/image_0436.jpg 5 1031 | 17flowers/jpg/5/image_0470.jpg 5 1032 | 17flowers/jpg/5/image_0422.jpg 5 1033 | 17flowers/jpg/5/image_0449.jpg 5 1034 | 17flowers/jpg/5/image_0466.jpg 5 1035 | 17flowers/jpg/5/image_0420.jpg 5 1036 | 17flowers/jpg/5/image_0407.jpg 5 1037 | 17flowers/jpg/5/image_0460.jpg 5 1038 | 17flowers/jpg/5/image_0467.jpg 5 1039 | 17flowers/jpg/5/image_0426.jpg 5 1040 | 17flowers/jpg/5/image_0447.jpg 5 1041 | 17flowers/jpg/1/image_0150.jpg 1 1042 | 17flowers/jpg/1/image_0157.jpg 1 1043 | 17flowers/jpg/1/image_0126.jpg 1 1044 | 17flowers/jpg/1/image_0121.jpg 1 1045 | 17flowers/jpg/1/image_0115.jpg 1 1046 | 17flowers/jpg/1/image_0101.jpg 1 1047 | 17flowers/jpg/1/image_0082.jpg 1 1048 | 17flowers/jpg/1/image_0148.jpg 1 1049 | 17flowers/jpg/1/image_0145.jpg 1 1050 | 17flowers/jpg/1/image_0109.jpg 1 1051 | 17flowers/jpg/1/image_0110.jpg 1 1052 | 17flowers/jpg/1/image_0155.jpg 1 1053 | 17flowers/jpg/1/image_0097.jpg 1 1054 | 17flowers/jpg/1/image_0128.jpg 1 1055 | 17flowers/jpg/1/image_0136.jpg 1 1056 | 17flowers/jpg/1/image_0146.jpg 1 1057 | 17flowers/jpg/1/image_0104.jpg 1 1058 | 17flowers/jpg/1/image_0112.jpg 1 1059 | 17flowers/jpg/1/image_0151.jpg 1 1060 | 17flowers/jpg/1/image_0087.jpg 1 1061 | 17flowers/jpg/1/image_0093.jpg 1 1062 | 17flowers/jpg/1/image_0160.jpg 1 1063 | 17flowers/jpg/1/image_0081.jpg 1 1064 | 17flowers/jpg/1/image_0088.jpg 1 1065 | 17flowers/jpg/1/image_0158.jpg 1 1066 | 17flowers/jpg/1/image_0107.jpg 1 1067 | 17flowers/jpg/1/image_0144.jpg 1 1068 | 17flowers/jpg/1/image_0154.jpg 1 1069 | 17flowers/jpg/1/image_0083.jpg 1 1070 | 17flowers/jpg/1/image_0143.jpg 1 1071 | 17flowers/jpg/1/image_0139.jpg 1 1072 | 17flowers/jpg/1/image_0111.jpg 1 1073 | 17flowers/jpg/1/image_0127.jpg 1 1074 | 17flowers/jpg/1/image_0152.jpg 1 1075 | 17flowers/jpg/1/image_0153.jpg 1 1076 | 17flowers/jpg/1/image_0123.jpg 1 1077 | 17flowers/jpg/1/image_0135.jpg 1 1078 | 17flowers/jpg/1/image_0105.jpg 1 1079 | 17flowers/jpg/1/image_0142.jpg 1 1080 | 17flowers/jpg/1/image_0133.jpg 1 1081 | 17flowers/jpg/1/image_0118.jpg 1 1082 | 17flowers/jpg/1/image_0116.jpg 1 1083 | 17flowers/jpg/1/image_0098.jpg 1 1084 | 17flowers/jpg/1/image_0117.jpg 1 1085 | 17flowers/jpg/1/image_0095.jpg 1 1086 | 17flowers/jpg/1/image_0090.jpg 1 1087 | 17flowers/jpg/1/image_0122.jpg 1 1088 | 17flowers/jpg/1/image_0114.jpg 1 1089 | 17flowers/jpg/1/image_0119.jpg 1 1090 | 17flowers/jpg/1/image_0096.jpg 1 1091 | 17flowers/jpg/1/image_0147.jpg 1 1092 | 17flowers/jpg/1/image_0138.jpg 1 1093 | 17flowers/jpg/1/image_0159.jpg 1 1094 | 17flowers/jpg/1/image_0085.jpg 1 1095 | 17flowers/jpg/1/image_0149.jpg 1 1096 | 17flowers/jpg/1/image_0092.jpg 1 1097 | 17flowers/jpg/1/image_0130.jpg 1 1098 | 17flowers/jpg/1/image_0125.jpg 1 1099 | 17flowers/jpg/1/image_0113.jpg 1 1100 | 17flowers/jpg/1/image_0134.jpg 1 1101 | 17flowers/jpg/1/image_0140.jpg 1 1102 | 17flowers/jpg/1/image_0132.jpg 1 1103 | 17flowers/jpg/1/image_0120.jpg 1 1104 | 17flowers/jpg/1/image_0099.jpg 1 1105 | 17flowers/jpg/1/image_0091.jpg 1 1106 | 17flowers/jpg/1/image_0086.jpg 1 1107 | 17flowers/jpg/1/image_0100.jpg 1 1108 | 17flowers/jpg/1/image_0131.jpg 1 1109 | 17flowers/jpg/1/image_0108.jpg 1 1110 | 17flowers/jpg/1/image_0102.jpg 1 1111 | 17flowers/jpg/1/image_0103.jpg 1 1112 | 17flowers/jpg/1/image_0141.jpg 1 1113 | 17flowers/jpg/1/image_0089.jpg 1 1114 | 17flowers/jpg/1/image_0124.jpg 1 1115 | 17flowers/jpg/1/image_0106.jpg 1 1116 | 17flowers/jpg/1/image_0084.jpg 1 1117 | 17flowers/jpg/1/image_0156.jpg 1 1118 | 17flowers/jpg/1/image_0137.jpg 1 1119 | 17flowers/jpg/1/image_0129.jpg 1 1120 | 17flowers/jpg/1/image_0094.jpg 1 1121 | 17flowers/jpg/14/image_1197.jpg 14 1122 | 17flowers/jpg/14/image_1195.jpg 14 1123 | 17flowers/jpg/14/image_1183.jpg 14 1124 | 17flowers/jpg/14/image_1198.jpg 14 1125 | 17flowers/jpg/14/image_1179.jpg 14 1126 | 17flowers/jpg/14/image_1146.jpg 14 1127 | 17flowers/jpg/14/image_1193.jpg 14 1128 | 17flowers/jpg/14/image_1124.jpg 14 1129 | 17flowers/jpg/14/image_1145.jpg 14 1130 | 17flowers/jpg/14/image_1158.jpg 14 1131 | 17flowers/jpg/14/image_1131.jpg 14 1132 | 17flowers/jpg/14/image_1136.jpg 14 1133 | 17flowers/jpg/14/image_1143.jpg 14 1134 | 17flowers/jpg/14/image_1174.jpg 14 1135 | 17flowers/jpg/14/image_1182.jpg 14 1136 | 17flowers/jpg/14/image_1130.jpg 14 1137 | 17flowers/jpg/14/image_1122.jpg 14 1138 | 17flowers/jpg/14/image_1196.jpg 14 1139 | 17flowers/jpg/14/image_1167.jpg 14 1140 | 17flowers/jpg/14/image_1139.jpg 14 1141 | 17flowers/jpg/14/image_1154.jpg 14 1142 | 17flowers/jpg/14/image_1169.jpg 14 1143 | 17flowers/jpg/14/image_1127.jpg 14 1144 | 17flowers/jpg/14/image_1200.jpg 14 1145 | 17flowers/jpg/14/image_1140.jpg 14 1146 | 17flowers/jpg/14/image_1175.jpg 14 1147 | 17flowers/jpg/14/image_1161.jpg 14 1148 | 17flowers/jpg/14/image_1177.jpg 14 1149 | 17flowers/jpg/14/image_1137.jpg 14 1150 | 17flowers/jpg/14/image_1166.jpg 14 1151 | 17flowers/jpg/14/image_1133.jpg 14 1152 | 17flowers/jpg/14/image_1194.jpg 14 1153 | 17flowers/jpg/14/image_1135.jpg 14 1154 | 17flowers/jpg/14/image_1172.jpg 14 1155 | 17flowers/jpg/14/image_1190.jpg 14 1156 | 17flowers/jpg/14/image_1153.jpg 14 1157 | 17flowers/jpg/14/image_1186.jpg 14 1158 | 17flowers/jpg/14/image_1189.jpg 14 1159 | 17flowers/jpg/14/image_1128.jpg 14 1160 | 17flowers/jpg/14/image_1165.jpg 14 1161 | 17flowers/jpg/14/image_1192.jpg 14 1162 | 17flowers/jpg/14/image_1163.jpg 14 1163 | 17flowers/jpg/14/image_1199.jpg 14 1164 | 17flowers/jpg/14/image_1188.jpg 14 1165 | 17flowers/jpg/14/image_1155.jpg 14 1166 | 17flowers/jpg/14/image_1141.jpg 14 1167 | 17flowers/jpg/14/image_1123.jpg 14 1168 | 17flowers/jpg/14/image_1162.jpg 14 1169 | 17flowers/jpg/14/image_1149.jpg 14 1170 | 17flowers/jpg/14/image_1142.jpg 14 1171 | 17flowers/jpg/14/image_1151.jpg 14 1172 | 17flowers/jpg/14/image_1125.jpg 14 1173 | 17flowers/jpg/14/image_1156.jpg 14 1174 | 17flowers/jpg/14/image_1176.jpg 14 1175 | 17flowers/jpg/14/image_1185.jpg 14 1176 | 17flowers/jpg/14/image_1160.jpg 14 1177 | 17flowers/jpg/14/image_1180.jpg 14 1178 | 17flowers/jpg/14/image_1144.jpg 14 1179 | 17flowers/jpg/14/image_1121.jpg 14 1180 | 17flowers/jpg/14/image_1147.jpg 14 1181 | 17flowers/jpg/14/image_1191.jpg 14 1182 | 17flowers/jpg/14/image_1181.jpg 14 1183 | 17flowers/jpg/14/image_1178.jpg 14 1184 | 17flowers/jpg/14/image_1164.jpg 14 1185 | 17flowers/jpg/14/image_1126.jpg 14 1186 | 17flowers/jpg/14/image_1148.jpg 14 1187 | 17flowers/jpg/14/image_1159.jpg 14 1188 | 17flowers/jpg/14/image_1157.jpg 14 1189 | 17flowers/jpg/14/image_1134.jpg 14 1190 | 17flowers/jpg/14/image_1187.jpg 14 1191 | 17flowers/jpg/14/image_1150.jpg 14 1192 | 17flowers/jpg/14/image_1138.jpg 14 1193 | 17flowers/jpg/14/image_1170.jpg 14 1194 | 17flowers/jpg/14/image_1152.jpg 14 1195 | 17flowers/jpg/14/image_1168.jpg 14 1196 | 17flowers/jpg/14/image_1132.jpg 14 1197 | 17flowers/jpg/14/image_1129.jpg 14 1198 | 17flowers/jpg/14/image_1184.jpg 14 1199 | 17flowers/jpg/14/image_1173.jpg 14 1200 | 17flowers/jpg/14/image_1171.jpg 14 1201 | 17flowers/jpg/12/image_1012.jpg 12 1202 | 17flowers/jpg/12/image_1006.jpg 12 1203 | 17flowers/jpg/12/image_0995.jpg 12 1204 | 17flowers/jpg/12/image_1024.jpg 12 1205 | 17flowers/jpg/12/image_0990.jpg 12 1206 | 17flowers/jpg/12/image_0962.jpg 12 1207 | 17flowers/jpg/12/image_1039.jpg 12 1208 | 17flowers/jpg/12/image_1015.jpg 12 1209 | 17flowers/jpg/12/image_0967.jpg 12 1210 | 17flowers/jpg/12/image_0982.jpg 12 1211 | 17flowers/jpg/12/image_1035.jpg 12 1212 | 17flowers/jpg/12/image_1033.jpg 12 1213 | 17flowers/jpg/12/image_1014.jpg 12 1214 | 17flowers/jpg/12/image_1038.jpg 12 1215 | 17flowers/jpg/12/image_0998.jpg 12 1216 | 17flowers/jpg/12/image_0988.jpg 12 1217 | 17flowers/jpg/12/image_1018.jpg 12 1218 | 17flowers/jpg/12/image_0987.jpg 12 1219 | 17flowers/jpg/12/image_0980.jpg 12 1220 | 17flowers/jpg/12/image_0976.jpg 12 1221 | 17flowers/jpg/12/image_1013.jpg 12 1222 | 17flowers/jpg/12/image_0978.jpg 12 1223 | 17flowers/jpg/12/image_0997.jpg 12 1224 | 17flowers/jpg/12/image_0999.jpg 12 1225 | 17flowers/jpg/12/image_0977.jpg 12 1226 | 17flowers/jpg/12/image_0972.jpg 12 1227 | 17flowers/jpg/12/image_1029.jpg 12 1228 | 17flowers/jpg/12/image_0974.jpg 12 1229 | 17flowers/jpg/12/image_1023.jpg 12 1230 | 17flowers/jpg/12/image_0964.jpg 12 1231 | 17flowers/jpg/12/image_0968.jpg 12 1232 | 17flowers/jpg/12/image_1003.jpg 12 1233 | 17flowers/jpg/12/image_1036.jpg 12 1234 | 17flowers/jpg/12/image_1002.jpg 12 1235 | 17flowers/jpg/12/image_0971.jpg 12 1236 | 17flowers/jpg/12/image_0975.jpg 12 1237 | 17flowers/jpg/12/image_1027.jpg 12 1238 | 17flowers/jpg/12/image_1020.jpg 12 1239 | 17flowers/jpg/12/image_1011.jpg 12 1240 | 17flowers/jpg/12/image_1037.jpg 12 1241 | 17flowers/jpg/12/image_0989.jpg 12 1242 | 17flowers/jpg/12/image_1032.jpg 12 1243 | 17flowers/jpg/12/image_0996.jpg 12 1244 | 17flowers/jpg/12/image_1034.jpg 12 1245 | 17flowers/jpg/12/image_1017.jpg 12 1246 | 17flowers/jpg/12/image_0981.jpg 12 1247 | 17flowers/jpg/12/image_0969.jpg 12 1248 | 17flowers/jpg/12/image_0966.jpg 12 1249 | 17flowers/jpg/12/image_1016.jpg 12 1250 | 17flowers/jpg/12/image_1040.jpg 12 1251 | 17flowers/jpg/12/image_0970.jpg 12 1252 | 17flowers/jpg/12/image_1007.jpg 12 1253 | 17flowers/jpg/12/image_1022.jpg 12 1254 | 17flowers/jpg/12/image_0961.jpg 12 1255 | 17flowers/jpg/12/image_1021.jpg 12 1256 | 17flowers/jpg/12/image_1028.jpg 12 1257 | 17flowers/jpg/12/image_0993.jpg 12 1258 | 17flowers/jpg/12/image_1010.jpg 12 1259 | 17flowers/jpg/12/image_0963.jpg 12 1260 | 17flowers/jpg/12/image_1031.jpg 12 1261 | 17flowers/jpg/12/image_0992.jpg 12 1262 | 17flowers/jpg/12/image_0979.jpg 12 1263 | 17flowers/jpg/12/image_1026.jpg 12 1264 | 17flowers/jpg/12/image_1005.jpg 12 1265 | 17flowers/jpg/12/image_0991.jpg 12 1266 | 17flowers/jpg/12/image_1001.jpg 12 1267 | 17flowers/jpg/12/image_0965.jpg 12 1268 | 17flowers/jpg/12/image_0986.jpg 12 1269 | 17flowers/jpg/12/image_0985.jpg 12 1270 | 17flowers/jpg/12/image_0973.jpg 12 1271 | 17flowers/jpg/12/image_0984.jpg 12 1272 | 17flowers/jpg/12/image_1019.jpg 12 1273 | 17flowers/jpg/12/image_1004.jpg 12 1274 | 17flowers/jpg/12/image_1009.jpg 12 1275 | 17flowers/jpg/12/image_1008.jpg 12 1276 | 17flowers/jpg/12/image_0994.jpg 12 1277 | 17flowers/jpg/12/image_1030.jpg 12 1278 | 17flowers/jpg/12/image_1000.jpg 12 1279 | 17flowers/jpg/12/image_1025.jpg 12 1280 | 17flowers/jpg/12/image_0983.jpg 12 1281 | 17flowers/jpg/15/image_1246.jpg 15 1282 | 17flowers/jpg/15/image_1210.jpg 15 1283 | 17flowers/jpg/15/image_1238.jpg 15 1284 | 17flowers/jpg/15/image_1202.jpg 15 1285 | 17flowers/jpg/15/image_1272.jpg 15 1286 | 17flowers/jpg/15/image_1229.jpg 15 1287 | 17flowers/jpg/15/image_1249.jpg 15 1288 | 17flowers/jpg/15/image_1239.jpg 15 1289 | 17flowers/jpg/15/image_1216.jpg 15 1290 | 17flowers/jpg/15/image_1261.jpg 15 1291 | 17flowers/jpg/15/image_1235.jpg 15 1292 | 17flowers/jpg/15/image_1258.jpg 15 1293 | 17flowers/jpg/15/image_1255.jpg 15 1294 | 17flowers/jpg/15/image_1267.jpg 15 1295 | 17flowers/jpg/15/image_1201.jpg 15 1296 | 17flowers/jpg/15/image_1213.jpg 15 1297 | 17flowers/jpg/15/image_1209.jpg 15 1298 | 17flowers/jpg/15/image_1232.jpg 15 1299 | 17flowers/jpg/15/image_1218.jpg 15 1300 | 17flowers/jpg/15/image_1254.jpg 15 1301 | 17flowers/jpg/15/image_1259.jpg 15 1302 | 17flowers/jpg/15/image_1231.jpg 15 1303 | 17flowers/jpg/15/image_1253.jpg 15 1304 | 17flowers/jpg/15/image_1274.jpg 15 1305 | 17flowers/jpg/15/image_1222.jpg 15 1306 | 17flowers/jpg/15/image_1215.jpg 15 1307 | 17flowers/jpg/15/image_1204.jpg 15 1308 | 17flowers/jpg/15/image_1250.jpg 15 1309 | 17flowers/jpg/15/image_1280.jpg 15 1310 | 17flowers/jpg/15/image_1230.jpg 15 1311 | 17flowers/jpg/15/image_1270.jpg 15 1312 | 17flowers/jpg/15/image_1279.jpg 15 1313 | 17flowers/jpg/15/image_1223.jpg 15 1314 | 17flowers/jpg/15/image_1260.jpg 15 1315 | 17flowers/jpg/15/image_1273.jpg 15 1316 | 17flowers/jpg/15/image_1244.jpg 15 1317 | 17flowers/jpg/15/image_1242.jpg 15 1318 | 17flowers/jpg/15/image_1203.jpg 15 1319 | 17flowers/jpg/15/image_1234.jpg 15 1320 | 17flowers/jpg/15/image_1271.jpg 15 1321 | 17flowers/jpg/15/image_1225.jpg 15 1322 | 17flowers/jpg/15/image_1237.jpg 15 1323 | 17flowers/jpg/15/image_1212.jpg 15 1324 | 17flowers/jpg/15/image_1220.jpg 15 1325 | 17flowers/jpg/15/image_1278.jpg 15 1326 | 17flowers/jpg/15/image_1262.jpg 15 1327 | 17flowers/jpg/15/image_1219.jpg 15 1328 | 17flowers/jpg/15/image_1207.jpg 15 1329 | 17flowers/jpg/15/image_1214.jpg 15 1330 | 17flowers/jpg/15/image_1221.jpg 15 1331 | 17flowers/jpg/15/image_1217.jpg 15 1332 | 17flowers/jpg/15/image_1265.jpg 15 1333 | 17flowers/jpg/15/image_1252.jpg 15 1334 | 17flowers/jpg/15/image_1248.jpg 15 1335 | 17flowers/jpg/15/image_1268.jpg 15 1336 | 17flowers/jpg/15/image_1211.jpg 15 1337 | 17flowers/jpg/15/image_1263.jpg 15 1338 | 17flowers/jpg/15/image_1208.jpg 15 1339 | 17flowers/jpg/15/image_1240.jpg 15 1340 | 17flowers/jpg/15/image_1277.jpg 15 1341 | 17flowers/jpg/15/image_1233.jpg 15 1342 | 17flowers/jpg/15/image_1228.jpg 15 1343 | 17flowers/jpg/15/image_1257.jpg 15 1344 | 17flowers/jpg/15/image_1245.jpg 15 1345 | 17flowers/jpg/15/image_1247.jpg 15 1346 | 17flowers/jpg/15/image_1269.jpg 15 1347 | 17flowers/jpg/15/image_1205.jpg 15 1348 | 17flowers/jpg/15/image_1266.jpg 15 1349 | 17flowers/jpg/15/image_1251.jpg 15 1350 | 17flowers/jpg/15/image_1243.jpg 15 1351 | 17flowers/jpg/15/image_1256.jpg 15 1352 | 17flowers/jpg/15/image_1241.jpg 15 1353 | 17flowers/jpg/15/image_1224.jpg 15 1354 | 17flowers/jpg/15/image_1264.jpg 15 1355 | 17flowers/jpg/15/image_1206.jpg 15 1356 | 17flowers/jpg/15/image_1227.jpg 15 1357 | 17flowers/jpg/15/image_1226.jpg 15 1358 | 17flowers/jpg/15/image_1275.jpg 15 1359 | 17flowers/jpg/15/image_1276.jpg 15 1360 | 17flowers/jpg/15/image_1236.jpg 15 1361 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deep Learning Models 2 | 3 | 1. CBOW folder: [The Tensorflow version of the CBOW model.](https://github.com/edwardbi/DeepLearningModels/tree/master/CBOW) 4 | 2. DM folder: [The Gensim and Tensorflow versions of DM model.](https://github.com/edwardbi/DeepLearningModels/tree/master/DM) 5 | 3. RCNN folder: [The Tensorflow with tflearn version of the RCNN model.](https://github.com/edwardbi/DeepLearningModels/tree/master/RCNN) 6 | --------------------------------------------------------------------------------