Compare commits
	
		
			2 Commits
		
	
	
		
			1ce899f56b
			...
			258393cbeb
		
	
	| Author | SHA1 | Date | 
|---|---|---|
|  | 258393cbeb | |
|  | 96462c532c | 
|  | @ -10,9 +10,9 @@ RUN mkdir -p /app | ||||||
| WORKDIR /app | WORKDIR /app | ||||||
| COPY requirements.txt /app | COPY requirements.txt /app | ||||||
| RUN python -m venv . | RUN python -m venv . | ||||||
| RUN pip install pip==20.1.1 | RUN pip install pip==23.0.1 | ||||||
| RUN pip install setuptools==46.1.3 | RUN pip install setuptools==46.1.3 | ||||||
| RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple | RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ | ||||||
| COPY ./app /app | COPY ./app /app | ||||||
| EXPOSE 5000 | EXPOSE 5000 | ||||||
| CMD ["gunicorn", "--bind", ":5000", "server:app"] | CMD ["gunicorn", "--bind", ":5000", "server:app"] | ||||||
							
								
								
									
										11
									
								
								README.md
								
								
								
								
							
							
						
						
									
										11
									
								
								README.md
								
								
								
								
							|  | @ -44,3 +44,14 @@ | ||||||
| | 原始图片 | img_src | string | 图像的base64编码字符串   | | | 原始图片 | img_src | string | 图像的base64编码字符串   | | ||||||
| | 是否有裂缝 | crack | bool | 是否有裂缝 | | | 是否有裂缝 | crack | bool | 是否有裂缝 | | ||||||
| | 是否有坑洼 | pothole | bool | 是否有坑洼 | | | 是否有坑洼 | pothole | bool | 是否有坑洼 | | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ## 编译说明 | ||||||
|  | 
 | ||||||
|  | ### x86编译docker  | ||||||
|  | 
 | ||||||
|  | ```docker build -t hpds-road-detection:v1.0  .``` | ||||||
|  | 
 | ||||||
|  | ### arm64编译docker | ||||||
|  | 
 | ||||||
|  | ```docker buildx build -t hpds-road-detection-edge:v1.0 . --platform=linux/arm64``` | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ import numpy as np | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def serve_unet_model(): | def serve_unet_model(): | ||||||
|     TFLITE_MODEL = "/app/UNet_25_Crack.tflite" |     TFLITE_MODEL = "../app/UNet_25_Crack.tflite" | ||||||
| 
 | 
 | ||||||
|     tflite_interpreter = tf.lite.Interpreter(model_path=TFLITE_MODEL) |     tflite_interpreter = tf.lite.Interpreter(model_path=TFLITE_MODEL) | ||||||
| 
 | 
 | ||||||
|  | @ -20,7 +20,7 @@ def serve_rcnn_model(): | ||||||
|     detection_graph = tf.Graph() |     detection_graph = tf.Graph() | ||||||
|     with detection_graph.as_default(): |     with detection_graph.as_default(): | ||||||
|         od_graph_def = tf.compat.v1.GraphDef() |         od_graph_def = tf.compat.v1.GraphDef() | ||||||
|         with tf.compat.v1.gfile.GFile("/app/frozen_inference_graph.pb", 'rb') as fid: |         with tf.compat.v1.gfile.GFile("../app/frozen_inference_graph.pb", 'rb') as fid: | ||||||
|             serialized_graph = fid.read() |             serialized_graph = fid.read() | ||||||
|             od_graph_def.ParseFromString(serialized_graph) |             od_graph_def.ParseFromString(serialized_graph) | ||||||
|             tf.import_graph_def(od_graph_def, name='') |             tf.import_graph_def(od_graph_def, name='') | ||||||
|  |  | ||||||
|  | @ -191,13 +191,17 @@ def index(): | ||||||
|             result = result > 0.5 |             result = result > 0.5 | ||||||
|             result = result * 255 |             result = result * 255 | ||||||
|             mask = np.squeeze(result) |             mask = np.squeeze(result) | ||||||
|  |             bg = np.asarray(img_segment).copy() | ||||||
|             is_crack = False |             is_crack = False | ||||||
|             for i in range(len(mask)): |             for i in range(len(mask)): | ||||||
|                 for j in range(len(mask[i])): |                 for j in range(len(mask[i])): | ||||||
|                     if mask[i][j] > 0: |                     if mask[i][j] > 0: | ||||||
|  |                         bg[i][j][0] = 0 | ||||||
|  |                         bg[i][j][1] = 0 | ||||||
|  |                         bg[i][j][2] = 255 | ||||||
|                         is_crack = True |                         is_crack = True | ||||||
|                         break |  | ||||||
| 
 | 
 | ||||||
