目前我已經依照以下網址
https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/tensorflow-1.14/training.html
最後
我在該網址
https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/auto_examples/plot_object_detection_saved_model_tf1.html
下載程式Download Python source code:plot_object_detection_saved_model_tf1.py
並運用PyCharm去執行 Object Detection Demo
結果跳出一堆問題
如下!
Traceback (most recent call last):
File "D:\Python\Python310\lib\site-packages\keras\utils\data_utils.py", line 300, in get_file
urlretrieve(origin, fpath, DLProgbar())
File "D:\Python\Python310\lib\site-packages\keras\utils\data_utils.py", line 84, in urlretrieve
response = urlopen(url, data)
File "D:\Python\Python310\lib\urllib\request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "D:\Python\Python310\lib\urllib\request.py", line 519, in open
response = self._open(req, data)
File "D:\Python\Python310\lib\urllib\request.py", line 541, in _open
return self._call_chain(self.handle_open, 'unknown',
File "D:\Python\Python310\lib\urllib\request.py", line 496, in _call_chain
result = func(*args)
File "D:\Python\Python310\lib\urllib\request.py", line 1419, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib.error.URLError:
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\maggi\Downloads\plot_object_detection_saved_model_tf1 (1).py", line 43, in
IMAGE_PATHS = download_images()
File "C:\Users\maggi\Downloads\plot_object_detection_saved_model_tf1 (1).py", line 36, in download_images
image_path = tf.keras.utils.get_file(fname=filename,
File "D:\Python\Python310\lib\site-packages\keras\utils\data_utils.py", line 304, in get_file
raise Exception(error_msg.format(origin, e.errno, e.reason))
Exception: URL fetch failure on D:/TensorFlow/workspace/training_demo/images/test/RGBC130_Test_1.jpg: None -- unknown url type: d
Downloading data from D:/TensorFlow/workspace/training_demo/images/test/RGBC130_Test_1.jpg
Process finished with exit code 1
不知該怎麼辦
另外我也有從網址
https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/latest/auto_examples/plot_object_detection_saved_model_tf1.html
下載第2個檔案用Jupyter打開
Download Jupyter notebook: plot_object_detection_saved_model_tf1.ipynb
但是也跳不出物件辨識的樣式,請問有台北人可以現場教學嗎
首先, 我不熟 Tensorflow,後續只是從錯誤訊息做猜測。
我從在 Object Detection From TF1 Saved Model 提供的 plot_object_detection_saved_model_tf1.py 檔案內容,
加上你的部分錯誤訊息:
Traceback (most recent call last):
File "C:\Users\maggi\Downloads\plot_object_detection_saved_model_tf1 (1).py", line 43, in
IMAGE_PATHS = download_images()
File "C:\Users\maggi\Downloads\plot_object_detection_saved_model_tf1 (1).py", line 36, in download_images
image_path = tf.keras.utils.get_file(fname=filename,
File "D:\Python\Python310\lib\site-packages\keras\utils\data_utils.py", line 304, in get_file
raise Exception(error_msg.format(origin, e.errno, e.reason))
Exception: URL fetch failure on D:/TensorFlow/workspace/training_demo/images/test/RGBC130_Test_1.jpg: None -- unknown url type: d
Downloading data from D:/TensorFlow/workspace/training_demo/images/test/RGBC130_Test_1.jpg
我猜,你是修改 plot_object_detection_saved_model_tf1.py
原檔案的這部分(part-Begin@Line[31])而發生異常:
def download_images():
base_url = 'https://raw.githubusercontent.com/tensorflow/models/master/research/object_detection/test_images/'
filenames = ['image1.jpg', 'image2.jpg']
在程式的 download_images()
中, 會用 tensorflow.keras.utils.get_file()
從 「base_url
+ filenames
」 組成的 「網路 URL」 去下載網路上的檔案, 並將傳回的本地端檔案位置存放於回傳(return)用的 image_paths
內。
故若想要直接使用本地端檔案,我能想到兩個方案,請擇一應用:
file://
(如果 Python 環境有支援的話;只是這方案有點繞,我個人不喜歡)
part-Begin@Line[32]:
base_url = 'file:///D:/TensorFlow/workspace/training_demo/images/test/'
part-Begin@Line[43]:
#IMAGE_PATHS = download_images()
## 自訂 IMAGE_PATHS 內容而不使用 download_images() 與其回傳值;
IMAGE_PATHS = []
myBasePath = r'D:\TensorFlow\workspace\training_demo\images\test'
myFileNames = ['RGBC130_Test_1.jpg', 'RGBC130_Test_2.jpg']
for i in myFileNames:
IMAGE_PATHS.append(os.path.join(myBasePath, i))
另,發文語法請參考:Markdown說明 - iT邦幫忙
另 + 另,我不是台北人~ (逃~
我也不是台北人~
謝謝,我先研究一下您的文章,如果方便的話是否能跟您要個LINE的資訊詢問
你好,我先試了你第一個方法:
並運用PyCharm去執行下載的plot_object_detection_saved_model_tf1.py該檔案
我依照你寫的第一個方法修改這些內容
((((base_url = 'file:///D:/TensorFlow/workspace/training_demo/images/test/'))))
又跳了一個問題,請求您幫忙~~~謝謝
這是我用第二種方法,
我從內容找到IMAGE_PATHS = download_images()
然後我看您的文章把IMAGE_PATHS = download_images()寫成#IMAGE_PATHS = download_images()
我就在那個位置學著往下寫
然後又出現了問題
很抱歉我不懂程式
也沒有基礎
在這打擾您
尋求您幫忙了
這是用方法2出現的問題
@ Maggie
你在 方案#1 遇到的問題:
是因為你的 TensorFlow (abbr.:TF
) 與 TensorFlow Models (abbr.:TF-M
) 的程式碼(版本)不匹配導致的。
基本原因是你安裝的 TF-M
使用到 tensorflow.gfile
, 但你安裝的 TF
沒有這個屬性; 新版本的 TF
是以 tensorflow.io.gfile
取代舊版本的 tensorflow.gfile
。
(AttributeError: module 'tensorflow' has no attribute 'gfile' 有一些討論)
要處裡的話,只能自行嘗試不同版本的匹配狀況了。
因為你發問的連結有混用新舊版本(下區塊第二行的X
為差異處):
(...).readthedocs.io/en/tensorflow-1.14/training.html
------------------------XXXXXXXXXXXXXXX
(...).readthedocs.io/en/latest/auto_examples/plot_(...)
我覺得你使用到不匹配的版本。(不知你是否注意到,那兩個教程網頁的左上角有標示版本喔!)請試著將所有 TF
相關軟體使用最新版本,或是版本釋出時期相近的。(至少教材與教具請使用同一版本~)
Update:
我後來注意到版本不同,範例內容的差異性太大,難怪你會混用……
那就只能照前述的:試著將所有 TF
相關軟體使用最新版本,或是版本釋出時期相近的。
P.s.TF-M
的最新版可在這裡找。TensorFlow Official Models 2
應該就能匹配 TensorFlow 2
;
但跟教程能不能搭起來就是另一回事了~
你在 方案#2 遇到的問題:
是因為你的 IMAGE_PATHS.append( ... )
程式碼多一層小括號 ()
,導致 join()
把 (myBasePath, i)
識別為 tuple
而發生例外。 請確認比對你我的程式碼差異。
你好,方案一有點太複雜了
所以我先再次修訂方法2
好像成功了
但是,怎麼不會跳出測試後的圖片
請問該如何像網路上
有跳出偵測的圖
是否能跟您要個LINE ID 呢
Update: 請忽視我的 lag~
雖然最後執行完是跑出成功的說明如下
Running inference for D:\TensorFlow\workspace\training_demo\images\test\RGB\C130_Test_1.jpg... Done
Running inference for D:\TensorFlow\workspace\training_demo\images\test\RGB\C130_test_2.jpg... Done
但是並沒有跳出任何圖片
請問我能在程式碼裡再新增出
讓測試的圖片跳出來嗎??
不方便給LINE 的ID嗎??
@ re.Zero
請問網站下載的object_detection這個檔案,我用PyCharm Edu 2021.3.4似乎已經成功了,只是圖片並沒有跳出來。請問你能教我,後續我需要知道上網下載的內容裡,哪些地方要去將資料給成
我已經訓練好的資料、label檔、export_inference_graph導出經過訓練的推理圖
就是這個網址https://tensorflow-object-detection-api-tutorial.readthedocs.io/en/tensorflow-1.14/training.html
以上步驟我都完成了,
現在你也教我改好下載的object_detection檔案了
但是我實在不知道裡面內容那些地方要修改成我訓練的資訊><"
@ Maggie
我昨晚提的測試方案有很大的問題,請改用下面方案試試:
把 plot_object_detection_saved_model_tf1.py
檔案尾部:
plt.figure()
plt.imshow(image_np_with_detections)
print('Done')
plt.show()
改成
plt.figure()
plt.imshow(image_np_with_detections)
plt.savefig(f'{image_path}.dt.png') ## 多這行而已;
print('Done')
plt.show()
然後去看輸入檔案的目錄有沒多出檔名尾端為 '.dt.png' 的圖片檔案, 並檢視其內容。
不用那麼辛苦了,直接使用Yolo,簡單多了,請參閱:
https://ithelp.ithome.com.tw/articles/10311276
謝謝分享~
謝謝您推薦我用YOLO,但是因為我目前學術研究已經到了尾聲了,時間有限,無法再下手別種辨識的方式,還是希望能用Tensorflow 的Object Detection物件辨識,希望能尋求幫忙,最後一個步驟該從何去解決
如果方便的話是否能跟您要個LINE的資訊詢問
tf.keras.utils.get_file 是自網路下載檔案,你設定 D:/TensorFlow/workspace/training_demo/images/test/RGBC130_Test_1.jpg 會有問題吧。download_images函數應改為:
def download_images():
image_paths = ['image1.jpg', 'image2.jpg']
return image_paths
您好,我依照您的教學,改成以下
但是依然有跳出一些問題
如下圖
跳出的問題
Loading model...Done! Took 6.745026350021362 seconds
Traceback (most recent call last):
File "C:\Users\maggi\Downloads\plot_object_detection_saved_model_tf1 (4).py", line 127, in
category_index = label_map_util.create_category_index_from_labelmap(PATH_TO_LABELS,
File "D:\TensorFlow\models\research\object_detection\utils\label_map_util.py", line 229, in create_category_index_from_labelmap
categories = create_categories_from_labelmap(label_map_path, use_display_name)
File "D:\TensorFlow\models\research\object_detection\utils\label_map_util.py", line 209, in create_categories_from_labelmap
label_map = load_labelmap(label_map_path)
File "D:\TensorFlow\models\research\object_detection\utils\label_map_util.py", line 132, in load_labelmap
with tf.gfile.GFile(path, 'r') as fid:
AttributeError: module 'tensorflow' has no attribute 'gfile'. Did you mean: 'fill'?
拿新版的object dection範例來改。
https://github.com/tensorflow/models/blob/master/research/object_detection/colab_tutorials/object_detection_tutorial.ipynb
網上教學很多都是1.x時代留下來的,tf的api又經過大改,會出現很多這種狀況,你又沒程式基礎...
好唷我試試,謝謝,因為電腦在訓練時,TF2有點不相容,所以又用回去TF1.X