Advertisement
pdpd123

專題詭異報告

Mar 2nd, 2020
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Latex 22.46 KB | None | 0 0
  1. \documentclass[12pt]{article}
  2. \usepackage[margin=20mm]{geometry}
  3. \usepackage[utf8]{inputenc}
  4. \usepackage{hyphenat}
  5. \usepackage[english]{babel}
  6.  
  7. \title{自動配音效AI}
  8. \author{王勻、林尚廷、蕭梓宏}
  9. \date{\today}
  10.  
  11. \usepackage{xeCJK}
  12. \setCJKmainfont[AutoFakeBold=3,AutoFakeSlant=.4]{標楷體}
  13. \defaultCJKfontfeatures{AutoFakeBold=3,AutoFakeSlant=.4}
  14. \XeTeXlinebreaklocale "zh"
  15. \XeTeXlinebreakskip = 0pt plus 1pt
  16. \usepackage{indentfirst}
  17. \setlength{\parindent}{2em}
  18. \usepackage{graphicx}
  19.  
  20. \usepackage[nottoc]{tocbibind}
  21.  
  22. \graphicspath{ {./picture/} }
  23. \renewcommand{\figurename}{圖}
  24. \begin{document}
  25. \begin{sloppypar}
  26. % \maketitle
  27. \tableofcontents
  28. \newpage
  29. \section*{摘要}
  30. 近日網路發達,影片的流通更為便利,但為影片加上適當的音效往往需要耗費許多人力與時間資源。本研究旨在研究利用深度學習技術訓練模型,並期望訓練後的模型能為當下影片的內容配上適當的音效,使得幫影片配音的過程可以加速,並減少人力需求。本研究主要利用keras這個python套件創建模型,並參考ResNet這個著名的深度學習模型,透過大量已標記圖片當作訓練資料,並進一步修改模型的架構,使準確率得到提升。研究結果符合預期,能在適合的類別中為影片配上合理的音效。
  31. \section{研究動機}
  32.     平常在看許多youtuber的影片,發現他們都在影片中加入很多音效,製造氣氛,我們也發現音效真的是影片中一很個重要的元素。但是我們相信當影片創作者在構思要在何處放音效、又要實際將音效放到影片之中,想必相當麻煩複雜。因此我們希望做出一個能根據畫面內容而配出相對應音效的人工智慧,只要匯入影片檔,就能幫影片適時的加上各種音效。
  33. \section{文獻探討}
  34.     關於影片配音效及影像辨識的文獻,我們找到以下幾篇發表論文:
  35.     \subsection*{視覺影像 (Visually indicated sounds) \cite{Visually-Indicated-Sounds}}
  36.         此篇研究目的希望從敲擊物品的無聲影片中,模擬、生成對應的聲音。\\
  37.  
  38.         研究團隊提出的方法先以捲積神經網路(CNN)對影片的影像進行特徵提取(feature extraction),再將代表圖片特徵的隱藏向量(latent vector)通過循環神經網路(RNN),在每「個音訊採樣點」上回傳代表對應音訊特徵的隱藏向量,最後每一小段時間以音訊資料庫中隱藏向量最相近的片段作為其音效。綜上,其解決方法如Figure \ref{VIS}所示。
  39.         \begin{figure}[h]
  40.             \begin{center}
  41.                 % \includegraphics[width=80mm]{Visually_Indicated_Sounds.png}
  42.                 \caption{Visually Indicated Sounds流程示意圖}
  43.                 \label{VIS}
  44.             \end{center}
  45.         \end{figure}\\
  46.  
  47.         儘管我們沒有足夠的時間和資源蒐集大量的資料、訓練較龐大的模型,依然在許多方面都能參考這項研究的結果:
  48.         \begin{itemize}
  49.             \item 將影片每幀通過影像辨識系統,進行特徵提取。
  50.             \item 以資料庫中的音效為其配音效。
  51.         \end{itemize}
  52. \section{研究目的}
  53.     本研究的目標為用機器學習的方法,訓練一個可自動幫影片配出符合當下影片內容的音效的系統。
  54. \section{研究方法}
  55.     \subsection{研究工具}
  56.         \begin{itemize}
  57.             \item Google Colab\cite{colab}:線上的Python編輯、執行環境,不需要自己下載套件,專為機器學習的研究而設計。
  58.             \item Keras\cite{keras}:現今最廣泛應用在機器學習上的API,提供簡單的語法來建構自己的深層神經網路。
  59.         \end{itemize}
  60.     \subsection{研究流程}
  61.         對於自動配音效的問題,最初的構想將其簡化成幾項子任務分而治之:
  62.         \begin{enumerate}
  63.             \item 針對單一圖片分類到適合該圖片的音效類別
  64.                 \begin{enumerate}
  65.                     \item 蒐集訓練資料
  66.                         \begin{itemize}
  67.                             \item 下載大量圖片
  68.                             \item 進行圖片前處理
  69.                         \end{itemize}
  70.                     \item 建構神經網路
  71.                     \item 訓練、調整類神經網路
  72.                     \item 討論模型表現
  73.                 \end{enumerate}
  74.             \item 利用模型為影片配音效
  75.                 \begin{enumerate}
  76.                     \item 擷取影片的圖片
  77.                     \item 以模型為每個畫面(frame)標記類別
  78.                     \item 處理標記,並配上音效。
  79.                     \item 討論配音成效
  80.                 \end{enumerate}
  81.             \item 針對結果調整模型
  82.         \end{enumerate}
  83. \section{研究過程}
  84.     我們透過視訊與國外的科學動畫繪圖師討論,理解了這方面客戶的需求,於是我們擬定了大致上的研究流程與近期目標。\\
  85.    
  86.     按照討論出來的的流程,我們在網路上搜尋到適合的套件,成功處理影像、建立自己的深層神經網路,然而訓練完成的模型為影片預測、標記、配音後的結果並不符合預期。我們推測是模型結構不夠完善,以及訓練資料不足所致。為了解決以上的問題,我們調整模型,改以遷移學習(transfer learning)的方式改進深層神經網路的表現,最終大幅增加訓練結果的正確率。\\
  87.  
  88.     依然,我們發現原本的構想未考慮到無聲(不配音效),或太多音效混雜的情形,因此在訓練資料上做些調整,使模型能將「無音效」也視為一個類別,結果有稍微改善,但辨識率能仍再提升。\\
  89.  
  90.     詳細實驗過程如下:
  91.     \subsection{蒐集訓練資料}
  92.         \subsubsection{下載大量圖片}
  93.             最初上網尋找配有音效的影片,並擷取每一種音效出現時的畫面作為訓練資料。但隨著模型漸大,需要的資料量快速上升時,我們上網找到\texttt{google\_images\_download}\cite{google_images_download}這個Python套件,可以用指令大量下載利用Google搜尋引擎搜尋到的圖片。利用自動化的下載方式節省了一張一張截取的時間,但可能造成蒐集到的圖片有較多的雜訊。\\
  94.            
  95.             作為實驗,我們先選用20種音效類別進行辨識,每個類別與圖片張數如下表所示:
  96.            
  97.             \begin{center}
  98.             \begin{tabular}{||c|c||c|c||c|c||c|c||}
  99.                 \hline
  100.                 類別 & 數量 & 類別 & 數量 & 類別 & 數量 & 類別 & 數量\\
  101.                 \hline
  102.                 \hline
  103.                 train passing & 183 & water drop & 151 & river & 97 & stars shining & 161\\
  104.                 \hline
  105.                 lightning & 145 & writing & 153 & screaming & 80 & high heels & 192\\
  106.                 \hline
  107.                 wave & 196 & typing & 104 & ambulance & 74 & dog barking & 198\\
  108.                 \hline
  109.                 cars & 187 & door opening & 133 & glass breaking & 120 & cat meowing & 184\\
  110.                 \hline
  111.                 cheer & 183 & fire & 94 & helicopter & 96 & blender & 75\\
  112.                 \hline
  113.             \end{tabular}
  114.         \end{center}
  115.         總數:2804張
  116.        
  117.         \subsubsection{進行圖片前處理}
  118.             一般圖片辨識神經網路的輸入會以圖片每個像素的RGB數值作為輸入,即以圖片長度、圖片寬度、RGB這三個維度構成的$(\texttt{}\times\texttt{}\times 3)$三維陣列為輸入。\\
  119.            
  120.             而為了方便處理,通常會將圖片變成相同大小(長寬相同),再進行訓練。對應的,我們也找到專門處理圖片的Python套件\texttt{PIL}\cite{PIL},可以支援將圖片以\textbf{重新取樣}的方式縮放,讀取圖片則以\texttt{matplotlib}\cite{matplotlib}套件將圖片檔轉換成上述的三維陣列。而本次實驗我們統一將圖片轉換成$(224\times224)$的大小。
  121.             \begin{figure}[h!]
  122.                 \begin{center}
  123.                     % \includegraphics[width=100mm]{dataset}
  124.                     \caption{資料庫的樣本}
  125.                     \label{dataset}
  126.                 \end{center}
  127.             \end{figure}\\
  128.     \subsection{建構深層神經網路}
  129.         起初我們尋找最適合應用在圖片辨識的神經網路,除了最基本的捲積神經網路(Convolutional Neural Network,CNN)外,有許多研究團隊開發出更優化的結構諸如ResNet、Inception、NASNet等等,最終我們以Keras提供的ResNetV2範例為架構,搭建5個區塊(blocks)的ResNetV2進行訓練。
  130.         \subsubsection{殘差神經網路(Residual Network, ResNet)\cite{resnet}}
  131.             ResNet是利用"identity connection"將一層的輸出跨越多層後連結到另一層(直接作為該層的輸入),如Figure \ref{resnet}為跨越兩層的實例。藉由這個小改變,直接的連結讓梯度可以跨越層的傳播,解決梯度消失的問題,使訓練深層的神經網路更加容易。
  132.             \begin{figure}[h!]
  133.                 \begin{center}
  134.                     % \includegraphics[width=120mm]{resnet}
  135.                     \caption{ResNet示意圖}
  136.                     \label{resnet}
  137.                 \end{center}
  138.             \end{figure}
  139.     \subsection{訓練、調整深層神經網路}
  140.         \label{first result}
  141.         針對圖片辨識的模型訓練時,常常使用資料擴增(data augmentation)的方式增加資料數量及多樣性,藉由旋轉、平移、縮放...等不同的方式作用在原圖上,使相同的資料可以被複製多次使用,更可以期望模型學習到稍微變化的圖片依然屬於同個類別。本次實驗詳細使用的資料擴增參數如下表所列:\\
  142.        
  143.         \begin{center}
  144.             \begin{tabular}{||c|c||c|c||c|c||c|c||}
  145.                 \hline
  146.                 旋轉角度 & 15° & 橫向平移 & 15\% & 垂直平移 & 15\% & 裁切 & 15\%\\
  147.                 \hline
  148.                 縮放 & 15\% & 色調平移 & 10\% & 水平翻轉 & True & & \\
  149.                 \hline
  150.             \end{tabular}
  151.         \end{center}
  152.  
  153.         訓練時我們將20\%的資料當成驗證資料(validation data)和測試資料(testing data),用以監督、客觀驗證模型的表現。在使用Adam優化下,我們跑了150個epochs,訓練紀錄如Figure \ref{self-train-history}所示,最終(測試資料)正確率約為76\%
  154.         \begin{figure}[h!]
  155.             \begin{center}
  156.                 % \includegraphics[width=140mm]{self-train-history}
  157.                 \caption{訓練結果}
  158.                 \label{self-train-history}
  159.             \end{center}
  160.         \end{figure}
  161.     \subsection{討論模型表現}
  162.         除了正確率外,為了深入探討模型在各個類別的表現,我們利用混淆矩陣(confusion matrix)來檢視每個類別的分類情形。混淆矩陣是將$(\texttt{實際類別},\texttt{辨識類別})$統計在大小為$(\texttt{類別數}\times\texttt{類別數})$的矩陣上,藉此製成圖表,方便視覺化模型在每個類別下的表現。\\
  163.        
  164.         假設第$i$張圖片的類別為$C_i$,辨識結果為$P_i$,則混淆矩陣$M$的元素可定義為:$$M_{i,j}=\frac{|\{t|C_t=i\land P_t=j\land0\leq t<|C|\}|}{|\{t|C_t=i\land0\leq t<|C|\}|}$$
  165.        
  166.         而我們依據模型在測試資料上的預測繪製了Figure \ref{self-train-CM}的表格。
  167.         \begin{figure}[h!]
  168.             \begin{center}
  169.                 % \includegraphics[width=120mm]{self-train-CM}
  170.                 \caption{混淆矩陣}
  171.                 \label{self-train-CM}
  172.             \end{center}
  173.         \end{figure}\\
  174.  
  175.         從混淆矩陣與正確率可以看出,分類情況應該是符合預期的,各個類別雖有錯誤,但都不會有太大的偏差。值得一提的是,混淆矩陣非正確的統計中,在$(\texttt{true helicopter},\texttt{cars})$,也就是直升機被誤認成車子,的情形是較明顯、較常出現的。同時我們也發現車子和直升機的形狀確實有些相近,因此模型的預測雖有錯誤,但卻是可以被理解的,這樣的解釋亦可套用在其他較常出錯的例子上。
  176.     \subsection{擷取影片中的圖片}
  177.         如前面提及,在經過神經網路標記前需要是固定大小的三維陣列圖片,因此我們找到\texttt{openCV}\cite{OpenCV}這個套件,可以將影片中的每個畫面擷取成$(\texttt{}\times\texttt{}\times 3)$的格式。再用前提的\texttt{PIL}套件,將圖片縮放成固定$(224\times224)$的大小,即完成影片的前處理作業。
  178.     \subsection{以模型為每個畫面標記類別}
  179.         取得每個畫面(frame)的三維陣列後以訓練好的模型預測之,可以得到每幀對應的類別機率分布。考慮到辨識的結果可能有很多雜訊(辨識情形並不穩定),若在標記時僅考慮單張畫面的類別,生成的音效會出現斷斷續續的問題。因此在處理標籤的部分我們採用\textbf{眾數濾波}來處理雜訊,即每個畫面的類別標記定為其前後$k$秒內畫面的類別中的眾數(前後$k$秒內出現最多次的類別)。假設第$i$個畫面的類別為$C_i$$fps$代表幀數(每秒畫面數量),則第$i$個畫面的類別標籤$T_i$$\{C_{i-k\times fps},C_{i-k\times fps+1},\cdots,C_{i+k\times fps-1},C_{i+k\times fps}\}$中的眾數。\\
  180.  
  181.         \label{repeat problem}
  182.         取得一連串的類別標記後,將相連、相同的標記配上該種音效,若該類別持續出現的時間大於資料庫中音效之長度,為求方便先以重複播放的方式解決。\\
  183.  
  184.         以此較簡化的演算法,避免文獻探討時提到蒐集大量音效、將音效轉化成音效特徵向量的需求,意味著將音效特徵從原本的多維向量簡化以類別(一維向量)取代,損失了相同音效應有的多樣性,但也降低了研究的複雜度。\\
  185.  
  186.         根據上述方法,首要任務為尋找每個類別相對應的音效,因此我們上網找到免費的音效庫free sound\cite{free-sound}、蒐集完20種類別對應的音效(附錄\ref{sound effects}),並在youtube上找到與我們所選取類別較相近的影片\cite{testing-video}作為測試影片,以上述的演算法為此影片配音效,影片結果為以下連結中的video 1,2,3\\
  187.    
  188.         20種類別音效:\\
  189.        
  190.          https://drive.google.com/open?id=1y1z2Zro4AIyIwP9E4YthGgjQcdmt\_wBW    \\
  191.        
  192.         測試影片配音結果: \\
  193.        
  194.         https://drive.google.com/open?id=1IFdHlgDYlSo4akKTXUX5HmrFM7B4xqol
  195.        
  196.     \subsection{針對影片結果調整模型}
  197.         對於生成出的音效,我們發現以下問題:
  198.         \begin{enumerate}
  199.             \item 有些片段不應該出現音效,但模型會將它分在最有可能的類別,代表每張圖片都會被配上音效,並不符合預期。因此要設計能處理「其他類別」的機制。
  200.             \item 模型無法非常正確地分出圖片的類別,推測是結構不夠完善抑或少量訓練資料無法應付多變化的圖片。
  201.         \end{enumerate}
  202.     \subsection{其他類別(other class)}
  203.         處理其他類別最直覺的想法就是在類別中新增一個其他類別,並蒐集許多不屬於這20種類別的圖片作為該類別的訓練資料。因此我們在unsplash\cite{free-image}網站上找到隨機的圖片加入其他類別的訓練資料,解決其他類別的問題。\\
  204.  
  205.         值得一提的是,在選取空類類別時,我們特別加強一些模型較易認錯的類別。例如當模型在辨識尖叫時,卻將所有人臉的圖案都辨識成尖叫。因此我們在其他類別中特別加入一般人臉的圖樣,以期模型能認出其差別。\\
  206.  
  207.         最終我們額外蒐集201張圖片作為其他類別的訓練資料,所有資料總數為3005筆。
  208.     \subsection{遷移學習(transfer learning, TL)}
  209.         遷移學習是一種將已經訓練完成的模型,套用在 不同神經網路上的技術。若選用同是圖片辨識的神經網路,即使辨識的類別不盡相同,已訓練過的神經網路依然包含有進行圖片辨識需要的\textbf{特徵提取}的資訊。換句話說,已訓練過的神經網路已學會如何擷取圖片的特徵,因此在訓練時只需要做些微調整(fine-tune),即可應用在特定的目標類別上。\\
  210.  
  211.         本次實驗我們選用Keras公開的ResNet152V2模型以及在imagenet\cite{imagenet}上訓練的權重作為引入目標。\\
  212.        
  213.         以Figure \ref{resnet}為例,我們將前段的捲積區段稱為(特徵)提取網路(extraction network),為\textbf{特徵提取}的階段;最後的全連接層(fully connected layer)稱作決策網路(decision network),為決策的階段。Keras提供的ResNet是針對1000個類別進行分類,若要將其調度到我們的目標上,則需重現建立、訓練決策網路並微調提取網路。故我們以以下方法進行遷移學習:
  214.         \begin{enumerate}
  215.             \item 載入Keras提供的RseNet152V2
  216.             \item 去除最後的全連接層(保留提取網路),並建立新的決策網路(輸出為20類)
  217.             \item 固定提取網路,訓練新建的決策網路100 epochs
  218.             \item 訓練整個網路(fine-tune)100 epochs
  219.         \end{enumerate}
  220.     \subsection{討論模型表現}
  221.         我們畫出訓練的紀錄以及混淆矩陣,如Figure \ref{TL+fine-tune-history},\ref{TL+fine-tune-CM}所示。其中在Figure \ref{TL+fine-tune-history}在100 epochs時正確率下降為fune-tune初期的影響。最終訓練達到86\%,與\ref{first result}相比高出10\%
  222.         \begin{figure}[h!]
  223.             \begin{center}
  224.                 % \includegraphics[width=140mm]{TL+fine-tune-history}
  225.                 \caption{訓練結果}
  226.                 \label{TL+fine-tune-history}
  227.             \end{center}
  228.         \end{figure}
  229.         \begin{figure}[h!]
  230.             \begin{center}
  231.                 % \includegraphics[width=120mm]{TL+fine-tune-CM}
  232.                 \caption{混淆矩陣}
  233.                 \label{TL+fine-tune-CM}
  234.             \end{center}
  235.         \end{figure}
  236.         \subsubsection{接收者操作特徵曲線(Receiver Operating Characteristic curve, ROC curve)\cite{roc}}
  237.             接收者操作特徵曲線為二元分類問題時一種評估模型表現的工具。若將「有音效」訂為陽性,「無音效」訂為陰性,則定義:
  238.             \begin{itemize}
  239.                 \item TPR(true positive rate):在所有實際為陽性的樣本中,被正確地判斷為陽性之比率(陽性樣本辨識率)。
  240.                 \item FPR(false positive rate):在所有實際為陰性的樣本中,被錯誤地判斷為陽性之比率(陰性樣本誤判率)。
  241.             \end{itemize}
  242.  
  243.             在模型預測出的機率分布上設定不同的閾值(threshold)會造成不同的辨識結果,例如閾值設定為0則代表所有樣本皆被辨識為陽性,閾值設定為1代表所有樣本皆被辨識為陰性。\\
  244.  
  245.             接收者操作特徵曲線即在閾值的變化下,將座標點$(x=FPR,y=TPR)$在座標上變動軌跡而成的曲線。正常情形下,接收者操作特徵曲線應為從左下連到右上的曲線,而曲線越偏左上角(FPR越小,TPR越大),代表模型的分類效果越佳。客觀表達之,即曲線下面積(Area Under the Curve,AUC)越大代表模型的效果越佳。\\
  246.  
  247.             綜上,我們將其他類別視為陰性,其餘類別視為陽性,繪製出接收者操作特徵曲線如Figure \ref{roc}所示。
  248.             \begin{figure}[h!]
  249.                 \begin{center}
  250.                     % \includegraphics[width=80mm]{roc}
  251.                     \caption{接收者操作特徵曲線}
  252.                     \label{roc}
  253.                 \end{center}
  254.             \end{figure}
  255.         \subsection{影片測試}
  256.             我們以相同的三部影片測試,結果如以下連結中的video 4,5,6。可看出配音效結果有大幅改善,但依然有部分片段出現不合理的配音,仍有改進的空間。\\
  257.            
  258.         https://drive.google.com/open?id=1IFdHlgDYlSo4akKTXUX5HmrFM7B4xqol
  259. \section{研究結果}
  260.     我們利用遷移學習的技術達到86\%的圖片辨識率,並依據模型的預測結果設計演算法為影片配音效。在測試影片上可以看見一定的成效,但若要更趨近人們理想的結果,仍需要相當的改進。
  261. \section{未來展望}
  262.     \begin{enumerate}
  263.         \item 增加音效類別:\\
  264.               目前支援的類別僅有20類,但常見的音效遠不止這些,因此希望可以蒐集更多類別的圖片。
  265.         \item 以循環神經網路作為決策網路:\\
  266.               儘管利用眾數濾波的技術處理標籤,預測結果依然會有短時間內不斷改變音效的情形。若以循環神經網路,同樣在每個時間點回傳該畫面的類別機率分布,如此在進行分類時考慮到時序問題,可以期望在一連串同標籤連續出現時,接下來出現的機率也會較高(趨於同標籤連續出現)。\\
  267.               除了上述的優點,我們也希望用循環神經網路代替「新增其他類別」以處理無音效問題。由前面測試影片可以看出其他類別的作用並不如預期的有效,我們推測「將其他類別視為一個類別」未必是最好的做法。因此若改以循環神經網路學習透過觀察連續畫面的類別機率分布,可以期望它在各類機率皆低、分布不穩定時將其分為其他類別。
  268.         \item 新增音效屬性:\\
  269.               每種音效都有各自的特性,由於\ref{repeat problem}中提到為求簡便,過長的連續標籤我們以重複播放音效的方式解決。但未必所以音效重複播放都是合理的,例如河水聲、歡呼、海浪聲屬於適合重複播放的;然而尖叫聲、玻璃破裂聲、尖叫聲就不適合重複持續播放。\\
  270.               因此在音效處理上我們可以將每個音效都配上適合的屬性。而屬性的類別未必只局限於重覆與不重複,將來收錄更多音效後,亦可能需要更多類別使音效以最適合的方式任意長短呈現。
  271.         \item 音效平行播放:\\
  272.               在我們演算法當中同一時間僅會有一種音效出現,然而若畫面中同時出現多種不同類別的物件,能讓這些音效同時出現應是較符合預期的結果。因此我們期望在配音效上能針對每個類別個別處理。我們提出的構想為針對每個類別都訓練一個二元分類模型(CNN+RNN),分類是否要配上該類別音效。其中在特徵提取階段可以適度的共用網路(共用同一部分的特徵提取網路)。然而此種方式在訓練資料的產生(手動標記影片)上較不易,需要大量的時間完成,因此目前較無法達成。
  273.     \end{enumerate}
  274.  
  275. \footnotesize{
  276.     \begin{thebibliography}{99}
  277.         \bibitem{Visually-Indicated-Sounds}Owens, A., Isola, P., McDermott, J., Torralba, A., Adelson, E. H., \& Freeman,W. T. (2016). Visually indicated sounds.
  278.         \bibitem{colab}Google Colab:https://colab.research.google.com
  279.         \bibitem{keras}Keras:https://keras.io/
  280.         \bibitem{google_images_download}\texttt{google\_images\_download}:https://pypi.org/project/google\_images\_download/
  281.         \bibitem{PIL}\texttt{PIL}:https://pillow.readthedocs.io/en/stable/
  282.         \bibitem{matplotlib}\texttt{matplotlib}:https://matplotlib.org/
  283.         \bibitem{resnet}He, K., Zhang, X., Ren, S., \& Sun, J. (2016). Deep residual learning for imagerecognition.
  284.         \bibitem{openCV}\texttt{openCV}:https://opencv.org/
  285.         \bibitem{free-sound}free sound:https://freesound.org/browse/tags/sound-effects/
  286.         \bibitem{testing-video}測試影片:\\
  287.         https://youtu.be/hw\_jOnb6Jr0\\
  288.         https://youtu.be/HAF0loQa9jo\\
  289.         https://youtu.be/SzHQkjnwsQw
  290.         \bibitem{free-image}free image:https://unsplash.com/
  291.         \bibitem{imagenet}imagenet:http://www.image-net.org/
  292.         \bibitem{roc}ROC curve:https://zh.wikipedia.org/wiki/RO\%E6\%9B\%B2\%E7\%BA\%BF
  293.     \end{thebibliography}
  294. }
  295. \end{sloppypar}
  296. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement