使用tensorflow構建自己的模型

使用tensorflow構建自己的模型,有兩種方法,一種是不需要標註,只能識別裁剪過的照片,一種是需要標註,識別出來可以在圖片上進行範圍的標註。
先給圖看看效果:
在這裏插入圖片描述
這是進行標註識別的效果,如果沒有進行標註,照片不僅需要裁剪,還只會返回匹配率,不會有標註效果,並且識別率不高,只能進行單一目標的識別。
第一種進行標註:
一.開發環境的搭建
window7
pycharm
python3.60
Anaconda4.3.0
tensorflow1.12.0
1.pythcam可以到超鏈接去下載,我下載的是社區版的,下載安裝後就可以使用,安裝過程網上很多,可自行百度。
2.安裝Anaconda以及python
Anaconda下載地址在此處找到
在這裏插入圖片描述
進行下載,安裝後正常進行安裝,注意一點就可以了
在這裏插入圖片描述
兩個選項記得勾選。安裝之後打開命令行,輸入conda --version查看安裝版本
之前的tensorflow好像是不支持python3.6的,所以需要安裝python3.5版本,現在已經完全支持了。所以接下來安裝tensorflow就沒有之前那麼複雜了。安裝完Anaconda是自帶python版本的,可以直接在命令行輸入python查看安裝的python版本,想要退出python模式,輸入exit()就可以了。
3.安裝tensorflow
我這裏選擇的是cpu版本的TF,可根據以及顯卡選擇cpu或者gpu版本,但聽說gpu很多坑,所以我就選擇了cpu版本。
打開命令行,輸入:pip install tensorflow==1.12.0等待安裝就可以了。安裝成功後可以查看安裝TF版本
依次輸入:

python
import tensorflow as tf
tf.__version__

如果在輸入:import tensorflow as tf出現下圖的錯誤的時候
在這裏插入圖片描述
輸入exit()退出python模式,輸入pip install protobuf==3.6.0之後就可以了。如果沒有這樣的錯誤,建議也這樣操作一次,因爲有可能在使用pyCharm訓練模型的時候會出現這樣的錯誤。
到此環境已經配好了,下面要開始進行模型的訓練了。
二.模型訓練
因爲模型訓練我是參考其它博客完成的,在這裏我給出博客的地址,大家可以參考一下,在這裏只記錄我在訓練模型的時候出現的錯誤。坑比較多,一些錯誤可能都已經忘記了,在這裏先記錄還記得的錯誤,如果有其它錯誤,大家可以提出來。
第一步

https://blog.csdn.net/zj1131190425/article/details/80711857

此鏈接是這位大佬訓練前的準備工作,大家根據步驟完成就行了。
第二步
要使用labelImg進行標註。

https://blog.csdn.net/zj1131190425/article/details/80726353

這個比較複雜了,推薦直接使用下面這位大神的操作。

https://blog.csdn.net/python_pycharm/article/details/85338801

第三步

https://blog.csdn.net/zj1131190425/article/details/80778888

第三步的坑實在是太多了,一些報錯都忘記了,只記錄還記得的,想起來回補充的。

錯誤一:

ModuleNotFoundError: No module named 'numpy.testing.decorators'

出現上面錯誤的,可以打開命令行依次輸入以下命令,可以解決

pip uninstall numpy
pip install numpy==1.17.0

錯誤二:

from google.protobuf.pyext import _message ImportError: DLL load failed: 找不到指定的程序。

打開命令行輸入下列命令

pip install protobuf==3.6.0

錯誤三:
運行train.py有大量no module named object_detection錯誤
在form後加上 research.即可,記住,是大量,要修改的地方很多

錯誤四:
運行train.py出現少量no module named net錯誤
在form後加上research.slim.即可

錯誤五:
運行train.py的時候還會有一些no module named XXX的錯誤,
這主要是找不到路徑造成的,可找到你安裝tensorflow的目錄,尋找這個XXX,輸入正確的路徑即可解決。

錯誤六:
運行train.py出現FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'._np_quint8 = np.dtype([("quint8", np.uint8, 1)])
進入dtype.py中將np.dtype([("quint8", np.uint8, 1)])改爲np.dtype([("quint8", np.uint8, (1,))])就可以解決,雖然出現這個錯誤,但是不影響程序運行,還是最好還是改一下,一共需要改6處,當初我改了6個地方。

錯誤七:
同時還有一些TF與python版本不對應的錯誤,上面的版本是我自己親測可以使用的。
其它錯誤暫時記不清楚,就不記錄了。如果大家有其它錯誤,歡迎提出。

第二種:不進行標註
這種方法很少用,也很簡單。是自己的筆記本上面的環境,之後再補充。

給一個鏈接:Android Studio導入TF官方demo的過程

https://blog.csdn.net/weixin_44059750/article/details/104837410

最後感謝參考博客所屬的大神,膜拜。
根據官方demo和參考github開源項目完成了三種識別方式,一種是無標註照片識別,一種是標註照片識別,一種是標註實時攝像頭識別。想要demo的可以說下。

小編訓練模型是要導入到Android中去使用的,記錄一下導入到Android的坑。
上述訓練模型只會生成一個pd文件,要想在Android中使用還需要一個txt文件,複製過來的txt文件的第一行???不能刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章