feather.tex 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. \documentclass[10pt]{beamer}
  2. \usetheme[
  3. %%% option passed to the outer theme
  4. % progressstyle=fixedCircCnt, % fixedCircCnt, movingCircCnt (moving is deault)
  5. ]{Feather}
  6. % If you want to change the colors of the various elements in the theme, edit and uncomment the following lines
  7. % Change the bar colors:
  8. %\setbeamercolor{Feather}{fg=red!20,bg=red}
  9. % Change the color of the structural elements:
  10. %\setbeamercolor{structure}{fg=red}
  11. % Change the frame title text color:
  12. %\setbeamercolor{frametitle}{fg=blue}
  13. % Change the normal text color background:
  14. %\setbeamercolor{normal text}{fg=black,bg=gray!10}
  15. %-------------------------------------------------------
  16. % INCLUDE PACKAGES
  17. %-------------------------------------------------------
  18. \usepackage[utf8]{inputenc}
  19. \usepackage[english]{babel}
  20. \usepackage[T1]{fontenc}
  21. \usepackage{helvet}
  22. \usepackage{multirow}
  23. %-------------------------------------------------------
  24. % DEFFINING AND REDEFINING COMMANDS
  25. %-------------------------------------------------------
  26. % colored hyperlinks
  27. \newcommand{\chref}[2]{
  28. \href{#1}{{\usebeamercolor[bg]{Feather}#2}}
  29. }
  30. %-------------------------------------------------------
  31. % INFORMATION IN THE TITLE PAGE
  32. %-------------------------------------------------------
  33. \title[] % [] is optional - is placed on the bottom of the sidebar on every slide
  34. { % is placed on the title page
  35. \textbf{Complete The Look Recommendation with Street Fashion Images}
  36. }
  37. \subtitle[Complete The Look Recommendation]
  38. {
  39. % \textbf{v. 1.0.0}
  40. }
  41. \author[Bhaskar Bagchi]
  42. { Bhaskar Bagchi \\
  43. {\ttfamily bagchi.bhaskar@cse.iitkgp.ernet.in}
  44. }
  45. \institute[]
  46. {
  47. Department of Computer Science and Engineering\\
  48. Indian Institute of Technology, Kharagpur\\
  49. %there must be an empty line above this line - otherwise some unwanted space is added between the university and the country (I do not know why;( )
  50. }
  51. \date{\today}
  52. %-------------------------------------------------------
  53. % THE BODY OF THE PRESENTATION
  54. %-------------------------------------------------------
  55. \begin{document}
  56. %-------------------------------------------------------
  57. % THE TITLEPAGE
  58. %-------------------------------------------------------
  59. {\1% % this is the name of the PDF file for the background
  60. \begin{frame}[plain,noframenumbering] % the plain option removes the header from the title page, noframenumbering removes the numbering of this frame only
  61. \titlepage % call the title page information from above
  62. \end{frame}}
  63. \begin{frame}{Content}{}
  64. \tableofcontents
  65. \end{frame}
  66. %-------------------------------------------------------
  67. \section{Introduction}
  68. %-------------------------------------------------------
  69. \subsection{Problem Definition}
  70. \begin{frame}{Introduction}{Problem Definition}
  71. %-------------------------------------------------------
  72. \begin{itemize}
  73. \item<1-> Given an item(clothing) in the shopping cart the problem statement is to suggest items complementary to it which may contain garments or accessories which makes a complete set as per current fashion.
  74. % \item<2-> The rest of the theme is provided under the GNU General Public License v. 3 (GPLv3) \chref{http://www.gnu.org/licenses/}{http://www.gnu.org/licenses/}. This means that you can redistribute it and/or modify it under the same license.
  75. \end{itemize}
  76. \end{frame}
  77. \begin{frame}{Introduction}{Problem Definition}
  78. \begin{figure}[t]
  79. \centering
  80. \includegraphics[height=\dimexpr11\textheight/16\relax]{reco_exst_1}
  81. \caption{Existing Recommendation Systems}
  82. \end{figure}
  83. \end{frame}
  84. \begin{frame}{Introduction}{Problem Definition}
  85. \begin{figure}[t]
  86. \centering
  87. \includegraphics[height=\dimexpr11\textheight/16\relax]{Untitled}
  88. \caption{Visualization of the problem statement}
  89. \end{figure}
  90. \end{frame}
  91. %-------------------------------------------------------
  92. \section{Mathematical Formulation}
  93. %-------------------------------------------------------
  94. \subsection{Feature Representation}
  95. % \begin{frame}{Mathematical Formulation}{Feature Representation}
  96. % %-------------------------------------------------------
  97. % \begin{itemize}
  98. % \pause
  99. % \item<1-> Say we have n training images.
  100. % \pause
  101. % \item<2-> Each image `\emph{i}' has `\emph{p}' parts.
  102. % \pause
  103. % \item<3-> Each part is represented by a \emph{k-dimensional} feature vector, \emph{h}.
  104. % \end{itemize}
  105. % \pause
  106. % \begin{block}{}
  107. % Thus each can be represented as follows:
  108. % \begin{itemize}
  109. % \item {\tt Image H$_{i}${$^{T}$} = [h$_{i1}${$^{T}$}, h$_{i2}${$^{T}$},... , h$_{ip}${$^{T}$}].}
  110. % \item {\tt Dataset H = [H$_{1}$, H$_{2}$,... , H$_{n}$]}
  111. % \end{itemize}
  112. % \end{block}
  113. % \pause
  114. % \begin{block}{}
  115. % The recommendation task will be to generate a predictive model \emph{M}(\emph{H},\emph{q}), where \emph{H} is the training set and given some query \emph{q} with some part m missing, we can predict the m$^{th}$ part.
  116. % \end{block}
  117. % \end{frame}
  118. % %-------------------------------------------------------
  119. % \subsection{Simplified Formulation}
  120. % \begin{frame}{Mathematical Formulation}{Simplified Formulation}
  121. % %-------------------------------------------------------
  122. % The previous formulation is very rigid, where each image has to have \emph{p} parts. So we have following relaxation.
  123. % \pause
  124. % \begin{block}{Relaxations}
  125. % \begin{itemize}
  126. % \item Instead of asserting each image to have \emph{p} parts we keep it flexible.
  127. % \item We also don't define any particular order of parts of clothings.
  128. % \item Instead of using numeric features we use textual tags corresponding to each part of the garment/accessory as feature.
  129. % \item Thus each image is defined by a number of features, which are 2--tuples $\{ Cloth-type \: {:} \: Cloth-description/color \}$.
  130. % \end{itemize}
  131. % \end{block}
  132. % \end{frame}
  133. \begin{frame}{Mathematical Formulation}{Simplified Formulation}
  134. \begin{block}{}
  135. Given an image $i$ containing `$k$' part--features, we describe the image $P_i$ as $P_i^{T} := [p_{i1}, p_{i2}, ..., p_{ik}]$ where each $p_{ij}$ are textual part--features, which are 2--tuples.
  136. \end{block}
  137. \pause
  138. \begin{block}{}
  139. We learn a model from our dataset of fashion images, say \textbf{P}, where \textbf{P} := $[P_1, P_2, ... P_n]^{T}$.
  140. \end{block}
  141. \pause
  142. \begin{block}{}
  143. The task of our recommendation system is, given one or more apparel, and corresponding part features $p$'s as input query, recommend garments which can be worn with it/them as a set.
  144. \end{block}
  145. \end{frame}
  146. %-------------------------------------------------------
  147. % \section{Approach}
  148. % \subsection{Basic Approach}
  149. % \begin{frame}{Approach}{Basic Approach}
  150. % %-------------------------------------------------------
  151. % \begin{enumerate}
  152. % \pause
  153. % \item Make a bipartite graph where one of the partite sets is \emph{images} and the other is \emph{features}. Edge exists if feature is present in the image.
  154. % \pause
  155. % \item Take the projection of this graph on the feature set, thus we get the co--occurrence graph.
  156. % \pause
  157. % \item For given query part--feature, calculate its SimRank with its neighbours and return the k--nearest--neighbours.
  158. % \pause
  159. % \item In case of more than one feature--parts in the query, for each part find the k--nearest--neighbours.
  160. % \pause
  161. % \item For each k--nearest--neighbour list combine them into a single list using \emph{Broda's Rank Aggregation}.
  162. % \end{enumerate}
  163. % \end{frame}
  164. \begin{frame}{Approach}{Flow Diagram}
  165. \begin{figure}[t]
  166. \centering
  167. \includegraphics[height=\dimexpr11\textheight/16\relax]{flowchart}
  168. \caption{Flow Diagram of Proposed Approach}
  169. \end{figure}
  170. \end{frame}
  171. \subsection{Fashion Websites \& Ground Truth}
  172. \begin{frame}{Fashion Websites \& Ground Truth}{Scraping Fashion Websites}
  173. \begin{itemize}
  174. \item Scraped more than 500 images of female fashionstas from \url{www.chictopia.com}. These images covered an appreciable range of street fashion from corporate dressing sense to the most casual of the dresses.
  175. \pause
  176. \item Created a vocabulary of part features. Manually normalize the tags associated with each image.
  177. \pause
  178. \item Ended up with a codebook of total of \textit{48} unique categories including garments like tops, jeans, etc. and accessories like watches, bracelets, etc. and \textit{632} unique items i.e. category-description pair.
  179. \end{itemize}
  180. %\begin{figure}[t]
  181. %\centering
  182. %\includegraphics[scale=0.3]{simrank}
  183. %\caption{Directed graph representing websites and hyperlinks}
  184. %\end{figure}
  185. \end{frame}
  186. \subsection{Bipartite Network and Co--occurrence Graph}
  187. \begin{frame}{Bipartite Network and Co--occurrence Graph}{}
  188. \begin{itemize}
  189. \item A bipartite graph is formed with dataset images $P$'s as the first partite sets and part--features $p_i$'s as the second partite set. There exists an edge between ever part feature and the image in which it occurred.
  190. \pause
  191. \item The bipartite graph is then projected to the set of part features.
  192. \pause
  193. \item The projected graph so obtained is a weighted co--occurrence graph of the part features. Construction of this graph gives us the relation between different garments and accessories which can be used together and are complementary to each other.
  194. \pause
  195. \item This step helps us learn a correlation and inter-dependence between various part features from the dataset.
  196. \end{itemize}
  197. %Mathematically SimRank score is defined recursively. Let us denote similarity between objects a and b by S(a, b) $\in$ [0, 1].
  198. %\begin{block}{Formula}
  199. %\begin{equation}
  200. %S(a, b) = \left\{ \begin{array}{ll}
  201. % 1 & \mbox{if $a=b$}; \\
  202. % \frac{C}{\left | I(a) \right | \left | I(b) \right |}\sum_{i = 0}^{\left | I(a) \right |}\sum_{j = 0}^{\left | I(b) \right |}S\left(I_i\left(a\right), I_j\left(b\right ) \right) & \mbox{$otherwise$}.\end{array} \right.
  203. %\end{equation}
  204. %where, \emph{C} is a constant between 0 and 1 which controls the amount of score propagation in recursive call, \emph{I(a)} is the set of incoming edges to a and \emph{I(b)} is the set of incoming edges to b.
  205. %\end{block}
  206. \end{frame}
  207. \subsection{Similarity Measure \& Nearest Neighbor Consensus}
  208. \begin{frame}{Similarity Measure \& Nearest Neighbor}{Similarity Measure}
  209. \begin{itemize}
  210. \item The co-occurrence graph falls in a domain where nodes represents the objects and edges represents the relations between them. We use \textit{Simrank} to measure the similarity based on \textit{structural context} of the graph.
  211. \pause
  212. \item Convert the co--occurrence graph into a directed graph where each edge between part features $p_a$ and $p_b$ in the original graph is replaced by two directed edges $p_a \rightarrow p_b$ and $p_b \rightarrow p_a$ both with weights equal to the weight of original edge.
  213. \pause
  214. \item Compute \textit{Simrank} between each pair of nodes.
  215. \end{itemize}
  216. %\pause
  217. %\begin{block}{Types of rank aggregation problems}
  218. %\begin{enumerate}
  219. %\item If the individual lists contain all the elements in \emph{U} then they are called complete lists. They are a total ordering of \emph{U}.
  220. %\item There are situations where full lists are not convenient, and even not possible. In such cases the lists contain an ordered list of a subset of elements of \emph{U}. $ \left | L_i \right | < \left | U \right |$. Such lists are called partial lists.
  221. %\item A special case of the partial list problem is the top--K list. In this ranking we take the top K elements from each ordered list, and so we know that all the elements that are not present in the list are ranked below those which are present in the list.
  222. %\end{enumerate}
  223. %\end{block}
  224. \end{frame}
  225. \begin{frame}{Similarity Measure \& Nearest Neighbor}{Nearest Neighbor Consensus}
  226. \begin{itemize}
  227. \item Given a part--feature $p$ as query we locate the node corresponding to that part feature in the co--occurrence graph.
  228. \pause
  229. \item We find out other nodes which are close to it, i.e. nodes which have highest simrank value with this node.
  230. \pause
  231. \item The rationale behind this step is that since the graph had edges between part features that were used together by fashionistas and as the simrank values decrease with increase in node distances, the $k$--nearest--neighbors will be those part features which were frequently used with the selected item and are contemporary to it.
  232. \pause
  233. \item We get a list of k part features $p_1, p_2, ... p_k$ which are structurally close to the input feature and thus they can be recommended for the given query part feature.
  234. \end{itemize}
  235. \end{frame}
  236. \subsection{Aggregating Ranked Item Recommendations}
  237. \begin{frame}{Aggregating Ranked Item Recommendations}{Rank Aggregation}
  238. \begin{itemize}
  239. \item Say we have $j$ part features $p_1, p_2, ... p_j$ as input query, we find out individual $k$--nearest--neighbors for each part feature.
  240. \pause
  241. \item we have $j$ ranked lists, each with $k$ members, which are recommendation related to each input feature.
  242. \pause
  243. \item Assigns a score corresponding to position in which a part feature appears within each ranked list. In our case, for each list $i$, ${p_a}^i$ is assigned a weight ${B_{p_a}}^i$ = $k$ * fraction of part features in the list appearing below $p_a$.
  244. \pause
  245. \item The \textit{Broda} score of each element $B_{p_a}$ is the the sum of \textit{Broda} scores for that part feature in all the lists.
  246. \pause
  247. \item We can recomment the top $k$ elements from this ranked list to the user.
  248. \end{itemize}
  249. \end{frame}
  250. %-------------------------------------------------------
  251. \section{Experimental Results}
  252. \begin{frame}{Experimental Results}{Evaluation Methodology}
  253. %-------------------------------------------------------
  254. \begin{itemize}
  255. \item We took 20 images as test set from our dataset. Since each image is user tagged, we have labelled ground truth for computing the required metrics.
  256. \pause
  257. \item For each image we took, we used all its part features individually as one feature input. We also used various permutations of 2 part features and 3 part features as input to the recommender and compared the recommended part features with the ground truth.
  258. \pause
  259. \item Then we calculated \textit{precision, recall} and \textit{f1} values for 158 sets of recommendations.
  260. \end{itemize}
  261. \pause
  262. \begin{block}{Formula}
  263. $precision = \frac{no \ of \ matched \ recommendations}{no \ of \ recommendations}$
  264. \newline
  265. $recall = \frac{no \ of \ matched \ recommendation}{no \ of \ items \ in \ actual \ image}$
  266. \end{block}
  267. \end{frame}
  268. \begin{frame}{Experimental Results}{Results}
  269. Out of the 158 recommendation sets that we tested, 53 were 1 part feature input, 54 were 2 part feature input and 51 as 3 part feature input. For each generated recommendations we calculated the precision and recall.
  270. \begin{table}
  271. \centering
  272. \caption{Precision}
  273. \begin{tabular}{|c|c|c|c|}
  274. \hline
  275. No. of inputs & Max Precision & Avg Precision\\
  276. \hline\hline
  277. 1 & 1 & 0.31\\
  278. 2 & 0.75 & 0.31\\
  279. 3 & 0.6 & 0.28\\
  280. \hline\end{tabular}
  281. \label{table:precision}
  282. \end{table}
  283. \begin{table}
  284. \centering
  285. \caption{Recall}
  286. \begin{tabular}{|c|c|c|c|}
  287. \hline
  288. No. of inputs & Max Recall & Avg Recall\\
  289. \hline\hline
  290. 1 & 0.8 & 0.23\\
  291. 2 & 1 & 0.44\\
  292. 3 & 1 & 0.48\\
  293. \hline\end{tabular}
  294. \label{table:recall}
  295. \end{table}
  296. \end{frame}
  297. \begin{frame}{Experimental Results}{Results}
  298. \begin{table}
  299. \centering
  300. \caption{f1 score}
  301. \begin{tabular}{|c|c|c|}
  302. \hline
  303. No. of inputs & Max f1 & Min f1\\
  304. \hline\hline
  305. 1 & 0.89 & 0.13\\
  306. 2 & 0.71 & 0.1\\
  307. 3 & 0.67 & 0.1\\
  308. \hline\end{tabular}
  309. \label{table:f1}
  310. \end{table}
  311. \begin{figure}[htb]
  312. \centering
  313. \includegraphics[scale=0.4]{g11}
  314. \caption{Precision-Recall for 1 item input}
  315. \label{fig:g1}
  316. \end{figure}
  317. \end{frame}
  318. \begin{frame}{Experimental Results}{Precision Recall Graphs}
  319. \begin{figure}[htb]
  320. \centering
  321. \includegraphics[scale=0.4]{g22}
  322. %\caption{Precision-Recall for 2 item input}
  323. \label{fig:g2}
  324. \end{figure}
  325. \begin{figure}[htb]
  326. \centering
  327. \includegraphics[scale=0.4]{g33}
  328. %\caption{Precision-Recall for 3 item input}
  329. \label{fig:g3}
  330. \end{figure}
  331. \end{frame}
  332. \begin{frame}{Experimental Results}{Manual Evaluation Results}
  333. \begin{table}
  334. \centering
  335. \caption{User rating for recommendation}
  336. \begin{tabular}{|c|c|c|}
  337. \hline
  338. Rate(out of 10) & Frequency & Cumulative Freq.\\
  339. \hline\hline
  340. 10 & 1 & 1\\
  341. 9 & 2 & 3\\
  342. 8 & 9 & 12\\
  343. 7 & 9 & 21\\
  344. 6 & 5 & 26\\
  345. 5 & 11 & 37\\
  346. 4 & 11 & 48\\
  347. 3 & 6 & 54\\
  348. 2 & 4 & 58\\
  349. 1 & 2 & 60\\
  350. \hline\end{tabular}
  351. \label{table:userRating}
  352. \end{table}
  353. \end{frame}
  354. %-------------------------------------------------------
  355. \section{Future Work}
  356. \begin{frame}{Future Work}
  357. %-------------------------------------------------------
  358. \begin{itemize}
  359. \item Features for representation of parts are to be improved by incorporating visual features. Inclusion of visual features will also include the analysis of features like color, texture, etc. which is expected to improve the quality of evaluation.
  360. \item A feedback system can be added to the system as to increase edge weights to the features which are shopped together by users. This will be a self learning system and incorporate the changes in trending fashion all by itself.
  361. \end{itemize}
  362. \end{frame}
  363. %-------------------------------------------------------
  364. \section{References}
  365. \begin{frame}{References}
  366. %-------------------------------------------------------
  367. \bibliographystyle{abbrv}
  368. %\bibliography{sigproc}
  369. \begin{thebibliography}{1}
  370. \bibitem{rankAggregation}
  371. C.~Dwork, R.~Kumar, M.~Naor, and D.~Sivakumar.
  372. \newblock Rank aggregation methods for the web.
  373. \newblock In {\em Proceedings of the 10th International Conference on World
  374. Wide Web}, WWW '01, pages 613--622, New York, NY, USA, 2001. ACM.
  375. \bibitem{simrank}
  376. G.~Jeh and J.~Widom.
  377. \newblock Simrank: A measure of structural-context similarity.
  378. \newblock In {\em Proceedings of the Eighth ACM SIGKDD International Conference
  379. on Knowledge Discovery and Data Mining}, KDD '02, pages 538--543, New York,
  380. NY, USA, 2002. ACM.
  381. \bibitem{bundleReco}
  382. T.~Zhu, P.~Harrington, J.~Li, and L.~Tang.
  383. \newblock Bundle recommendation in ecommerce.
  384. \newblock In {\em Proceedings of the 37th International ACM SIGIR Conference on
  385. Research \&\#38; Development in Information Retrieval}, SIGIR '14, pages
  386. 657--666, New York, NY, USA, 2014. ACM.
  387. \end{thebibliography}
  388. \end{frame}
  389. {\1
  390. \begin{frame}[plain,noframenumbering]
  391. \finalpage{Thank you! Questions?}
  392. \end{frame}}
  393. \end{document}