|  |             img = Image.fromarray(bg.astype("uint8")) | ||||||
| 
 | 
 | ||||||
|             # start pothole detection |             # start pothole detection | ||||||
|             image_np = load_image_into_numpy_array(img_src) |             image_np = load_image_into_numpy_array(img_src) | ||||||
|  | @ -216,15 +220,22 @@ def index(): | ||||||
|                 skip_scores=True, |                 skip_scores=True, | ||||||
|                 skip_labels=True) |                 skip_labels=True) | ||||||
|             raw_bytes = io.BytesIO() |             raw_bytes = io.BytesIO() | ||||||
|             img_src.save(raw_bytes, "JPEG") |             raw_src = io.BytesIO() | ||||||
|  |             img.save(raw_bytes, "JPEG") | ||||||
|  |             img_src.save(raw_src,"JPEG") | ||||||
|             raw_bytes.seek(0) |             raw_bytes.seek(0) | ||||||
|  |             raw_src.seek(0) | ||||||
|             img_byte = raw_bytes.getvalue() |             img_byte = raw_bytes.getvalue() | ||||||
|             img_str = base64.b64encode(img_byte) |             img_src_byte = raw_src.getvalue() | ||||||
|  |             img_str = base64.b64encode(img_src_byte) | ||||||
|  |             img_discern = base64.b64encode(img_byte) | ||||||
|  | 
 | ||||||
|             data = { |             data = { | ||||||
|                 "code": 0, |                 "code": 0, | ||||||
|                 "crack": is_crack, |                 "crack": is_crack, | ||||||
|                 "pothole": is_pothole, |                 "pothole": is_pothole, | ||||||
|                 "img_src": img_str.decode('utf-8') |                 "img_src": img_str.decode('utf-8'), | ||||||
|  |                 "img_discern": img_discern.decode('utf-8') | ||||||
|             } |             } | ||||||
|             return jsonify(data) |             return jsonify(data) | ||||||
|         else: |         else: | ||||||
|  |  | ||||||
|  | @ -1,48 +1,6 @@ | ||||||
| absl-py==0.9.0 |  | ||||||
| astunparse==1.6.3 |  | ||||||
| cachetools==4.1.0 |  | ||||||
| certifi==2020.4.5.1 |  | ||||||
| chardet==3.0.4 |  | ||||||
| click==7.1.2 |  | ||||||
| cycler==0.10.0 |  | ||||||
| Flask==1.1.2 | Flask==1.1.2 | ||||||
| gast==0.3.3 |  | ||||||
| gevent==20.5.0 |  | ||||||
| google-auth==1.15.0 |  | ||||||
| google-auth-oauthlib==0.4.1 |  | ||||||
| google-pasta==0.2.0 |  | ||||||
| greenlet==0.4.15 |  | ||||||
| grpcio==1.29.0 |  | ||||||
| gunicorn==20.0.4 |  | ||||||
| h5py==2.10.0 |  | ||||||
| idna==2.9 |  | ||||||
| importlib-metadata==1.6.0 |  | ||||||
| itsdangerous==1.1.0 |  | ||||||
| Jinja2==2.11.2 |  | ||||||
| Keras-Preprocessing==1.1.2 |  | ||||||
| Markdown==3.2.2 |  | ||||||
| MarkupSafe==1.1.1 |  | ||||||
| matplotlib==3.2.1 | matplotlib==3.2.1 | ||||||
| numpy==1.18.4 | numpy==1.18.4 | ||||||
| oauthlib==3.1.0 |  | ||||||
| opt-einsum==3.2.1 |  | ||||||
| Pillow==7.1.2 | Pillow==7.1.2 | ||||||
| protobuf==3.11.3 |  | ||||||
| pyasn1==0.4.8 |  | ||||||
| pyasn1-modules==0.2.8 |  | ||||||
| pyparsing==2.4.7 |  | ||||||
| python-dateutil==2.8.1 |  | ||||||
| requests==2.23.0 |  | ||||||
| requests-oauthlib==1.3.0 |  | ||||||
| rsa==4.0 |  | ||||||
| scipy==1.4.1 |  | ||||||
| six==1.15.0 | six==1.15.0 | ||||||
| tensorboard==2.2.1 |  | ||||||
| tensorboard-plugin-wit==1.6.0.post3 |  | ||||||
| tensorflow==2.2.0 | tensorflow==2.2.0 | ||||||
| tensorflow-estimator==2.2.0 |  | ||||||
| termcolor==1.1.0 |  | ||||||
| urllib3==1.25.9 |  | ||||||
| Werkzeug==1.0.1 |  | ||||||
| wrapt==1.12.1 |  | ||||||
| zipp==3.1.0 |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue